4

私は PowerPC Mac で iPhone の開発を行っています。iPhone にビルドできるように、コード署名を適切に機能させるにはどうすればよいですか?

iPhone SDK は公式には PowerPC をサポートしていませんが、少し手を加えればインストールできます。ここを参照してください。SDK がインストールされ、Xcode で正常に動作しており、iPhone シミュレーターも正常に動作しています。

ただし、Xcode で iPhone をビルドすることはできません。コード署名は fubar です。何人かの賢明な人々がここで回避策を作成しました。つまり、Tiku が投稿したコードサイン スクリプトといくつかの修正を使用しました。これは、私がいくつかの進歩を遂げるのに役立ちました。コードがコンパイルされるようになりましたが、デプロイしようとすると 0xE800003A エラーが発生します。

すべてのキーとプロビジョニング プロファイルが適切に設定されていると思います。私の iPhone は開発用に登録されており、プロビジョニング プロファイルが作成されています。開発ポータルにリストされている AppID は MagicNumber.com.website.* であり、私のプロジェクトではバンドル ID を com.website.${PRODUCT_NAME:identifier} として設定しています。プロジェクト設定では、製品名は HelloWord で、コード署名 ID は私の開発者証明書です。

iPhone のコンソール ログには次のように記載されています。 Wed Feb 18 14:57:55 unknown afcd[180] : user mobile has uid 501

Wed Feb 18 14:57:55 unknown afcd[180]: モードは 0x41e8 Wed Feb 18 14:57:55 unknown mobile_installation_proxy[182]: install_embedded_profile: [182]: verify_executable: 署名を検証できませんでした: e800800e Wed Feb 18 14:57:55 unknown mobile_installation_proxy[182]: preflight_application_install: 検証できませんでした /var/tmp/install_staging.QNk2sD/HelloWorld.app/HelloWorld Wed Feb 18 14: 57:55 不明 mobile_installation_proxy[182] : install_application: アプリケーションをプリフライトできませんでした 2 月 18 日水曜日 14:57:55 不明 mobile_installation_proxy[182] : handle_install: インストールに失敗しました

どんな助けでも大歓迎です!

4

4 に答える 4

2

コードサイン スクリプトはどのようなものですか? G4 で作業していたときにこれを使用していました: (元の "/usr/bin/codesign" の名前を "/usr/bin/codesign.orig" に変更し、このスクリプトを "/usr/bin/また、パス名にスペースが含まれている場合、このスクリプトは機能しません。)

#!/usr/bin/perl 
#
$appDir=$ARGV[$#ARGV];
@tmpAry=split(/\//,$appDir);
$baseAppName=$tmpAry[$#tmpAry];
$baseAppName=~s/\.app$//;
$realAppName="$appDir"."/$baseAppName";

$sign=0;
for($b=0;$b<$#ARGV;$b++) {
if($ARGV[$b] eq "-s") {
$sign=1;
}
}

$mums=`file $realAppName`;
if($sign==1 && $mums=~/executable arm/) {
#print "Signing armv6..\n"; 
$dev="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/";
$tmp="$appDir"."/tmpbin";
`$dev/lipo -create $realAppName -output $tmp`;
`mv $tmp $realAppName`;
system("/usr/bin/codesign.orig",@ARGV);
`$dev/lipo -thin armv6 $realAppName -output $tmp`;
`mv $tmp $realAppName`;
system("rm $appDir"."/CodeResources");
system("cp $appDir"."/_CodeSignature/CodeResources $appDir"."/CodeResources");
exit 0;
} else {
exec '/usr/bin/codesign.orig',@ARGV;
}
于 2009-02-19T03:18:08.760 に答える
1

私はあなたと同じ問題を抱えていました.iPhoneにアプリをクロスコンパイルしてインストールすることはできましたが、常にセキュリティ違反で失敗しました。

それを回避するには、携帯電話をジェイルブレイクし、パッチを適用した MobileInstaller をインストールする必要がありました (Cydia アプリには、MobileInstaller にパッチを適用する Installous というパッケージが含まれていると思います。残念ながら、Installous はアプリの海賊版にも使用されていると思います)。次に、プロジェクトの Info.plist に次を追加する必要があります。

<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>

これにより、お使いの電話で署名なしのバイナリを実行できるようになります。これが、私が ppc mac から開発できた唯一の方法です。

アプリストアからアプリを購入し、問題なく実行できます。

于 2009-02-20T13:12:06.457 に答える
1

また、証明書、署名、およびデバイスへのインストールに関しては、XCode が少し不安定になる可能性があることも覚えておく価値があります (おそらく PPC でのみ、Intel mac で試したことはありません)。

以前は機能していた構成が突然機能しなくなった場合、通常、次の手順で問題を解決できます。

  1. XCode のすべてのターゲットを消去する
  2. インストールされているアプリのバージョンをデバイスから削除します (通常のアプリのアンインストール手順で、小さな「x」をクリックします)。
  3. XCode を完全に終了し、再起動します。

アプリに正常に署名したことがない場合は、実際の構成の問題がある可能性がありますが、機能するようになったら、何かが壊れているのではないかと心配する前に、必ず上記を試してください:)

それが役立つことを願っています。

于 2009-05-05T22:51:22.153 に答える
1

2009 年 4 月 12 日の時点で、iPhone OS 2.2.1 のスクリプト修正は、私の iBook G4 で完全に機能します。

とにかく、1 日の大半を Google で修正プログラムを検索することに費やしましたが、まだ問題を抱えている人がかなりいることがわかりました。

スクリプトでエラーが発生してコード署名に失敗した場合、Xcode は気付かず、署名されていない状態でアプリケーションをインストールしようとし、展開時にエラーが発生するため (ビルド時ではありません)、正しくコピー/貼り付けするようにしてください。 . 私の場合、小さなターミナル ウィンドウにテキストを貼り付けていたため、コードの行数が壊れていたため、間違いを見つけるのに 1 日かかりました。少なくとも今では、証明書、コード署名、および Xcode に関する印象的な知識を持っています...

それでも問題が解決しない場合は、大量の投稿があるバンドル識別子/appId の不一致が原因である可能性があります。

于 2009-04-12T00:11:45.767 に答える