欢迎访问本站,祝大家玩得愉快。

iPhone 免证书真机调试

IOS kany.wang 1672℃ 0评论

目前在XCode上开发的iOS程序只能在模拟器Simulator中运行,如果要放到真机上测试,需要苹果官方认证的开发者账号,购买开发者证书iDP,99美金一年!

经过谷爹和度娘的一番搜索之后,不对我必应比度娘好用点。找到了一些资料。可以进行真机测试了

必读:

  1. 首先你要有一台苹果手机或者苹果移动设备,没有的话你就不用继续看了,毕竟这个是真机测试来的;
  2. 你的手机需要先越狱,别问我怎么越狱我试过了还可以,不想越狱的同学,这里也放弃吧,毕竟需要越狱的;
  3. 越狱完成之后安装AppSync,这分版本的,不然你的手机也不能正常进行调试。
  4. 感谢你能看到这里,现在开始动手吧,一定注意不能越狱的手机就不要试了。

环境介绍:    

软件环境:Mac OS X 10.10.4 + Xcode 6.3 + IPhone 5S (IOS 8.3)

创建证书:

        创建证书的过程比较简单,在电脑上打开“其他-钥匙串访问”。然后在菜单栏里点击“钥匙串访问-证书助理-创建证书…”来打开向导。注意这里的三个地方,必须要把名称命名为iPhone Developer,将类型设定为代码签名,将”让我覆盖这些默认值”选中。之后的步骤什么都不用改,一路点击“确定”和“继续”,最后完成这个向导就可以了。

修改配置文件:

    如果Xcode在运行状态,请先 Command+Q将其 完全关闭。然后打开“其他-终端”,我们需要用到一些UNIX命令,可能看起来会比较繁琐。

  •     进入iPhone SDK,不需要指定到具体的版本号,iPhone SDK在Xcode 6.3中就是一个快捷方式的存在,不需要管;
  • cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/
    #备注:不同版本的Xcode最后的版本号不同。在Xcode 6.0中是 iPhoneOS.sdk,未来版本可能版本高一些,早期版本的就低一些。请根据实际情况自己改动。(如果实在不知道自己的版本号,可以用“ls”指令查看所有文件。)
  • 备份原文件,如果电脑设有密码,系统会提示你输入密码(输入后不会显示出来,敲回车即可)
  • cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/
    #备注:不同版本的Xcode最后的版本号不同。在Xcode 6.0中是 iPhoneOS.sdk,未来版本可能版本高一些,早期版本的就低一些。请根据实际情况自己改动。(如果实在不知道自己的版本号,可以用“ls”指令查看所有文件。)
    
  • 备份SDKSettings.plist配置文件
  • sudo cp SDKSettings.plist SDKSettings.plist.orig
    #当前会提示输入密码请输入本机登录密码即可
    #为了方便编辑打开当前目录
    open .
    #在弹出的Finder窗口中双击 SDKSettings.plist ,会启动Xcode的图形界面,展开 DefaultProperties 分支,将下面的ENTITLEMENTS_REQUIRED和CODE_SIGNING_REQUIRED两个属性改为 NO。
    #备注:这里可能会遇到系统提示【“SDKSettings.plist” is locked for editing……】,这是因为文件读写的权限问题,解决办法如下:
    sudo chmod -R 777 iPhoneOS.sdk
    
  • 编辑另外一个配置文件Info.plist
  • cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
    #备份当前的配置文件
    sudo cp Info.plist Info.plist.orig
    #打开当前的目录
    open .
    #在弹出的Finder窗口中双击打开 Info.plist 。分别在 DefaultProperties 分支下、 RuntimeRequirements 分支下和 OverrideProperties 分支下,共有3处,将全部的 XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext 。
    
  • 准备自定义的生成后脚本(此步骤需在联网状态下进行)
  • sudo mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements
    cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements
    sudo curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    sudo mv gen_entitlements.txt gen_entitlements.py
    sudo chmod 777 gen_entitlements.py
    #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()

修改工程配置

  1. 禁用Xcode自动的签名操作
    将工程配置“Build Settings”中所有的Code Signing选项全部设为Don’t Code Sign,如图。


  2. 添加自定义的生成后脚本 在Build Phases中,点击左上角的”+“号,添加一个”New Run Script 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

参考资料

  1. XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)
  2. Xcode4.6+ iOS 6免证书开发+真机调试+生成ipa

联系方式

  • 小伙伴群:J2EE技术交流

打赏

转载请注明:懒人屋 » iPhone 免证书真机调试

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址