web-dev-qa-db-ja.com

Mac OS Xアプリがコード署名無効エラーでクラッシュする

OS X用のアプリを作成し、アプリをアーカイブしてアプリとしてエクスポートして開こうとすると、コード署名が無効なエラーでクラッシュします。

Macアプリ配布、Macインストーラ配布、開発者IDアプリケーション、開発者IDインストーラ証明書、および配布プロビジョニングプロファイルを作成しました。アプリはサンドボックス化されており、Mavericksでテストしました。

Exception Type:  EXC_CRASH (Code Signature Invalid)
Exception Codes: 0x0000000000000000, 0x0000000000000000

VM Regions Near 0x7fff71ce90a8 (cr2):
    __LINKEDIT             00007fff67043000-00007fff67057000 [   80K] r--/rwx SM=COW  /usr/lib/dyld
--> Submap                 00007fff70000000-00007fff80000000 [256.0M] r--/rwx SM=PRV   process-only VM submap
unused shlib __DATA    00007fff708d3000-00007fff730dc000 [ 40.0M] rw-/rw- SM=COW  system shared lib __DATA not used by this process

Thread 0 Crashed:
0   dyld                            0x00007fff66fd1028 _dyld_start + 0

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x000000000000000d  rbx: 0x0000000000000000  rcx: 0x0000000000000000  rdx: 0x0000000000000000
  rdi: 0x0000000000000000  rsi: 0x0000000000000000  rbp: 0x0000000000000000  rsp: 0x00007fff5eda9d30
  r8: 0x0000000000000000   r9: 0x0000000000000000  r10: 0x0000000000000000  r11: 0x0000000000000000
  r12: 0x0000000000000000  r13: 0x0000000000000000  r14: 0x0000000000000000  r15: 0x0000000000000000
  rip: 0x00007fff66fd1028  rfl: 0x0000000000000201  cr2: 0x00007fff71ce90a8

Logical CPU:     0
Error Code:      0x020000f4
Trap Number:     133


Binary Images:
0x7fff66fd0000 -     0x7fff67003817  dyld (???) <D1DFCF3F-0B0C-332A-BCC0-87A851B570FF> /usr/lib/dyld

External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 47204
thread_create: 0
thread_set_state: 1299

配布プロビジョニングプロファイルに問題があります。なしまたはmacチームプロビジョニングプロファイルをリリース用に設定すると、機能します。私はiCloudとアプリ内購入を使用しています。

この問題は、iCloudまたはアプリ内購入を有効にしたときに始まりました。それらを無効にすると、すべてが機能します。それらの1つを有効にすると、プロビジョニングプロファイルはnoneに設定されて機能しますが、ディストリビューションプロファイルに変更すると機能しなくなります。

誰かが何が悪いのか教えてもらえますか?

22

全く問題ないかもしれません。読む:テクニカルQ&A QA1884 Macアプリの配布ビルドのテスト

これによると、自分でインストーラーパッケージを作成することはできません。あなたはパッケージを作成し、ターミナルを介してそれをチェックすることですが、それはうまくいきません。

ちなみに、この技術レポートには誤りがあります。アプリへのパスをSudoインストーラーに含める必要がある場合があります-store -pkg Sample.pkg -target /次のようにする必要があります:Sudo installer -store -pkg /user/yourname/desktop/Sample.pkg -target

この例では、installer.pkgがデスクトップ上にあると想定しています

すべてのパスを取得した場合、それで問題ありません。

6月にアップロードした最後のアプリであるpkgが問題なくインストールされ、インストールされたアプリが機能したため、私も夢中になりました。

2
David Curran

私にはこの問題がありましたが、幸いにも2つのアプリがありました。1つは機能し、もう1つは機能しませんでした。最終的に、この1つの変更で修正されました。

悪い:

Provisioning Profile: MacTeam Provisioning Profile: <the app's bundle id>

良い:

Provisioning Profile: Automatic

アプリを直接ユーザーに送信する場合、プロファイルは無効だと思います。自動送信は、人への送信やアプリストアへの送信には問題なく機能します。

1
Kalle

これを特定のデバイスでのみ実行できるベータバージョンとしてビルドしますか?新しいMacを入手して、ベータテスター証明書をインストールするのを忘れたときに、この正確なエラーが発生しました。

また、プロファイルの構成時に問題が発生しました。機能する構成を見つけたとき、忘れないようにこのスクリーンショットを作成しました。多分それは役立ちます:

Screenshot of developer profiles

編集:また、自分でコンパイルするすべてのフレームワークにコード署名するようにしてください。各フレームワークは個別に署名する必要があります。