web-dev-qa-db-ja.com

xcodebuild-codesign -vvvvは「リソースエンベロープは廃止されました」と言います

IOS 8デバイス用のアプリのコンパイルを開始するために、xcodeインストールをxcode 6.0.1を使用するように更新しました。何らかの理由で、以下を使用して生成されたアプリファイルに正しく署名できません。

xcodebuild -project GrantM/GrantM.xcodeproj -configuration Release

コードをコンパイルし、問題ないように見えますが、実行中です。

/usr/bin/codesign --verify -vvvv GrantM/GrantM.app

ください:

Program /usr/bin/codesign returned 1 : [GrantM/GrantM.app: resource envelope is obsolete]
Codesign check fails : GrantM/GrantM.app: resource envelope is obsolete

/ usr/bin/codesign -dv GrantM/GrantM.appを使用して、コードがまったく署名されていることを確認します

戻り値:

Executable=Documents/GrantM/GrantM/GrantM.app/GrantM
Identifier=com.grantapps.GrantM
Format=bundle with Mach-O universal (armv7 (16777228:0))
CodeDirectory v=20200 size=647 flags=0x0(none) hashes=23+5 location=embedded
Signature size=4336
Signed Time=24 Sep 2014 12:54:53 pm
Info.plist entries=34
TeamIdentifier=N3KKU46JLY
Sealed Resources version=2 rules=5 files=55
Internal requirements count=1 size=180

他の誰かがOSX 10.9.5とxcode 6.0.1で同様の問題に遭遇しましたか?それとも私は少し愚かで、明らかな間違いをしているだけですか?

さらに、xcodeで生成されたアプリのデバッグバージョンを見つけることができ、署名に成功しましたが、それは配布用に機能しないデバッグバージョンです。 xcodebuildで生成されたアプリファイルに手動で署名することもできません。

事前に助けやアドバイスをありがとう。

20
Grantism

Mac OSX 10.9.5以降を使用している場合、V2署名を使用したOSコード署名に問題があります。

したがって、このエラーを回避するには、--no-strictフラグをcodesign --verifyとともに使用します。

PackageApplicationを使用して.ipaファイルを作成している場合は、

vi PackageApplicationコマンドを使用してPackageApplication Perlスクリプトツールを編集し、--no-strictパラメーターを渡すようにコードサイン関数のオカレンスを更新します。

例:

$ result = runCmd( "/ usr/bin/codesign"、 "--verify"、"-no-strict"、 "-vvvv"、、$ plugin);

私は同じように直面していて、Apple Dev Teamから次の応答を得ました。問題は私のために解決されました。

コマンドラインツール「codesign」は10.9.5および10.10で変更されました。「-no-strict」オプションをコマンドに渡す必要があります(問題は報告されており、修正される予定です)。この問題を回避するには、コピーを保存してPackageApplicationを変更し、「— no-strict」をcodesignに渡します。次のコマンドを実行すると、PackageApplicationを見つけることができます。xcrun -sdk iphoneos -f PackageApplication

28
Omkar

GitリポジトリからiOSアプリの自動ビルドを提供するJenkins CIシステムセットアップがあります。さらに、クラッシュログを監視するために、ビルドをCrashlyticsにアップロード/送信します。

Xcode 6.0 GMではすべてが正常に機能しましたが、Xcode 6.0.1のインストール以降、Crashlyticsへのアップロードは同じエラーで失敗します。私はこれについて彼らの援助を求めています。

私のビルドジョブの一部は、xcodebuildを使用してアプリのアーカイブを生成します。また、そこからPackageApplicationを使用して.ipaファイルを取得します。PackageApplicationはcodesignコマンドを発行し、失敗しません。私もデバッグではなく、配布ビルドを使用しています。

これが、ジョブでアプリをクリーンアップ/アーカイブするために使用するコマンドです。

xcodebuild clean archive -scheme MyScheme -target MyTarget -sdk iphoneos -configuration AdHoc CODE_SIGN_IDENTITY="iPhone Distribution: MyCompany" PROVISIONING_PROFILE="UDID_Of_Provisioning_Profile"

これが、生成されたアーカイブ内からアプリの.ipaファイルをパッケージ化/取得するために使用するコマンドです。

xcrun -sdk iphoneos PackageApplication "Path/to/MyApp.app" -o "/Path/To/MyApp.ipa" --sign "iPhone Distribution: MyCompany" --embed "Path/To/UDID_Of_Provisioning_Profile.mobileprovision"

それらを設定に合わせて変更し、同じエラーが発生するかどうかを確認してください。

4
Sharkus

このエラーを回避するには、次の手順に従ってください。

  1. Info.plistからCFBundleResourceSpecification = ResourceRules.plistを削除します
  2. Codesign行で--resource-rulesを回避し、コード署名を行います。
  3. アプリの確認:codesign --verify -vvvv Payload/*。app
1
Febin

私の場合、私はeveryフレームワークとdylibを確認しましたが、どちらが拒否されたかを調べ、この非常にフレームワークまたはdylibを辞任すると、アプリ全体が私のお尻を節約しました。

1
Nix Wang

OS 10.10では、codesign行の--resource-rulesを削除する必要があります

my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve 
metadata=identifier,entitlements","--sign", $opt{sign});
0
Vid