XCode 4.2(4.1)真机调试及生成IPA全攻略

移动开发 iOS
开发环境使用的是目前为止最新的稳定版软件:Mac OS X Lion 10.7 + Xcode 4.1 目前Xcode 4.2 Preview版也已经发布,据说其修改方法跟4.1非常类似,只改动了一行代码,请参看参考文章的第二篇。本文仍以4.1版本为例。

网上有不少关于xocde3.x真机调试的文章,但鲜有xcode4.2相关的资料。参考了一些文章,终于可以在xcode4.2上进行真机调试了,在此记录下。

众所周知,在Xcode上开发的程序只能在模拟器中运行,如果要放到真机上则要花费99美金购买开发者证书iDP。这严重阻碍了我等草根开发者探索的脚步。写个小程序,同学间分享一下这个小小的愿望都不能满足,自然不能善罢甘休。

在没有iDP的情况下,要想将程序放到iPhone上调试,并最终发布IPA用于分享,需要以下几个步骤:

1.自己为自己颁发一个证书用于为生成的程序签名

2.修改工程配置以及Xcode的配置文件和二进制文件以阻止其验证和使用这个伪造的证书

3.使用自定义的步骤为应用程序签名

4.使用一点小trick来生成IPA文件

1.创建证书

我会分几步来说明。值得说明的是,要想真机调试,ios device必须事先越狱.创建证书的过程比较简单,打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。***个步骤比较重要,必须要把名称命名为iPhone Developer,将类型设定为代码签名,将"让我覆盖这些默认值"选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以。

1.创建证书,这个没什么好说的,网上资料一大堆,只要别写错名字就好,证书名一定要为 iPhone Developer

Xcode 4.1免证书(iDP)开发+真机调试+生成IPA全攻略

2.破解ios sdk及其xcode的相关配置文件(双击配置文件就可以打开,注意SDKSettings.plist有权限控制)

修改/Developer/Platforms/iPhoneOS.platform目录下的Info.plist文件,将其中的 XCiPhoneOSCodeSignContext 都改为XCCodeSignContext

修改/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk目录下的SDKSettings.plist文件,修改如下字段:

  1. <key>CODE_SIGNING_REQUIRED</key> 
  2. <string>NO</string> 
  3.  
  4. <key>ENTITLEMENTS_REQUIRED</key> 
  5. <string>NO</string> 

3.破解xcode二进制文件。建立一个crack文件,内容如下:

  1. #!/bin/bash 
  2. cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlugIns/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/ 
  3. dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255 
  4. printf "xc3x26x00x00" >> working 
  5. /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original 
  6. /bin/mv -n working iPhoneOS\ Build\ System\ Support 
  7. chmod a+x iPhoneOS\ Build\ System\ Support 

然后执行 chmod +x crack执行./crack,没错误就正常

4.修改xcode工程配置文件

1) 下载脚本

打开终端,执行如下操作

  1. cd  /Developer 
  2. mkdir xcode-crack 
  3. curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt 
  4. mv gen_entitlements.txt gen_entitlements.py 
  5. chmod 777 gen_entitlements.py

2) 禁用Xcode自动的签名操作

将工程配置中所有的Code Signing选项全部设为Don't Code Sign,如图。可能需要先点击“All”让这个选项显示出来

3)添加自定义的生成后脚本

在Build Phases中添加一个Phase,右下角的Add Build Phase,然后单击Add Run Script,输入以下脚本(如图)

  1. export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate 
  2. if [ "${PLATFORM_NAME}" == "iphoneos" ]; then 
  3. /Developer/xcode-crack/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent"; 
  4. codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/" 
  5. fi 

5。打包应用程序,生成ipa文件

在xcode上选择product菜单,选择Build For ---> Build for Achiving,就能成ipa文件了。如图:

可以将这个文件拖到itunes,就可以生成一个ipa文件,如图:

至此,我们就可以随心所欲地开发并调试ios程序了,并可以将打包好的ipa文件分享给他人

按照上面的步骤导入3.x的工程成功运行,但是如果用XCode 4.2创建新工程,则会报错,需要做如下修改:

1、将【Objective-C Automatic Reference Counting】的默认值由【YES】改为【NO】;

2、输入下面的代码注意没有特殊字符

  1. export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate   
  2. if [ "${PLATFORM_NAME}" == "iphoneos" ]; then   
  3. /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";   
  4. codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"   
  5. fi   

 

责任编辑:佚名 来源: 锦瑟华年blog
相关推荐

2013-04-15 10:48:16

Xcode ARC详解iOS ARC使用

2010-08-04 18:03:27

NFS服务器

2021-06-23 06:30:14

H5 移动端前端开发

2010-04-23 14:04:23

Oracle日期操作

2013-06-08 11:13:00

Android开发XML解析

2011-07-19 16:34:01

Xcode 证书

2009-02-20 11:43:22

UNIXfish全攻略

2009-10-19 15:20:01

家庭综合布线

2009-12-14 14:32:38

动态路由配置

2014-03-19 17:22:33

2009-10-12 15:06:59

2015-03-04 13:53:33

MySQL数据库优化SQL优化

2020-12-28 10:50:09

Linux环境变量命令

2009-07-04 11:26:12

unix应急安全攻略

2010-10-11 13:54:03

Windows Ser

2022-10-21 11:30:42

用户生命周期分析

2009-07-17 17:43:49

Jruby开发Web

2019-06-27 11:47:21

Wordpress容器化HTTPS

2009-12-17 16:15:00

CCNA640-810

2010-08-25 14:36:02

DHCP服务器
点赞
收藏

51CTO技术栈公众号