我在PowerPC Mac上进行iPhone开发。如何使代码签名正常工作以便我可以构建到我的iPhone?
iPhone SDK并未正式支持PowerPC,但有些烦人之操,可以安装。见here。我已经安装了SDK并在Xcode中运行良好,iPhone模拟器工作正常。
但是,我无法在Xcode中构建我的iPhone - 代码签名是fubar。一些聪明的人创建了变通方法here。也就是说,我使用了Tiku发布的代码签名脚本以及一些更正。这有助于我取得一些进展。代码现在编译,但在尝试部署时仍然出现0xE800003A错误。
我认为我已正确设置了所有密钥和配置文件。我的iPhone已注册开发,我已经创建了配置文件。开发门户网站中列出的AppID表示MagicNumber.com.website。*,在我的项目中,我将Bundle ID设置为com.website。$ {PRODUCT_NAME:identifier}。在项目设置中,产品名称为HelloWord,代码签名标识为我的开发人员证书。
iPhone的控制台日志说: 2月18日星期三14:57:55未知的afcd [180]:用户手机有uid 501
Wed Feb 18 14:57:55未知afcd [180]:模式为0x41e8 2月18日星期三14:57:55未知mobile_installation_proxy [182]:install_embedded_profile:跳过嵌入式配置文件的安装 Wed Feb 18 14:57:55 unknown mobile_installation_proxy [182]:verify_executable:无法验证签名:e800800e 2月18日星期三14:57:55未知mobile_installation_proxy [182]:preflight_application_install:无法验证/var/tmp/install_staging.QNk2sD/HelloWorld.app/HelloWorld 2月18日星期三14:57:55未知mobile_installation_proxy [182]:install_application:无法预检应用程序安装 2月18日星期三14:57:55未知mobile_installation_proxy [182]:handle_install:安装失败
感谢任何帮助!
答案 0 :(得分:2)
您的codeign脚本是什么样的?我在使用G4时曾经使用过这个:(原始的“/ usr / bin / codesign”应该重命名为“/usr/bin/codesign.orig”,然后将此脚本保存为“/ usr / bin /你需要用“sudo”来完成它。如果路径名中有空格,这个脚本也不行。)
#!/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;
}
答案 1 :(得分:1)
我遇到了和你一样的问题 - 我可以在iphone上交叉编译和安装应用程序,但它总是会因安全违规而失败。
为了解决这个问题,我必须越狱我的手机并安装一个修补过的MobileInstaller(我相信Cydia应用程序现在有一个名为Installous的程序包可以修补你的MobileInstaller。不幸的是,我认为Installous也用于盗版应用程序)。然后在项目的Info.plist中,您需要添加以下内容:
<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>
这将允许您的手机运行未签名的二进制文件,这是我能够从我的ppc mac开发的唯一方式。
我仍然可以从appstore购买应用程序并让它们运行没有任何问题。
答案 2 :(得分:1)
截至2009年4月12日,iPhone Os 2.2.1脚本修复程序在我的iBook G4上完美运行。
无论如何,我花了大部分时间在Google上搜索修复程序,我发现有很多人仍然遇到问题。
确保正确复制/粘贴,因为如果脚本中出现错误并且代码签名失败Xcode将不会注意到它会尝试将应用程序安装在其未签名状态,在部署时会出错(NOT建设时)。在我的情况下,我将文本粘贴在一个小的终端窗口中,打破了一些代码行,我花了一天时间才发现错误。至少现在我对证书,代码签名和Xcode有着令人印象深刻的知识......
如果您仍有问题,可能是由于捆绑标识符/ appId不匹配,其中有大量帖子。
答案 3 :(得分:1)
值得注意的是,XCode在证书,签名和设备安装方面可能有点不稳定(可能只是在PPC上,没有在Intel Mac上试过)。
我发现以下步骤通常会在先前工作的配置突然停止工作时解决问题:
如果您从未成功签署过您的应用,可能会出现实际的配置问题,但一旦工作正确,请务必先尝试以上操作,然后再担心出现问题:)
希望有所帮助。