如何在PowerPC Mac上正确开发iPhone应用?

4
我正在使用PowerPC Mac进行iPhone开发。如何使代码签名正常工作,以便我可以构建到我的iPhone上?
iPhone SDK没有官方支持PowerPC,但是通过一些调整,它可以被安装。请参见这里。我已经在Xcode中成功安装和运行了SDK,并且iPhone模拟器正常工作。
然而,在Xcode中我无法构建到我的iPhone上--代码签名出现问题。一些聪明的人已经创建了解决方法这里。我使用了Tiku发布的codesign脚本以及一些更正。这帮助我取得了一些进展。现在代码已经编译了,但当尝试部署时仍会出现0xE800003A错误。
我认为我已经正确设置了所有的密钥和配置文件。我的iPhone已经注册开发者账号,我已经创建了配置文件。在开发者门户网站上列出的AppID是MagicNumber.com.website.*,而在我的项目中,Bundle ID设置为com.website.${PRODUCT_NAME:identifier}。在项目设置中,产品名称是HelloWord,代码签名标识是我的开发者证书。
iPhone的控制台日志显示: Wed Feb 18 14:57:55 unknown afcd[180] : user mobile has uid 501

Wed Feb 18 14:57:55 未知 afcd[180] : 模式为0x41e8 Wed Feb 18 14:57:55 未知 mobile_installation_proxy[182] : install_embedded_profile: 跳过嵌入式配置文件的安装 Wed Feb 18 14:57:55 未知 mobile_installation_proxy[182] : verify_executable: 无法验证签名:e800800e Wed Feb 18 14:57:55 未知 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: 无法预检应用程序安装 Wed Feb 18 14:57:55 未知 mobile_installation_proxy[182] : handle_install: 安装失败

感谢您的帮助!


这个之前的SO线程可能对你有用。 - ceejayoz
4个回答

2

你的代码签名脚本是什么样子的?我曾经在G4上工作时使用过这个脚本:(将原始的“/usr/bin/codesign”重命名为“/usr/bin/codesign.orig”,然后将此脚本保存为“/usr/bin/codesign”。您需要使用“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
我和你有同样的问题-我可以进行交叉编译并在iPhone上安装应用程序,但它总是会因为安全违规而失败。
为了绕过这个问题,我不得不越狱我的手机并安装一个经过修补的MobileInstaller(我相信Cydia应用现在有一个名为Installous的软件包,它可以修补您的MobileInstaller。不幸的是,我认为Installous也被用于盗版应用)。然后在项目的Info.plist中,您需要添加以下内容:
<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>

这将允许您的手机运行未签名的二进制文件,这是我能够从我的 PPC Mac 开发的唯一方式。

我仍然能够从应用商店购买应用程序,并且它们可以在没有任何问题的情况下运行。


1
截至2009年4月12日,iPhone Os 2.2.1脚本修复在我的iBook G4上完美运行。
无论如何,我花了一整天的时间在谷歌上搜索解决方法,发现仍有很多人遇到问题。
请确保正确复制/粘贴,因为如果脚本出现错误并且未能通过codesign,Xcode将不会注意到它,并尝试以未签名状态安装应用程序,在部署时(而不是构建时)会给您一个错误。在我的情况下,我将文本粘贴到了一个小终端窗口中,打破了一些代码行,花了我一天的时间才找到错误。至少现在我对证书、代码签名和Xcode有了深入的了解...
如果您仍然遇到问题,可能是由于捆绑标识符/appId不匹配,这方面有大量帖子可供参考。

1

值得注意的是,当涉及到证书、签名和在设备上安装时,XCode可能会有些不稳定(也许只是在PPC上,在Intel Mac上没有尝试过)。

我发现以下步骤通常可以解决突然停止工作的先前工作配置:

  1. 在XCode中清除所有目标
  2. 从您的设备中删除任何已安装的应用程序(通常的应用程序卸载过程,点击小“x”)
  3. 完全退出XCode,并重新启动

如果您从未成功签署过您的应用程序,则可能存在实际的配置问题,但一旦它开始工作,请确保在担心出现故障之前尝试上述方法 :)

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接