本文共 3987 字,大约阅读时间需要 13 分钟。
……搞了几个小时终于把写的app装入到ios中,真心不容易,主要是不小花那99$,没办法,辛苦点就辛苦点吧。写的demo运行在自己的爱疯上,有点小激动,就像当初写的demo安装到android上。
准备的工具
1:Xcode5.1
2:越狱的iphone一台(如果不越狱那就准备99刀给苹果公司吧)
主要步骤
1:自己给自己创建一个证书用于为生成的程序签名,如android的签名钥匙。
2:修改工程配置以及Xcode的配置文件和二进制文件以阻止其验证和签名。 3:通过自定义生成步骤,用伪造的证书为应用程序签名。注意:这里说明下为什么要越狱的爱疯,因为你调试的程序使用的是你自己的签名,但是呢,iphone不承认你的这个签名,所以需要安装一个补丁包来安装你的app,这个补丁包就是AppSync,当然这个可以在Cydia里面下载安装到(在软件源中“添加”一个软件源,地址:http”//cydia.iphonecake.com/—>选择插件—>AppSync Unified下载安装就好了),这里不同版本的ios系统有不同的Appsync
第一步:创建证书
打开Finder—>实用工具—>打开“钥匙访问串.app”—>点击最上面导航栏的“钥匙访问串“(苹果标志旁边)—>证书助理—>创建证书.
这里主要注意:第一个步骤比较重要,必须要把名称命名为iPhone Developer,将类型设定为代码签名,将“让我覆盖这些默认值”选中。其他的默认就好,点击继续,下一步,继续完成就好了。第二步:修改Xcode的配置文件
在操作之前请首先将Xcode按Command+Q完全关闭。
1:使用命令终端进入iPhone SDK目录cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/
注意:不同版本的Xcode只是最后的版本号不同。在Xcode 5.0中是iPhoneOS7.0.sdk或者iPhoneOS7.1.sdk,更改下版本号就可以了。
2:终端备份原文件
sudo cp SDKSettings.plist SDKSettings.plist.orig
3:编辑配置文件
首先要打开这个文件所在目录(命令):open .
操作:在弹出的Finder窗口中双击SDKSettings.plist,会启动Xcode的图形界面,我们展开DefaultProperties分支,将下面的CODE_SIGNING_REQUIRED和ENTITLEMENTS_REQUIRED两个属性改为NO
4:编辑另外一个配置文件
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platformsudo cp Info.plist Info.plist.origopen .
在中端打开文件目录,在弹出的Finder窗口中双击打开Info.plist。将全部的XCiPhoneOSCodeSignContext修改成XCCodeSignContext,共有3处。分别在DefaultProperties分支下、RuntimeRequirements分支下和OverrideProperties分支下。
以上的步骤就对IOS 的SDK修改完成,这里只需要修改一次就好了。
第三步:准备自定义的生成脚本
保证电脑联网情况下在终端输入命令:
mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlementscd /Applications/Xcode.app/Contents/Developer/iphoneentitlementscurl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txtmv gen_entitlements.txt gen_entitlements.pychmod 777 gen_entitlements.py
如果电脑不能连接网络则需要手动创建一个gen_entitlements.py文件在iphoneentitlements文件夹里面,其中gen_entitlements.py文件内容为:
#!/usr/bin/env pythonimport sysimport structif len(sys.argv) != 3: print "Usage: %s appname dest_file.xcent" % sys.argv[0] sys.exit(-1)APPNAME = sys.argv[1]DEST = sys.argv[2]if not DEST.endswith('.xml') and not DEST.endswith('.xcent'): print "Dest must be .xml (for ldid) or .xcent (for codesign)" sys.exit(-1)entitlements = """""" % APPNAMEf = 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() application-identifier %s get-task-allow
第四步:修改工程设置
这里的话就需要每次创建项目都需要修改一次了,没办法,为了那99刀,还是习惯性的做吧。
这个步骤的主要作用是支持真机调试,如果不做这个步骤,仍然可以通过步骤5来生成ipa在真机上运行,但是无法使用Xcode内置的调试器对在真机上运行的程序进行单步跟踪。 1:禁用Xcode自动的签名操作 将工程配置中所有的Code Signing选项全部设为Don’t Code Sign,如图。2:添加自定义的生成后脚本 在Build Phases中添加一个Build Phase,输入以下脚本
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocateif [ "${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
在xcode5中需要点击导航条的Editor中添加,如图:
到这里,就基本上配置完成了,然后接下来就该iphone上场了,终于爱疯要上场了。
连接真机调试
1:在xcode界面情况下,找到MAC的顶部导航条,找打Window–>点击Organizer,界面如下:
这里因为我的手机已经是连接成功了,所以显示的是这些,如果是第一次连接真机,那么在左边的那一栏中,显示你的手机应该是”灰色的“,这个时候你选择你的iphone,然后右边会出现一个进度条,进度小下面有一个按钮”Use for Development“,点击该按钮,如果没出现,则重新拔插下手机,在进来就好了。点击”Use for development“ 会出现会要求输入Apple ID的对话框,直接点击取消cancle,
这时启用设备开发模式的进程会立即终止。设备名称旁边应该有一个黄灯。此时重新插拔设备,Organizer中会出现一个进度条),等这个进度条跑完,小灯就会变成绿色。这表示已经连接成功了!好了,爱疯已经连接成功了,接下来就使劲爱疯狂吧,运行一个demo到手机:
选择自己的设备,然后点击运行,xcode就编译程序,然后安装到手机,这过程中会出现提示 是否运行访问我们创建的 ”钥匙访问串“,这里选择允许。
FAQ:在运行过程中如果出现了类似
The identity used to sign the executable is no longer valid.这个错误,那这里一般都是你的iphone里面的AppSync不能兼容你的系统,可能需要更新下就ok了,到这里就完成了真机调试了,最后上张效果图ps:这里感谢提供参考资料。
转载地址:https://blog.csdn.net/leifengpeng/article/details/46811201 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!