4

我正在 PowerPC Mac 上进行 iPhone 开发。如何让代码签名正常工作,以便我可以构建到我的 iPhone?

iPhone SDK 官方并不支持PowerPC,不过稍微折腾一下就可以安装了。见这里。我已经在 Xcode 中安装并运行良好的 SDK,并且 iPhone 模拟器运行良好。

但是,我无法在 Xcode 中构建到我的 iPhone —— 代码签名是 fubar。一些聪明的人在这里创造了变通方法。也就是说,我使用了 Tiku 发布的代码设计脚本以及一些更正。这帮助我取得了一些进展。代码现在可以编译,但在尝试部署时我仍然收到 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

2 月 18 日星期三 14:57:55 未知 afcd[180]:模式为 0x41e8 2 月 18 日星期三 14:57:55 未知 mobile_installation_proxy[182]:install_embedded_profile:跳过嵌入配置文件的安装 2 月 18 日星期三 14:57:55 未知 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 日星期三: 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/ 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;
}
于 2009-02-19T03:18:08.760 回答
1

我遇到了和你一样的问题——我可以在 iPhone 上交叉编译和安装应用程序,但它总是会因为安全违规而失败。

为了解决这个问题,我不得不越狱我的手机并安装一个修补过的 MobileInstaller(我相信 Cydia 应用程序现在有一个名为 Installous 的软件包,它可以修补你的 MobileInstaller。不幸的是,我认为 Installous 也用于盗版应用程序)。然后在你项目的 Info.plist 中,你需要添加以下内容:

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

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

我仍然可以从应用商店购买应用并让它们正常运行。

于 2009-02-20T13:12:06.457 回答
1

截至 2009 年 4 月 12 日,iPhone Os 2.2.1 的脚本修复程序在我的 iBook G4 上完美运行。

无论如何,花了一天的大部分时间在谷歌上搜索修复程序后,我发现有很多人仍然有问题。

确保您正确复制/粘贴,因为如果您在脚本中遇到错误并且失败,则代码设计 Xcode 不会注意到,它会尝试以未签名状态安装应用程序,在部署时给您一个错误(而不是在构建时) . 就我而言,我将文本粘贴在一个小终端窗口中,破坏了一些代码行,我花了一天时间才找到错误。至少现在我对证书、代码签名和 Xcode 有了深刻的了解……

如果您仍然遇到问题,可能是由于捆绑标识符/appId 不匹配,其中有大量帖子。

于 2009-04-12T00:11:45.767 回答
1

还可能值得记住的是,XCode 在证书、签名和设备上安装时可能有点不稳定(可能只是在 PPC 上,还没有在 Intel mac 上尝试过)。

我发现以下步骤通常会在以前工作的配置突然停止工作时解决问题:

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

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

希望有帮助。

于 2009-05-05T22:51:22.153 回答