【问题标题】:How to properly develop for the iPhone on a PowerPC Mac?如何在 PowerPC Mac 上为 iPhone 正确开发?
【发布时间】:2010-10-08 11:30:01
【问题描述】:

我正在 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

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 日星期三 14:57:55 未知 mobile_installation_proxy[182]:install_application:无法预检应用程序安装 2 月 18 日星期三 14:57:55 未知 mobile_installation_proxy[182]:handle_install:安装失败

感谢任何帮助!

【问题讨论】:

标签: iphone xcode powerpc


【解决方案1】:

您的代码设计脚本是什么样的?我以前在做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;
}

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        【解决方案4】:

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

        我发现,当以前工作的配置突然停止工作时,通常可以通过以下步骤来解决问题:

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

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

        希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-15
          • 2020-01-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-05
          • 1970-01-01
          相关资源
          最近更新 更多