Xcode5.1和IOS8.3真机调试


……搞了几个小时终于把写的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.platform
sudo cp Info.plist Info.plist.orig
open .

在中端打开文件目录,在弹出的Finder窗口中双击打开Info.plist。将全部的XCiPhoneOSCodeSignContext修改成XCCodeSignContext,共有3处。分别在DefaultProperties分支下、RuntimeRequirements分支下和OverrideProperties分支下。

以上的步骤就对IOS 的SDK修改完成,这里只需要修改一次就好了。


第三步:准备自定义的生成脚本

保证电脑联网情况下在终端输入命令:

mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements
cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py

如果电脑不能连接网络则需要手动创建一个gen_entitlements.py文件在iphoneentitlements文件夹里面,其中gen_entitlements.py文件内容为:

#!/usr/bin/env python
import sys
import struct
if 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 = """
<?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()

第四步:修改工程设置

这里的话就需要每次创建项目都需要修改一次了,没办法,为了那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_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

在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:这里感谢http://kuangqi.me/ios/ios-development-without-idp/提供参考资料。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值