2017-09-26 1 views
2

Xcode 9로 업데이트되었으므로 이제 번들 대상을 만들 때 더 이상 xcasset 이미지 리소스가 포함되지 않습니다.Xcode 9는 더 이상 xcassets를 번들 대상으로 복사하지 않습니다.

설정 :

  1. xcasset이 대상 Xcode 9 showing association with target

  2. 와 관련된이 xcasset은 번들 대상의 빌드 페이즈의 "복사 번들 리소스"에 포함되어 있습니다.

Xcode 9 showing copy bundle resources

결과

xcassets 내의 이미지 묶음 제품에 존재하지 않는다. Terminal showing result of build

Xcode 8이 설치된 다른 컴퓨터에서 동일한 번들 대상을 만들 수 있으며 TestCatalog 내의 이미지가 있습니다.

참고 : TestImage.png (xcassets 외부에 있음)는 Xcode 9에 예상대로 포함되어 있습니다. 이로 인해 xcasset이 어떻게 포함되는지 문제가 있다고 생각됩니다.

도움 주셔서 감사합니다.

답변

2

괜찮습니다. Assets.car은 귀하의 자산 카탈로그가 아니라고 가정합니다. 은 이미지가 내부에 있지 않다고 가정합니다.

Xcode가 이전에 자산 카탈로그에서 이미지를 가져 와서 프레임 워크의 최상위 레벨에 놓은 경우 입니다. 자산 카탈로그 이미지는 자산 카탈로그의 컴파일 된 버전으로 컴파일되어야합니다 (.car 파일). 그리고 그것은 지금 정확하게 일어나고 있습니다. 어쨌든 코드에서 이름으로 자산 카탈로그를 직접 참조 할 수있는 방법이 없기 때문에 컴파일 과정에서 자산 카탈로그의 이름을 변경해서는 안됩니다.

컴파일하는 동안 생성 된 보고서를 읽음으로써 이러한 현상이 발생했는지 확인할 수 있습니다. 그러나 스크린 샷에 포함시키지 마십시오. 내가 보여줄거야.

enter image description here

을 그리고 여기에 보고서의 관련 부분 : 여기 내 프로젝트는 당신과 비슷한,의

enter image description here

선 지난 몇을 참조하십시오? MyFrameworkAssets.xcassets은 정확히 프로젝트와 마찬가지로 /MyCoolFramework.framework/Assets.car이라는 자산 카탈로그로 컴파일되었습니다.

그래서 문제는 단지 입니다.은 "외부에서"(즉, 외부에서) 보려고합니다.터미널 사용) 당신이보고있는 것을 이해하지 못합니다. 이것이 작동하는지 여부를 실제로 알 수있는 방법은 프레임 워크 코드가 이미지를 참조하여 표시하고 해당 코드가없는 것입니다. 실제로 프레임 워크에는 코드가 전혀 없으므로 쓸모없는 프레임 워크입니다. 또는 AssetCatalogTinkerer을 다운로드하고 assets.car 파일을 살펴보십시오. 이미지가 거기에 있음을 알 수 있습니다!

(그런데, 나는 또한 프로젝트가 매우 가난하게 편성했다. 프레임 워크에 속하는 이미지 및 자산 카탈로그는 프레임 워크의 폴더에 있어야합니다 생각합니다.)

+1

네 말이 맞아, 감사합니다! FYI : --minimum-deployment-target <7.0 인 actool을 사용할 때 Assets.car를 생성하고 ALSO는 xcassets 내의 모든 png를 번들로 복사합니다. 최소 배포 목표를 8.0으로 업데이트하면 Xcode 9 자체가 아닌 변경 사항이 발생했습니다 (Xcode 9는 iOS 7 이상을 지원하는 xib를 지원하지 않기 때문에 최소 배포 대상을 업데이트해야하는 이유 였지만!). –

+0

"xcassets 내의 모든 png도 번들로 복사합니다."시스템 버전에서 너무나 오래되어서 자산 카탈로그가 아직 발명되지 않았기 때문에 실행해야합니다! – matt

관련 문제