watch 앱에서 "A signed resource has been added, modified, or deleted."가 되었을 때의 대처법

현상



watch 앱을 실제 기기에 설치하려고 하면 "App Installation failed. A signed resource has been added, modified, or deleted."라는 오류가 발생합니다.



simulator에서의 실행이나 iOS어플 단독으로의 실행은 문제 없게 할 수 있다.

clean하거나, DerivedData 지우거나, provisioning profile를 한번 지워 다시 넣거나 하면, 한 번 고쳤지만, 그 후 다시 재현해 이번은 고치지 않게 되었다.

※Xcode8.2.1, watchOS3.1에서 확인

대처법



watchOS에서 이용하는 프레임워크는 Carthage의 이용을 중지하고 Cocoapods를 사용한다.

Using copy-frameworks for watch extension causes "A signed resource has been added, modified, or deleted" Xcode error · Issue #1272 · Carthage/Carthage 에 있는 것과 같이, Carthage의 copy-framework가 원인같다.

↑의 issue에 써 있는 방법이라면, 다른 에러로 하거나, 실행시에 Framework를 찾을 수 없거나 했기 때문에, Cocoapods를 사용하면, 일단 무사히 실기 인스톨 할 수 있었다.

구그하거나 Twitter 검색하면 Cocoapods에서도 과거에 비슷한 현상은 있었던 것 같지만, 적어도 자신이 시도한 v1.1.1에서는 지금은 문제 없다.

여기까지 도착하는데 총으로 하루 종일 지출했다. . .

Cocoapods와 bitcode주의



iOS에서는 bitcode를 무효로 하고 있어도, watchOS에서는 bitcode 필수가 된다. 따라서 watchOS 측에서 이용하는 프레임워크는 ENABLE_BITCODEYES 로 할 필요가 있다.
post_install do |installer|
  installer.pods_project.targets.each do |target|
    # watchosではbitcode必須
    watchos_targets = ['Pods-HogeWatch Extension', 'Alamofire', 'SwiftyBeaver', 'SwiftDate']
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = watchos_targets.include?(target.name) ? 'YES' : 'NO'
    end
  end
end

좋은 웹페이지 즐겨찾기