Cordovaエラー No image found at the path referenced under key “CFBundleIconFile”: Icon.png

Cordovaのエラーではないけど、VisualStudio2015のCorodvaアプリをiOS releaseでビルドして審査に出そうとすると、タイトルのエラーが出て提出できない。

ipaファイルを展開してみると、たしかにrootにicon.pngがない。config.xmlとかいろいろicon.pngを置く場所とかいろいろ試してみたけど、どうしてもrootにicon.pngがコピーされない。

とりあえずの対処法として、ipaファイルを一度展開して、icon.pngをおいて、再度パッケージ化することにした。

## Mac上で
# VSからリモートビルドしたipaを用意、展開
unzip HOGE.ipa
# 署名削除
rm -rf Payload/HOGE.app/_CodeSignature
# icon.pngをrootに設置
cp icon.png ./Payload/HOGE.app/
# 署名
codesign -f -s "MySIGN" ./Payload/HOGE.app --entitlements ../entitlements.plist
# パッケージ化
zip -qr HOGE.ipa Payload

entitlements.plistは

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>PREFIX.ID</string>
<key>com.apple.developer.team-identifier</key>
<string>TEAMID</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>PREFIX.ID</string>
</array>
</dict>
</plist>

参考サイト

[Appium] Ad-hoc用のipaファイルを開発者用の署名に差し替えてAppiumで使用できるようにする – Qiita

ipaファイルのProvisioningを差し替える – Qiita

Pocket