2009-02-18 58 views
4

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

iPhone SDK并未正式支持PowerPC,但有些烦躁不安,可以安装。见here。我已经安装了SDK,并且在Xcode中运行良好,iPhone模拟器工作正常。

但是,我无法在Xcode中构建我的iPhone - 代码签名是fubar。一些聪明的人创造了解决方法here。也就是说,我使用了Tiku发布的codeign脚本以及一些更正。这帮助我取得了一些进展。代码现在编译,但是当它尝试部署时,我仍然收到0xE800003A错误。

我想我已经正确设置了所有密钥和配置文件。我的iPhone已注册开发,我已创建配置文件。开发者门户中列出的AppID为MagicNumber.com.website。*,在我的项目中,我将Bundle ID设置为com.website。$ {PRODUCT_NAME:identifier}。在项目设置中,产品名称是HelloWord,代码签名标识是我的开发人员证书。

在iPhone的控制台日志说: 星期三年02月18名14点57分55秒未知渔护署[180]:用户移动具有UID 501

星期三年02月18名14点57分55秒未知渔护署[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:5 5未知mobile_installation_proxy [182]:install_application:无法预检应用程序安装 Wed Feb 18 14:57:55未知mobile_installation_proxy [182]:handle_install:安装失败

任何帮助表示赞赏!

+0

[This previous SO thread](http://stackoverflow.com/questions/37822/is-it-just-the-iphone-simulator-that-is-restricted-to-intel-only-macs)可能是对你有用。 – ceejayoz 2009-02-19 00:43:36

回答

1

我有同样的问题,因为你 - 我能交叉编译并在iPhone上安装该应用程序,但它总是会因违反安全而失败。为了解决这个问题,我不得不越狱我的手机并安装补丁MobileInstaller(我相信Cydia应用程序现在有一个名为Installous的软件包可以修补您的MobileInstaller。不幸的是,我认为Installous也被用来盗版应用程序)。然后在你的项目的Info.plist,你需要添加以下内容:

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

这将让你的手机运行未签名的二进制文件,这是我能够从我的PPC MAC发展的唯一途径。

我仍然可以从appstore购买应用程序,并让它们运行时没有任何问题。

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; 
} 
1

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

无论如何,花了一天的时间搜索Google上的修复程序,我发现有相当多的人仍然有问题。

请确保您正确地复制/粘贴,因为如果您在脚本中遇到错误并且代码失败,Xcode将不会注意到它会尝试以其无符号状态安装应用程序,不建筑时)。就我而言,我将文本粘贴在一个小终端窗口中,打破了一些代码行,并花了我一天的时间才发现错误。至少现在我对证书,代码签名和Xcode有了深刻的了解......

如果您仍然有问题,可能是由于包含大量帖子的bundle标识符/ appId不匹配。

1

也许值得注意的是,当涉及到证书,签名和安装在设备上(可能只是在PPC上,还没有在英特尔MAC上尝试过)时,XCode可能有点片面。

我发现下面的步骤通常在先前的工作配置突然停止工作,理清头绪:

  1. 清洁所有目标XCode中
  2. 删除设备中的应用程序的任何已安装的版本(通常应用卸载程序,点击小“X”)
  3. 完全退出的XCode,并再次启动

如果你从来没有成功地签署了您的应用程序有可能是一个实际的配置问题,但一旦它的工作,请确保您尝试以上操作之前担心的东西坏了:)

希望有所帮助。