itsource

iOS 업데이트 후에도 이전 시작 화면 및 앱 아이콘 유지

mycopycode 2023. 4. 12. 22:21
반응형

iOS 업데이트 후에도 이전 시작 화면 및 앱 아이콘 유지

최근 부팅 이미지와 앱 아이콘을 교체한 앱이 있습니다. 프로젝트의 모든 곳에서 오래된 자산을 제거했습니다.Xcode로 빌드하는 것만으로 구버전에서 신버전으로 업그레이드하면 문제 없습니다.단, 이전 버전의 앱이 설치되어 있는 경우 Test Flight에서 업그레이드하고 앱을 종료할 때마다 다시 시작할 때마다 새로운 부팅 이미지를 표시하기 전에 오래된 부팅 이미지가 잠깐 나타납니다.마찬가지로 앱을 닫으면 이전 앱 아이콘이 잠시 깜박인 후 새 앱으로 돌아갑니다.

iExplor에 ./Library/Caches/Shapshots(디렉토리.아이익스플로러 ,를로 삭제하려고 드드 however however however however however however however however however however however however howeverNSFileManager메서드에서는 이 디렉토리의 파일을 삭제할 수 없다는 오류가 발생합니다.

전에 이런 경험을 한 사람, 조언해 줄 사람?

다음과 같이 함으로써 런칭 이미지 변경을 테스트하기 위해 스프링보드 캐시를 확실하게 클리어할 수 있었습니다.

  1. 단말기에서 앱 삭제
  2. 디바이스의 전원을 끕니다.
  3. 기기 전원을 켜고 앱을 설치 및 실행합니다.

이미지는 매번 올바르게 갱신된다.전원을 꺼야 하는 것이 아쉽지만, 적어도 이렇게 진척을 볼 수 있었습니다.

시뮬레이터의 경우 시뮬레이터를 재부팅하기만 하면 됩니다.

이러한 캐시는 Springboard에서 앱 전환을 빠르게 하기 위해 사용됩니다.이것은 프로덕션 사용자에게 영향을 미치는 문제가 아니며, 이론적으로 다음 번에 Springboard가 앱 스냅숏을 만들기로 결정했을 때 사라져야 합니다.

그렇다고 해서, 이것은 당신이 고칠 수 있는 문제가 아닙니다.이것은 Apple 코드의 버그이며, 당신의 것이 아닙니다.

업데이트: 디바이스를 재시작할 필요가 없는 작업이 있는 것 같습니다.

이것은 2차 출시 후에 유효하게 됩니다.

do {
   try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
} catch {
   print("Failed to delete launch screen cache: \(error)")
}

자세한 내용은https://www.rambo.codes/posts/2019-12-09-clearing-your-apps-launch-screen-cache-on-ios를 참조하십시오.

는 그냥 ★★★★★★★★★★★★★★★★★★★★★★★★」Reset Contents and Settings...

http://arsenkin.com/launch_screen_image_cache.html은 도움이 되었습니다.

위에서 언급한 스레드 덕분에 이 문제를 해결할 수 있는 방법을 찾았습니다.새로운 이미지의 이름이 이전 이미지와 같을 경우 기존 이미지와는 다른 이름을 붙이고 *.xcassets 폴더에서 프로젝트 디렉토리로 옮겨 UIImageView에서 참조할 수 있습니다.그리고 이것이 마지막입니다.바보같이 쉽게 들리지만 내가 얼마나 화가 났는지 아차 싶었다.

이 문제를 해결하려면 어떻게 해야 하는지 해결 방법을 찾았습니다.애플은 이미지 파일명으로 인덱싱되는 시작 화면의 이미지를 캐시하는 메커니즘을 가지고 있다.

실행 화면에서 이미지를 변경하고 다음 실행에서 해당 변경 사항을 즉시 확인하려는 경우.당신이 변경한 이미지 이름을 사용하고 스토리보드나 xib의 새로운 이미지 파일에 링크하세요.

다시 실행하면 새로운 변경사항이 나타납니다.

앱을 제거하고 전화기를 다시 시작한 후 앱을 다시 설치하십시오.제 경우엔 이게 사실 고쳐졌어요.

나에게 효과가 있었던 것:

  • LaunchScreen의 장면 및 뷰 컨트롤러를 삭제하고 새 컨트롤러를 만듭니다(Attributes Inspector에서 "초기 컨트롤러"로 설정해야 합니다.

에게 효과가 없었던 점:

  • 앱 삭제
  • iPhone, Mac 또는 Xcode 재부팅
  • 파생 데이터 삭제
  • 장치 컨테이너 삭제
  • 청소
  • 스티브 잡스 부두 인형 3개를 태우다

주의:

삭제(시뮬레이터)도 필요할 수 있습니다.

저도 같은 문제에 직면했습니다.이는 처음 애플리케이션을 실행할 때 시뮬레이터/iOS 기기가 부팅 이미지를 캐시하기 때문입니다.Brian Trzupek의 답변에 몇 가지 수정을 가했다.

  1. 이미지 세트를 Xcode 자산에서 삭제합니다(예: launch_image).
  2. 새 이미지 세트를 추가하고 여기에 이미지를 추가합니다.
  3. iOS 기기를 껐다가 켭니다.(시뮬레이터의 내용 및 설정을 재설정합니다).
  4. Xcode 빌드 폴더를 클리닝 합니다(++ 를 누릅니다).
  5. 기기/시뮬레이터에서 앱을 삭제합니다(사용 가능한 경우).
  6. 다시 뛰어요.

솔루션 작업

  1. 단말기에서 앱 삭제
  2. 디바이스의 전원을 끕니다.
  3. 디바이스의 전원을 켭니다.
  4. 빌드 폴더 정리
  5. 앱을 다시 빌드, 설치 및 실행합니다.

    즐거운 시간 되세요.

솔직히 업데이트될지 안될지 모르는 상태에서 라이브를 할 위험을 감수하지 않았어요.

따라서 xcasset을 사용하고 있다고 가정하면 다음과 같은 간단한 해결책이 있습니다.

  1. 이전 이미지 세트 삭제
  2. 다른 이름으로 다시 만들고 시작 화면 이미지를 추가합니다.
  3. 이 '새로운' 이미지 세트 참조를 사용하려면 스토리보드를 업데이트하십시오.

확실히 갱신됩니다! (어플리케이션도 단말기에 인스톨 해 테스트했습니다.)디바이스 등의 캐시를 청소할 필요가 없습니다.

디바이스를 연결하고 [Xcode]> [ Window ]> [ Devices ]> [ Your device ]으로 이동하여 설치된 앱에서 앱을 선택하고 컨테이너를 우클릭하여 생성한 파일로 이동한 후 우클릭하여 패키지 콘텐츠 표시, AppData, Library, Caches 및 파일 삭제를 수행합니다.[ Xcode ]> [ Window ]> [ Devices ]> [ Your device ]> [ Your device ]으로 이동하여 오른쪽 버튼을 클릭하여 컨테이너를 교환합니다.

  1. 단말기에서 앱 삭제
  2. 디바이스의 전원을 끕니다.
  3. 디바이스 전원 투입
  4. 앱을 설치하고 실행합니다.

Xcode 10/iOS 12

위의 모든 것을 시도해 본 후, Launch Screen에서 이미지 뷰를 삭제하고 새로운 것으로 교체해야 했습니다.

http://arsenkin.com/launch_screen_image_cache.html은 도움이 되었습니다.

위에서 언급한 스레드 덕분에 이 문제를 해결할 수 있는 방법을 찾았습니다.새로운 이미지의 이름이 이전 이미지와 같을 경우 기존 이미지와는 다른 이름을 붙이고 *.xcassets 폴더에서 프로젝트 디렉토리로 옮겨 UIImageView에서 참조할 수 있습니다.그리고 이것이 마지막입니다.바보같이 쉽게 들리지만 내가 얼마나 화가 났는지 아차 싶었다.

@JERC가 작동한 것을 확인할 수 있으며, arsenkin 덕분에

리액트 네이티브프로젝트에서는 ios/projectname에 .storyboard파일이 있었습니다.이전 이미지를 같은 사이즈로 치환하여 오래된 제약조건을 유지하고 싶습니다. 사용자가 앱을 삭제하거나 휴대폰을 재시작하지 않았으면 합니다.

내가 한 일

  1. 내는 src를 src에 ).src/assets를 참조해 주세요.
  2. 파인더를 열고 xcode 프로젝트로 이미지를 프로젝트 디렉토리로 드래그합니다.
  3. 프로젝트에 대한 참조를 작성하라는 팝업이 나타납니다.여기
  4. .storyboard의 이미지 src를 참조된 이미지로 변경합니다.여기
  5. 빌드 폴더를 청소합니다.여기
  6. 앱 재구축

그래, 그래서 내가 문제를 알아냈어.이전 버전의 앱에서는 Launch Screen XIB를 사용하고 있었습니다.이 새로운 버전의 개발 중 어딘가에서 xib는 삭제되고 정적 시작 이미지로만 대체되었습니다.

해결책은 시작 화면 XIB를 사용하는 것입니다.부팅 화면 xib를 처음 사용하는 순간 스냅샷 디렉토리에 저장되어 있는 파일이 xib의 스냅샷으로 대체되어 있는 것을 알 수 있었습니다.

이 문제를 해결하는 가장 빠른 방법은 다음과 같습니다.

  1. [ ] 를 합니다.LaunchScreen.xib에서 [Raunchscreen]를 합니다.Remove file 을 선택합니다.Remove to trash그러면 파일의 모든 참조와 이전 업데이트 내용이 프로젝트에서 제거됩니다.

  2. 프로젝트xCode」내)로 앤 .yourProjectName를 참조해 주세요.

  3. 클리닝 후 리빌드합니다.

다음 코드를 사용하여 시작 화면 캐시를 정리합니다.

import UIKit

public extension UIApplication {
    func clearLaunchScreenCache() {
        #if DEBUG
        do {
            let launchScreenPath = "\(NSHomeDirectory())/Library/SplashBoard"
            try FileManager.default.removeItem(atPath: launchScreenPath)
        } catch {
            print("Failed to delete launch screen cache - \(error)")
        }
        #endif
    }
}

사용방법:

UIApplication.shared.clearLaunchScreenCache()

이 모든 단계를 수행했는지 확인하십시오.

  1. 빌드 설정에서 ASSETCATALOG_COMPILER_LAUNCIMAGE_NAME 키를 검색하여 응용 프로그램 전체에서 자산 값을 검색하여 삭제합니다.
  2. 빌드 설정에서 ASSETCATALOG_COMPILER_LAUNCIMAGE_NAME을 삭제합니다.
  3. 새로운 부팅 화면 Xcode 만들기 -> 파일 -> 파일 -> 파일 -> 시작 화면
  4. Goto App 메인 타깃 -> 일반 -> 앱 아이콘 및 시작 이미지 -> 시작 화면 파일 -> 새 시작 화면 파일을 선택합니다.
  5. 이전 시작 화면만 변경할 경우 새 자산에 다른 이름을 지정하십시오.

시뮬레이터 또는 실제 디바이스의 경우 다음 단계를 따라야 합니다.

  1. xc 자산에서 스플래시를 제거합니다.
  2. png 또는 jpg 파일을 루트로 드래그 앤 드롭합니다.
  3. Screen.xib 또는 스토리보드를 실행합니다.ViewController를 열고 ImageView를 설정하여 드래그한 특정 이미지를 참조합니다.

ViewController가 없고 이전 버전의 react를 사용하는 경우 View라는 이름을 찾을 수 있습니다. 따라서 해당 View에서 Splash가 표시되지 않을 경우 해당 ViewController를 삭제하고 새 ViewController를 만듭니다.

이 문제도 있었다.완전히 초보이기 때문에 LaunchScreen.storyboard를 LaunchScreen.xib로 변경했습니다.실행이 실패했기 때문에(으음) .storyboard 재실행으로 변경했습니다.다른 건 망치지 않았는지 테스트하려고 했는데, 오래된 화면이 먼저 뜨지 않았습니다.그래서 내가 뭘 했든 간에, 오래된 저장고가 지워진 게 틀림없어.

시뮬레이터를 열고 [하드웨어]-> [모든 콘텐츠 및 설정 삭제]를 선택합니다.

같은 문제가 발생했지만, 기동 화면의 스토리 보드에 사용되고 있는 이미지뿐.자산 카탈로그에서 이름을 앱 번들로 변경하면(예: 자산 카탈로그에서 설정된 이전 이미지를 launch_logo, 앱 번들의 이미지를 launchscreen_logo.png) 문제가 해결되었습니다.

이건 상황에 따라 다르겠죠.디버깅 시 또는 테스트 시 발생하는 경우 부팅 화면에서 이미지 삭제 작업을 수행합니다.또는 앱을 제거한 후 다시 시작합니다.

그러나 아카이브 후에도 리셋 및 클린으로는 해결되지 않습니다.

AppDelegate에서 시험해 보다

    if #available(iOS 13.0, *) {
        do {
            try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
        } catch {
            print("Failed to delete launch screen cache: \(error)")
        }
    } else {
        print("ios is min")
    }

Gilherme Rambo의 블로그 엔트리에서 영감을 얻어 iOS 13+의 부팅 화면 캐시를 프로그래밍 방식으로 삭제하는 cordova-plugin을 만들었습니다.

cordova.plugins.launchScreenCache.deleteLaunchScreenCache().finally((result) => {
    // returns true in the success case, false if iOS <13
    // rejects in an error case
});

자세한 내용은 GitHub repo에서 확인할 수 있습니다.

저 같은 경우에는 아직 선택 안 했어요.App Icons Source부터App Setting -> General -> App Icons and Launch Images -> App Icons Source

여기에 이미지 설명 입력

일단은

클린&빌드 프로젝트

방법 1:
LaunchScreen.storyboard에 로드된 스플래시 이미지의 이름을 변경합니다.

예를 들어 "splash"를 로드했지만 "splashNew"로 변경했습니다.

방법 2:.

다른 장치 또는 에뮬레이터에서 응용 프로그램 실행

예를 들어, 에뮬레이터 아이폰 11에서 앱을 실행하면 아이폰 12에서 앱을 실행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/33002829/ios-keeping-old-launch-screen-and-app-icon-after-update

반응형