iOS 免费真机调试

  1. 打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。第一个步骤比较重要,必须要把名称命名为iPhone Developer,将类型设定为代码签名,将"让我覆盖这些默认值"选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以!

    iOS 免费真机调试_第1张图片
    iOS 免费真机调试_第2张图片
    END

二 修改Xcode的配置文件

  1. 1

    1.请先将Xcode完全退出,可以按Command+Q关闭。

  2. 2

    2.修改配置文件:

    按照该路径找到SDKSettings.plist然后进行编辑:

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/SDKSettings.plist

    将以下两段中的键值YES改为NO:CODE_SIGNING_REQUIRED和ENTITLEMENTS_REQUIRED

    如果修改时文本被锁定没有修改权限,可以找到SDKSettings.plist文件,点击文件---显示文件---打开右下角的锁---输入密码解锁---修改共享与权限里面的 改为读与写权限,这样就可以修改了

    iOS 免费真机调试_第3张图片
    iOS 免费真机调试_第4张图片
  3. 3

    3.下面修改另外一个文件:

    按照该路径找到Info.plist然后进行编辑:

    Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist

    将Info.plist中全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,他们分别在DefaultProperties分支下、OverrideProperties分支下和RuntimeRequirements分支下。同样会遇到上面权限的问题。

    iOS 免费真机调试_第5张图片
    iOS 免费真机调试_第6张图片
  4. 4

    4.添加文件:

    连接互联网后在终端执行:

    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

    如果没有联网,可以在/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()

    iOS 免费真机调试_第7张图片
    END

三 修改工程设置

  1. 1

    特别注意:本阶段之前的修改配置文件、准备脚本等,只需要做一次。但本阶段的操作,对每个需要真机调试的工程都要做一遍。

            这个步骤的主要作用是支持真机调试,如果不做这个步骤,仍然可以通过步骤5来生成ipa在真机上运行,但是无法使用Xcode内置的调试器对在真机上运行的程序进行单步跟踪。如果您的程序在点击Run真机调试时秒退,请检查此步骤是否正确完成。

    1.禁用Xcode自动的签名操作

    将工程配置中所有的Code Signing选项全部设为Don't Code Sign,如图。可能需要先点击“All”让这个选项显示出来。

    iOS 免费真机调试_第8张图片
  2. 2

    2.添加自定义的生成后脚本

    在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

    注意:在Xcode5.0之前时图一,在之后是图二

    iOS 免费真机调试_第9张图片
    iOS 免费真机调试_第10张图片
    END

四、生成IPA文件

  1.         如果我的程序调试好了,怎么才能发给别人用呢?正常情况下ipa文件是从Xcode的Organizer中输出的,但是我们没有证书,这样输出会产生错误。我们只能用个小技巧来完成这个操作了。

            先将代码生成为Release目标,然后打开工程的输出文件夹,通常情况下这个目录是/Users/用户名/Library/Developer/Xcode/DerivedData/以工程名打头的文件夹/Build/Products/Release-iphoneos这个目录下有个xxx.app的文件,就是生成的程序了。把这个xxx.app拖到iTunes中,它会出现在应用程序那个列表中,然后再把它从iTunes的那个列表中拖出来(比如拖到桌面),它就这样变成xxx.ipa了!把这个.ipa发给别人,大家就可以跟您一起分享这个程序了。

    END

你可能感兴趣的:(iOS 免费真机调试)