web-dev-qa-db-ja.com

--resource-rulesはmac os x> = 10.10で非推奨になりました

IResignアプリを使用してMac Os 10.10で新しいプロビジョニングプロファイルを使用してipaファイルを再署名しようとしましたが、次の警告が表示されました。「警告:--resource-rulesはMac OS X> = 10.10で廃止されました」.

私は今どうすればいい?

68
hiennv92

回避策:XCodeからiResignアプリを実行すると、問題なくアプリを再署名します(ポップアップではなくコンソールに警告が表示されます)。しかし、XCodeを閉じてアプリを単独で実行すると、ポップアップが表示されます!

ところで:バグが見つかりました:)条件

if (systemVersionFloat < 10.9f)

Yosemite 10.10では壊れています。おかしい。

おかげで、

6
Sergey Kopanev

プロジェクトをクリックします>ターゲット>ターゲットを選択>ビルド設定>

_Code Signing Resource Rules Path_

そして追加:

$(SDKROOT)/ResourceRules.plist

enter image description here

153
Danut Pralea

Xcode 7なので、Code Signing Resource Rules Pathbuild settingは空のままにしておく必要があります。そうしないと、この警告が生成されます。

Technical Note TN2206 は詳細を提供します:

リソースルール

OS X Mavericks v10.9より前のシステムでは、バンドル内のどのファイルをコード署名で封印するかを制御する署名機能(--resource-rules)が文書化されていました。この機能は、Mavericksで廃止されました。 Mavericks以降で作成されたコード署名は、常にバンドル内のすべてのファイルを封印します。これを明示的に指定する必要はもうありません。これは、Xcodeのコード署名リソースルールパスのビルド設定を使用する必要がなくなり、空白のままにする必要があることも意味します。

したがって、バンドルの一部を署名から除外することはできなくなりました。バンドルは、署名後に読み取り専用として扱う必要があります。

24

Xcode 7の後、以前のソリューションは機能しなくなりました。新しいものがRishi Goelによって指摘されました( https://stackoverflow.com/a/32762413/2252465

  1. CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plistを削除
  2. を見つける /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplicationスクリプトを作成して更新します。
    スクリプト内の次のコードを含む行を見つけます

    my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
                      "--sign", $opt{sign},
                      "--resource-rules=$destApp/ResourceRules.plist");
    

    次のように変更します。

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

Xcodebuildコマンドに以下の引数を追加してみてください。

-sdk iphoneos CODE_SIGN_RESOURCE_RULES_PATH='$(SDKROOT)/ResourceRules.plist' 
4

端末を使用してアプリを再署名する場合は、コード署名の実行中にresource-rulesを省略することもできます。これは、署名するリソースとしないリソースを外部で指定する必要がないためです。これで、パッケージ内のすべてのリソースに署名することが必須になりました。

端末を使用してアプリを辞任するには、次の手順を実行します。

unzip MyApp.ipa

rm -rf Payload/MyApp.app/_CodeSignature/

cp ~/Desktop/MyAdHoc.mobileprovision Payload/MyApp.app/embedded.mobileprovision 

codesign -f -s "iPhone Distribution: Code signing Certificate for Enterprise or Ad-hoc app" Payload/MyApp.app

Zip -qr MyApp_Resigned.ipa Payload/
2
technerd

Xcode 7 GM(Xcode 6.4以降))で既存のiOSアプリを開いたところ、この廃止警告が表示されました。

回答とコメントが「コード署名リソースルールパス」を更新するように言っており、それらがMacアプリも参照しているのは興味深いことです。

私の場合、プロジェクトにはこのキーと値がデフォルトですでに設定されていました(設定しませんでした)。警告は、リソースルールも廃止されることに関するものです。

私にとっては、「コード署名リソースルールパス」の値を削除すると、警告が削除されました。この方法で新しいビルドを送信していないため、戻ってこの回答を更新する必要がある場合があります。

私の答えが他の人たちが見ているものと正反対であることは面白いと思っただけです。

1
Chad Pavliska

IResignアプリがcodesignタスクを呼び出す引数リストから2つの--resource-rulesパラメーターをコメントアウトする場合、アプリのプロジェクトのプロジェクトビルド設定を変更する必要はありません。

辞めるためだけに、作業したいすべてのプロジェクトのビルド設定を変更しなければならないという考えは好きではありません。

Xcodeで開く必要がないように、再署名ツールを再構築し、アプリケーションディレクトリにコピーしました。

0
Sheamus