先说一下环境,系统是 mac 10.10.4 ,Xcode 6.3,iphone 6 plus,ios 8.2 已越狱

这种办法手机必须得越狱,没有越狱的就不用试了,去taobao买个证书折腾折腾,说不定也行,我没试过,可以的话请告知我


OK,进入正题,这里有几个问题

1、Xcode6.3 sdk只有ios8.3,想要在ios8.2的手机上调试,就需要安装ios 8.2 的sdk,在Xcode 升级完之后,旧版本的sdk会被删掉,所以要装旧版本的sdk,就必须要重新下载旧版本的Xcode,我这里下载的是Xcode 6.2 Beta版,安装完之后,在应用程序里面,找到Xcode Beta,显示包内容

sdk 目录 /Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

把ios8.2的sdk复制到Xcode 6.3同样的目录下面,这里需要注意的是iPhoneOS.sdk这个目录名会重复,先重命名,随便在后面加个123都行,复制完之后


重启Xcode就可以看到有ios 8.2 的sdk了。

2、创建证书,这个网上有很多,我这里随便说一下就行,首先打开钥匙串访问 -> 证书助理 -> 创建证书


名称:iPhone Developer,


一路继续,

在证书信息,电子邮件地址那里填你的Apple ID


接下来又是一路的继续,最后点击创建就可以了。

3、创建签名脚本,创建一个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()

然后复制到,/Applications/Xcode.app/Contents/Developer/iphoneentitlements 目录下面,iphoneentitlements默认是没有的,需要手动创建,需要sudo权限,复制文件也是

4、差不多了,打开Xcode,确保你的Xcode是完全退出,然后重新打开的,打开之后,点击你的工程,在右边的找到,sdk设置为 ios8.2,并且设置为不签名



在Build Phases 里面新建一个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

,要注意的是 my.company.${PROJECT_NAME} ,这个要跟你的工程Identify匹配,否则会失败,可以在这里查看,如果不对,可以修改



最后,用usb连上你的iphone,然后Xcode提示的时候选择你的Iphone,不要选择模拟器,几秒钟之后你的手机上就会自动你的app了,另外如果想讲app打包成ipa,可以先用Xcode调试一遍,装到手机里面,然后用itools导出即可

至此Xcode 6.3 免证书真机调试 告一段落

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐