私はMapItTrackItと呼ばれるiOS用のテストフライトのアプリを持っています。すべてがうまく機能しています。
Xcode 5.1にアップデートしました。私はいつもと同じようにアプリを作成しました。同じプロファイルとアドホック証明書。
今回、IPAファイルをアップロードしようとすると、「無効なプロファイル:開発者ビルドの資格でget-task-allowをtrueに設定する必要があります」が表示されます。エラー。
私はプロビジョニングなどで何も変更しませんでした。アプリにいくつかの機能を追加し、バージョンを改訂しました。
私は今何をしていますか?どうすれば修正できますか?私の上司はこれを今すぐ配備したいと思っていますが、できません。
これを引き起こす可能性のあるいくつかの異なる問題があるようです。私のものはジョセフのそれと似ていましたが、同じではありませんでした。
私にとって、有効であるが別のユーザーからの別のプロビジョニングプロファイルがありました。私はいくつかのAppleアカウントを持っています。私は開発のメンバーです。
ビルドは、署名しようとしたときに、別のユーザーアカウントとは異なるプロファイルを使用していました。これは、設定でどちらを使用するかを私が言っていたにもかかわらずです。
Testflight用にこのアプリをビルドしたいときはいつでも、他のプロビジョニングプロファイルを削除する必要があることで、これを解決しました。他のユーザーアカウントの開発サイトから更新を行った場合、プロビジョニングプロファイルは常に戻ってきます。
最終的な解決策は、たまたま開発用の新しいMacを入手し、そのMacに他のユーザーアカウントのプロファイルをまだインストールしていないことでした。これで、何もせずにすべてが正常にビルドされます。
今日と同じように4時間ほど同じ問題が発生します。Xcodeを再起動すると、それが憂鬱なほどに修正されるようです。
私はこれを持ってそれを解決しました。
Xcodeは、予想していたものとは異なるプロビジョニングプロファイルを使用していました-配布証明書を使用してビルドに署名していましたが、開発プロビジョニングプロファイルを作成していました。
配布証明書が何らかの理由で無効であることが判明しました。私はプロジェクトでプロビジョニングプロファイルを明示的に設定することでこれを発見し、それによりxcodeに問題があったことを知らせるエラーを表示するように促しました。
これらの問題の解決を始めるのに適した場所は、ビルドログのコードサインステップを確認することです。次のような行があります。
Using code signing identity "iPhone Distribution: XXXXXX" and provisioning profile "YYYYYY" (<..guid...>)
この行が期待する証明書とプロファイルを示しており、署名IDとプロファイルがどちらも配布用のものであることを確認してください。
私にとっての問題は、コード署名されていないアプリにバンドルされたカスタム.frameworkがあったことです。どうやらこの未署名のフレームワークが問題を引き起こした。
配布証明書でフレームワークにコード署名したとき、アプリは問題なくアップロードされました。
私のCode Signing Identity - Release
部分をDistribution証明書に変更してこのバグを修正しました
解決しました。起動画面のラベルを更新して、アプリ名、バージョンを表示し、カスタムViewControllerでビルドしようとしました。これは非常に複雑であることが不可能であることが判明したので、View Controllerを削除しました。しかし、Launch Screen Storyboardのアウトレットを残しました。私はこれらを削除し([ユーティリティ]タブの最後のアイコン、円の右矢印)、すべて愛と平和と喜びです。
新しいXcode 6.3ベータ版で同じ問題が発生しました。Project.entitlements
を削除することで解決されます(ターゲットのCode Signing Entitlements
のBuild Settings
エントリも一緒に)
いろいろな方法を試しました。それらのどれも私のために働きません。
多分それはテストフライトの問題だと思いました。
そのため、crashlyticsを使用してアドホックビルドを配布しました。アップロードしても問題ありませんでした。
次に、オーガナイザを使用してこのアーカイブを検証し、詳細情報を取得しようとしましたが、エラーが発生しました。このアーカイブにはサポートされていないi386およびx86_64アーキテクチャが含まれていると言われました。i386およびx86_64アーキテクチャを含むフレームワークを使用していることがわかりました。次に、デバイスのみのアーキテクチャを含む新しいフレームワークを再作成しました。それは魅力のように働きます。