開発者の証明書の期限が切れるなどで証明書を更新すると、過去に作ったipa
ファイルが開発用端末で使えなくなる。
ビルドし直すという手もあるが、時間が経っているとビルド環境が変わっている可能性が高い。
Fastlaneをipa
を再度署名することができる。
コマンド例
fastlane sigh resign myapp.ipa \
--use_app_entitlements \
--signing_identity 'iPhone Distribution: Runo Sahara.' \
--provisioning_profile "$HOME/Library/MobileDevice/Provisioning Profiles/myapp.Today.mobileprovision" \
--provisioning_profile "$HOME/Library/MobileDevice/Provisioning Profiles/myapp.mobileprovision"
確認方法
次を確認したくなる。
- 有効期限が正しいか。
- Entitlements が正しく、ワイルドカードで無いこと。
QuickLook
ipa
やmobileprovision
ファイルをmac上でQuickLookするツールがある。
Github: https://github.com/ealeksandrov/ProvisionQL
インストールコマンド例
brew cask install provisionql
Codesign
Codesign で entitlement を確認できる。
コマンド例
unzip myapp.ipa
codesign -d --entitlements :- Payload/myapp.app/
関連コマンド
自動化するために役に立つコマンド。
現在の状態で使えるidentity一覧
security find-identity -v -p codesigning
アプリ側のidentity
codesign -vv -d Payload/myapp.app
mobileprovisionの情報を取得
security cms -D -i embedded.mobileprovision > temp.plist
APPNAME=`/usr/libexec/PlistBuddy -c "Print :AppIDName" temp.plist`
TEAMID=`/usr/libexec/PlistBuddy -c "Print :TeamIdentifier:0" temp.plist`
APPID=`/usr/libexec/PlistBuddy -c "Print :Entitlements:application-identifier" temp.plist`
EXPIRATIONDATE=`defaults read temp.plist ExpirationDate`
(ipa
を解凍してembedded.mobileprovision
をfindすれば、アプリ側のものが確認できる。)