앱을 만들고 올렸는데 앱스토어에서 다음과 같은 리턴 메일이 왔습니다.
The App Store Team.
We identified one or more issues with a recent delivery for your app, "[app 이름]". Please correct the following issues, then upload again.
Missing Info.plist value - A value for the Info.plist key 'CFBundleIconName' is missing in the bundle '[번들 식별자]'. Apps built with iOS 11 or later SDK must supply app icons in an asset catalog and must also provide a value for this Info.plist key. For more information see http://help.apple.com/xcode/mac/current/#/dev10510b1f7.
Best regards,
The App Store Team.
내용 자체는 'Info.plist'파일에 'CFBundleIconName'에 대한 카탈로그가 없다는 뜻입니다.
그런데 우리가 자마린을 쓰는 이유는 이런것들을 자동화 해주거나 UI로 제공받기 위해서가 아닌가?
왜 이 내용이 빠져있는 것일까요?
일단 자마린을 최신 버전으로 업데이트할 것을 권장합니다 ㅎㅎㅎ
자마린의 UI에서 'Info.plist'를 생성하는데 문제가 좀 있습니다.
거기다 iOS프로젝트 기본템플릿도 문제가 있고요......
이게 검색해보면 오래전부터 있던 현상인 거 같은데.....아직도 이 모양이라니;;;;
물론 업데이트할 때마다 한두 개씩 고쳐지긴 하고 있습니다 ㅎㅎㅎ
다행이 해결방법은 있습니다.
수작업이죠 ㅋㅋㅋㅋ
'iOS 9.0'부터 기본 자산 카탈로그(asset catalog)의 이름이 'Assets'에서 'Media'로 변경되었다고 합니다.
(근데 여전히 'Assets'도 쓰는 거 같은데....)
그러니 자산 카탈로그 폴더명도 'Assets.xcassets'에서 'Media.xcassets'로 변경되었습니다.
자마린에서 iOS프로젝트를 생성하면 자동으로 자산 카탈로그에 'Assets'가 추가됩니다.
(버전에 따라 없을 수 있습니다.)
'Assets'이 있다면 지워 줍니다.
이제 'Info.plist'를 'iOS 매니페스트 편집기'로 열어 줍니다.
'iOS 매니페스트 편집기'가 열리면 '시각적 자산' 탭으로 이동합니다.
앱 아이콘 > 자산 카탈로그 사용 버튼
을 누릅니다.
그러면 자산 카탈로그에 자동으로 'Media'가 생성되고 프로젝트 폴더에 'Media.xcassets'가 생성됩니다.
이대로 되면 좋겠는데.....
'Info.plist'파일을 'XML 편집기'로 열어보면 이상한 점을 볼 수 있습니다.
'XSLaunchImageAssets' 카탈로그의 경로가 이상합니다?
분명 폴더는 프로젝트 루트에 생성되어있는데 경로는 'Resources'를 보고 있습니다.
결국 두 가지 선택지가 있는데
1) 'Resources'폴더로 'Media.xcassets'를 복사해서 넣는다.
2) 경로를 바꿔준다.
첫 번째 방법은 문제가 자산을 갱신할 때마다 수동으로 업데이트를 해야 합니다 ㅋㅋㅋㅋ
그러니 그냥 편하게 두번째 방법을 씁시다.
<key>XSLaunchImageAssets</key>
<string>Resources/Media.xcassets/LaunchImages.launchimage</string>
<key>XSAppIconAssets</key>
<string>Resources/Media.xcassets/AppIcons.appiconset</string>
<!-- 위 코드를 아래코드로 바꿔 줍니다. -->
<key>XSLaunchImageAssets</key>
<string>Media.xcassets/LaunchImages.launchimage</string>
<key>XSAppIconAssets</key>
<string>Media.xcassets/AppIcons.appiconset</string>
그럼 이렇게 코드가 되어 있을 겁니다.
'Info.plist'를 'XML 편집기'로 열고 'CFBundleIconFiles'카테고리를 찾습니다.
아마 아래와 같이 되어 있을 겁니다.
이건 잘못된 구조입니다.
맞는 구조는
CFBundleIcons > CFBundlePrimaryIcon > CFBundleIconName, CFBundleIconFiles
이렇게 되어있어야 합니다.
아래 코드와 스크린샷을 확인하여 모양을 맞춰 다시 작성합니다.
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconName</key>
<string>Icon</string>
<key>CFBundleIconFiles</key>
<array>
<string>Icon-60@2x</string>
<string>Icon-60@3x</string>
<string>Icon-76</string>
<string>Icon-76@2x</string>
<string>Default</string>
<string>Default@2x</string>
<string>Default-568h@2x</string>
<string>Default-Portrait</string>
<string>Default-Portrait@2x</string>
<string>Icon-Small-40</string>
<string>Icon-Small-40@2x</string>
<string>Icon-Small-40@3x</string>
<string>Icon-Small</string>
<string>Icon-Small@2x</string>
<string>Icon-Small@3x</string>
</array>
</dict>
</dict>
결과물은 다음 스크린샷을 확인해 주세요.
'CFBundleIconFiles'의 파일 리스트에는 사용하는 이미지의 이름이 전부 들어가 있어야 합니다.
자산으로 등록하면 자동으로 추가해주면 좋겠는데 그것까지는 안 되는 거 같습니다.
이제 프로젝트를 '정리(clean)'한 후 '다시 빌드(rebuild)'를 합니다.
이제 결과물을 올리면 됩니다.
자마린이 다른 크로스 플랫폼 프래임웍들보다 빠릿빠릿하게 업데이트를 해주는 거로 알고 있습니다.
그런데 UI는 바로바로 따라가질 못하네요 ㅎㅎㅎ