IOS 真机调试(Xcode4.6.3,,Xcode5)测试成功
2014-03-11 16:02
417 查看
前提:
[align=left] 众所周知,在Xcode上开发的程序只能在模拟器中运行,如果要放到真机上则要花费99美金购买开发者证书iDP。本文介绍的是在上一代Xcode4.6.3上演示的,Xcode5配合iOS7已经亲测完美使用,所以在没有iDP的情况下,要想将程序放到iPhone上调试,并最终发布ipa用于分享,需要以下几个步骤:[/align]
[align=left]1.自己为自己颁发一个证书用于为生成的程序签名;[/align]
[align=left]2.修改工程配置以及Xcode的配置文件和二进制文件以阻止其验证和签名;[/align]
[align=left]3.通过自定义生成步骤,用伪造的证书为应用程序签名;[/align]
[align=left]4.使用一点小技巧来生成ipa文件;[/align]
5.需要先越狱您的ios7&6系统的设备并通过Cydia安装AppSync
for ios4/5/6,iOS7请完美越狱并通过Cydia安装AppSync for ios7。
工具:iphone4
iOS7&6.1.2已完美越狱(二选一),MacBook Pro13inch,Xcode5&4.6.3(二选一),Plist
Editor(编辑plist文件使用)。
[align=left]正式进入正题:[/align]
[align=left]一、创建证书[/align]
打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。第一个步骤比较重要,必须要把名称命名为iPhone
Developer,将类型设定为代码签名,将"让我覆盖这些默认值"选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以!
二、修改Xcode的配置文件
1.请先将Xcode按Command+Q完全关闭。
2.修改配置文件:
按照该路径找到SDKSettings.plist然后进行编辑:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/SDKSettings.plist
将以下两段中的YES改为NO
<key>CODE_SIGNING_REQUIRED</key>
<string>YES</string>
和
<key>ENTITLEMENTS_REQUIRED</key>
<string>YES</string>
3.下面修改另外一个文件:
按照该路径找到Info.plist然后进行编辑:
Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist
将Info.plist中全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,他们分别在DefaultProperties分支下、OverrideProperties分支下和RuntimeRequirements分支下。
4.添加文件:
[align=left]连接互联网后在终端执行:[/align]
[align=left]mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements[/align]
[align=left]cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements[/align]
curl
-O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
[align=left]mv gen_entitlements.txt gen_entitlements.py[/align]
[align=left]chmod 777 gen_entitlements.py[/align]
如果没有联网,可以在/Applications/Xcode.app/Contents/Developer文件夹下创建一个iphoneentitlements文件夹,然后在该文件夹下手动创建一个gen_entitlements.py文件,并授予其执行权限(命令:sudo),这个文件的内容为:
#!/usr/bin/env python
import sys
import struct
if len(sys.argv) != 3:
print "Usage: %s appnamedest_file.xcent" % sys.argv[0]
sys.exit(-1)
APPNAME = sys.argv[1]
DEST = sys.argv[2]
if not DEST.endswith('.xml') and notDEST.endswith('.xcent'):
print "Dest must be .xml (for ldid) or.xcent (for codesign)"
sys.exit(-1)
entitlements = """
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>%s</string>
<key>get-task-allow</key>
<true/>
</dict>
</plist>
""" % APPNAME
f = open(DEST,'w')
if DEST.endswith('.xcent'):
f.write("\xfa\xde\x71\x71")
f.write(struct.pack('>L', len(entitlements)+ 8))
f.write(entitlements)
f.close()
三、修改工程设置(真机调试闪退的,请仔细的看此步骤,这步就是关键问题所在)
特别注意:本阶段之前的修改配置文件、准备脚本等,只需要做一次。但本阶段的操作,对每个需要真机调试的工程都要做一遍。
这个步骤的主要作用是支持真机调试,如果不做这个步骤,仍然可以通过步骤5来生成ipa在真机上运行,但是无法使用Xcode内置的调试器对在真机上运行的程序进行单步跟踪。如果您的程序在点击Run真机调试时秒退,请检查此步骤是否正确完成。
1.禁用Xcode自动的签名操作
将工程配置中所有的Code
Signing选项全部设为Don't Code Sign,如图。可能需要先点击“All”让这个选项显示出来。
2.添加自定义的生成后脚本(Xcode5配置请看后文PS部分)
在Build Phases中添加一个Phase,右下角的Add Build Phase,然后单击Add Run Script,输入以下脚本:
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" =="iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados"]; then
/Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py"my.company.${PROJECT_NAME}""${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer"--entitlements"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent""${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi
如图所示:
至此配置全部完成,下面就可以插上iPhone,重新选择生成目标来测试一下在线调试了!如果是第一次使用该设备调试,请先在Organizer中将设备切换为开发模式(iPhone右部的小绿点亮)。
四、生成IPA文件
如果我的程序调试好了,怎么才能发给别人用呢?正常情况下ipa文件是从Xcode的Organizer中输出的,但是我们没有证书,这样输出会产生错误。我们只能用个小技巧来完成这个操作了。
先将代码生成为Release目标,然后打开工程的输出文件夹,通常情况下这个目录是/Users/用户名/Library/Developer/Xcode/DerivedData/以工程名打头的文件夹/Build/Products/Release-iphoneos这个目录下有个xxx.app的文件,就是生成的程序了。把这个xxx.app拖到iTunes中,它会出现在应用程序那个列表中,然后再把它从iTunes的那个列表中拖出来(比如拖到桌面),它就这样变成xxx.ipa了!把这个.ipa发给别人,大家就可以跟您一起分享这个程序了。
PS:Xcode5在添加自定义的生成后脚本时,步骤不是按照Xcode4.6.3的配置,应该是在Xcode5里Build
Phases界面下,点击Xcode导航栏里的Editor,然后选择Add Build Phase--Add Run Script Build Phase,添加方法同上。
下载专区:
Xcode4.6.3下载地址:
http://pan.baidu.com/s/1wwZWI
Xcode5正式版下载地址:
http://pan.baidu.com/s/1DXWGl
Plist文件编辑器PList Editor下载:
PList
Editor.zip (80.07 KB, 下载次数: 446427)
[align=left] 众所周知,在Xcode上开发的程序只能在模拟器中运行,如果要放到真机上则要花费99美金购买开发者证书iDP。本文介绍的是在上一代Xcode4.6.3上演示的,Xcode5配合iOS7已经亲测完美使用,所以在没有iDP的情况下,要想将程序放到iPhone上调试,并最终发布ipa用于分享,需要以下几个步骤:[/align]
[align=left]1.自己为自己颁发一个证书用于为生成的程序签名;[/align]
[align=left]2.修改工程配置以及Xcode的配置文件和二进制文件以阻止其验证和签名;[/align]
[align=left]3.通过自定义生成步骤,用伪造的证书为应用程序签名;[/align]
[align=left]4.使用一点小技巧来生成ipa文件;[/align]
5.需要先越狱您的ios7&6系统的设备并通过Cydia安装AppSync
for ios4/5/6,iOS7请完美越狱并通过Cydia安装AppSync for ios7。
工具:iphone4
iOS7&6.1.2已完美越狱(二选一),MacBook Pro13inch,Xcode5&4.6.3(二选一),Plist
Editor(编辑plist文件使用)。
[align=left]正式进入正题:[/align]
[align=left]一、创建证书[/align]
打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。第一个步骤比较重要,必须要把名称命名为iPhone
Developer,将类型设定为代码签名,将"让我覆盖这些默认值"选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以!
二、修改Xcode的配置文件
1.请先将Xcode按Command+Q完全关闭。
2.修改配置文件:
按照该路径找到SDKSettings.plist然后进行编辑:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/SDKSettings.plist
将以下两段中的YES改为NO
<key>CODE_SIGNING_REQUIRED</key>
<string>YES</string>
和
<key>ENTITLEMENTS_REQUIRED</key>
<string>YES</string>
3.下面修改另外一个文件:
按照该路径找到Info.plist然后进行编辑:
Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist
将Info.plist中全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,他们分别在DefaultProperties分支下、OverrideProperties分支下和RuntimeRequirements分支下。
4.添加文件:
[align=left]连接互联网后在终端执行:[/align]
[align=left]mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements[/align]
[align=left]cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements[/align]
curl
-O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
[align=left]mv gen_entitlements.txt gen_entitlements.py[/align]
[align=left]chmod 777 gen_entitlements.py[/align]
如果没有联网,可以在/Applications/Xcode.app/Contents/Developer文件夹下创建一个iphoneentitlements文件夹,然后在该文件夹下手动创建一个gen_entitlements.py文件,并授予其执行权限(命令:sudo),这个文件的内容为:
#!/usr/bin/env python
import sys
import struct
if len(sys.argv) != 3:
print "Usage: %s appnamedest_file.xcent" % sys.argv[0]
sys.exit(-1)
APPNAME = sys.argv[1]
DEST = sys.argv[2]
if not DEST.endswith('.xml') and notDEST.endswith('.xcent'):
print "Dest must be .xml (for ldid) or.xcent (for codesign)"
sys.exit(-1)
entitlements = """
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>%s</string>
<key>get-task-allow</key>
<true/>
</dict>
</plist>
""" % APPNAME
f = open(DEST,'w')
if DEST.endswith('.xcent'):
f.write("\xfa\xde\x71\x71")
f.write(struct.pack('>L', len(entitlements)+ 8))
f.write(entitlements)
f.close()
三、修改工程设置(真机调试闪退的,请仔细的看此步骤,这步就是关键问题所在)
特别注意:本阶段之前的修改配置文件、准备脚本等,只需要做一次。但本阶段的操作,对每个需要真机调试的工程都要做一遍。
这个步骤的主要作用是支持真机调试,如果不做这个步骤,仍然可以通过步骤5来生成ipa在真机上运行,但是无法使用Xcode内置的调试器对在真机上运行的程序进行单步跟踪。如果您的程序在点击Run真机调试时秒退,请检查此步骤是否正确完成。
1.禁用Xcode自动的签名操作
将工程配置中所有的Code
Signing选项全部设为Don't Code Sign,如图。可能需要先点击“All”让这个选项显示出来。
2.添加自定义的生成后脚本(Xcode5配置请看后文PS部分)
在Build Phases中添加一个Phase,右下角的Add Build Phase,然后单击Add Run Script,输入以下脚本:
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" =="iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados"]; then
/Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py"my.company.${PROJECT_NAME}""${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer"--entitlements"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent""${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi
如图所示:
至此配置全部完成,下面就可以插上iPhone,重新选择生成目标来测试一下在线调试了!如果是第一次使用该设备调试,请先在Organizer中将设备切换为开发模式(iPhone右部的小绿点亮)。
四、生成IPA文件
如果我的程序调试好了,怎么才能发给别人用呢?正常情况下ipa文件是从Xcode的Organizer中输出的,但是我们没有证书,这样输出会产生错误。我们只能用个小技巧来完成这个操作了。
先将代码生成为Release目标,然后打开工程的输出文件夹,通常情况下这个目录是/Users/用户名/Library/Developer/Xcode/DerivedData/以工程名打头的文件夹/Build/Products/Release-iphoneos这个目录下有个xxx.app的文件,就是生成的程序了。把这个xxx.app拖到iTunes中,它会出现在应用程序那个列表中,然后再把它从iTunes的那个列表中拖出来(比如拖到桌面),它就这样变成xxx.ipa了!把这个.ipa发给别人,大家就可以跟您一起分享这个程序了。
PS:Xcode5在添加自定义的生成后脚本时,步骤不是按照Xcode4.6.3的配置,应该是在Xcode5里Build
Phases界面下,点击Xcode导航栏里的Editor,然后选择Add Build Phase--Add Run Script Build Phase,添加方法同上。
下载专区:
Xcode4.6.3下载地址:
http://pan.baidu.com/s/1wwZWI
Xcode5正式版下载地址:
http://pan.baidu.com/s/1DXWGl
Plist文件编辑器PList Editor下载:
PList
Editor.zip (80.07 KB, 下载次数: 446427)
相关文章推荐
- Xcode5&4.6.3 + iOS 7&6免证书开发+真机调试+生成ipa全攻略(提供Xcode下载)!
- 【iOS学习笔记】傻瓜式图文并茂,免99刀,xcode4.6.3免证真机测试
- Xcode5&4.6.3 + iOS 7&6免证书开发+真机调试+生成ipa全攻略(提供Xcode下载)!
- IOS 真机测试 Xcode出现"The identity used to sign the executable is no longer valid"
- 储备 - ios申请真机调试( xcode 5) -- 系列一
- Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略
- 如何使用Xcode分析调试在真机运行的UE4 IOS版游戏
- 解决低版本Xcode不支持高版本iOS真机调试
- Xcode 真机调试 iOS 应用的各种问题和解决方法
- Xcode 4.1/4.2/4.3/4.4 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- [iOS] Xcode 5 + iOS 7免证书(iDP)真机调试与生成IPA全攻略
- iOS 真机调试 Xcode 显示 device Error: device unavailable
- Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略
- iOS Xcode真机调试设备连接时,Divice里面一直提示“iphone名称” is busy: Processing symbol files.
- 【转】让Xcode支持iOS12.0 设备真机测试(不断更新真机支持包)Xcode 真机测试 iOS
- iOS——关于创建真机调试证书(发布证书,测试(调试)证书,推送调试证书)、iOS开发者账号申请 请用开发者账号去iTunes connect 查看状态
- Xcode4.5.1破解iOS免证书开发真机调试与ipa发布