97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見(jiàn)教育科技集團(tuán) >> iOS資料 >> iOS開(kāi)發(fā)入門(mén):Xcode免證書(shū)真機(jī)調(diào)試  
 
iOS開(kāi)發(fā)入門(mén):Xcode免證書(shū)真機(jī)調(diào)試
分享到:

xcode是開(kāi)發(fā)phone、ipad的必備開(kāi)發(fā)工具,開(kāi)發(fā)的程序可以通過(guò)xcode自帶的iphone、ipad模擬器運(yùn)行,但是不能把程序傳到真實(shí)的設(shè)備上進(jìn)行調(diào)試和運(yùn)行。開(kāi)發(fā)者必須購(gòu)買(mǎi)99美元/年的開(kāi)發(fā)賬戶,才能再真機(jī)上運(yùn)行和調(diào)試程序,本文就是講述如何通過(guò)破解xcode,使得用戶可以不需要購(gòu)買(mǎi)99美元開(kāi)發(fā)賬戶,就能在真機(jī)上調(diào)試程序。

注:運(yùn)行程序的iphone或ipad必須要越獄,而且開(kāi)發(fā)人員如果在appstore上發(fā)布程序,那就必須購(gòu)買(mǎi)開(kāi)發(fā)賬戶。

1、創(chuàng)建個(gè)人證書(shū)(使用實(shí)用工具-鑰匙串訪問(wèn) 命令創(chuàng)建,具體步驟在網(wǎng)上有很詳細(xì)的介紹)。(非必要步驟)

新建立的個(gè)人證書(shū)沒(méi)有經(jīng)過(guò)蘋(píng)果認(rèn)證,是不可信證書(shū),因此在正常情況下,xcode不可能使用這個(gè)證書(shū),所以必須對(duì)xcode進(jìn)行破解才行。不過(guò)破解xcode之后,使用不可信的偽證書(shū)和不使用證書(shū)的效果一樣的,因此這個(gè)步驟并不是必須的。

2、修改Xcode的配置文件和二進(jìn)制文件,破解xcode。

這是至關(guān)重要的步驟,對(duì)xcode進(jìn)行破解,才能讓其不使用證書(shū)或使用偽造證書(shū)向iphone上傳和調(diào)試ios程序。

保證Xcode處于關(guān)閉狀態(tài),命令行終端,復(fù)制粘貼下面的代碼:

#!/bin/bash
    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf “\x8f\x2a\x00\x00″ >> working
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=1 skip=127504 seek=127504
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support

以上代碼對(duì)support.xcplugin文件進(jìn)行來(lái)修改。

3、修改xcode的配置文件

①cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/

新增如下兩項(xiàng):

PROVISIONING_PROFILE_ALLOWED = NO
    PROVISIONING_PROFILE_REQUIRED = NO

②替換“/Developer/Platforms/iPhoneOS.platform/Info.plist”文件部分單詞:

將所有“XCiPhoneOSCodeSignContext”替換為“XCCodeSignContext”

4、打開(kāi)xcode,修改具體項(xiàng)目的配置(此步驟以后在每次新建項(xiàng)目的時(shí)候都得進(jìn)行)

開(kāi)啟Xcode->然后打開(kāi)自己的項(xiàng)目->菜單選擇(Project>>Edit Project Setting)->選擇“Build”面板->找到Code Signing Identity項(xiàng),并將“Code Signing Identity”更改賦值。兩種方法:

1)如果你建立來(lái)偽造的證書(shū)“iPhone Developer”(名字可以隨便起),這里就可以選擇你建立證書(shū)的名字。

2)如果沒(méi)有建立證書(shū),這里選擇“Don't Code Sign”

5、建立Code Signing Entitlements文件。

沒(méi)有這個(gè)文件,雖然程序可以上傳到iphone上運(yùn)行,但是xcode不能調(diào)試iphone上的程序。

建立Code Signing Entitlements有兩種方法:

1)方法一:利用腳本文件進(jìn)行建立(注意,此方法我在實(shí)驗(yàn)時(shí),沒(méi)有成功,正在查找原因,添加的腳本沒(méi)有執(zhí)行)

①連接互聯(lián)網(wǎng)后執(zhí)行
    mkdir /Developer/iphoneentitlements401
    cd /Developer/iphoneentitlements401
    curl -O //www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py

注意:這里的新建立的目錄iphoneentitlements401 名稱(chēng)可以隨便起,但在后面腳本文件使用時(shí)需注意目錄名稱(chēng)統(tǒng)一。

②添加自定義的生成腳本

在Build Phases中添加一個(gè)Phase,右下角的Add Build Phase,然后單擊Add Run Script,輸入以下腳本

export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/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

2)方法二:手工添加文件

①在工程中按照這個(gè)執(zhí)行創(chuàng)建一個(gè)名為:Entitlement.plist 文件,具體方法是:打開(kāi) File Menu, 選擇 New File -> iPhone OS -> Code Signing -> Entitlements. Name the file “Entitlements.plist" ,然后點(diǎn)擊 ‘Finish’.

②打開(kāi) 這個(gè) “Entitlement.plist"文件,將 “Can be debugged”屬性值改為 “YES”,將“get-task-allow”屬性值改為“YES”。(建立的時(shí)候,默認(rèn)好像就是YES)

③將Code Signing Entitlements 那項(xiàng)的值改為剛剛新建得“Entitlements.plist".

經(jīng)過(guò)上述5個(gè)步驟,就可以在iphone上免證書(shū),調(diào)試程序了。

附1:生成IPA文件

如果程序調(diào)試好了,怎么才能發(fā)給別人用呢?正常情況下IPA文件是從Xcode的Organizer中輸出的,但是我們沒(méi)有證書(shū),這樣輸出會(huì)產(chǎn)生錯(cuò)誤。我們只能用個(gè)小trick來(lái)完成這個(gè)操作了。

先將代碼生成為Release目標(biāo),然后打開(kāi)工程的輸出文件夾,通常情況下這個(gè)目錄是

/Users/你都用戶名/Library/Developer/Xcode/DerivedData/以工程名打頭的文件夾/Build/Products/Release-iphoneos

這個(gè)目錄下有個(gè).app的文件,就是生成的程序了。把這個(gè).app拖到iTunes中,它會(huì)出現(xiàn)在應(yīng)用程序那個(gè)列表中,然后再把它從iTunes的那個(gè)列表中拖出來(lái)(比如拖到桌面),就變成.ipa了。

附2: gen_entitlements.py 文件具體內(nèi)容

#!/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()

 更多相關(guān)文章

·iOS開(kāi)發(fā)入門(mén):Xcode調(diào)試技巧
·iOS開(kāi)發(fā)入門(mén):Xcode常用快捷鍵
·iOS開(kāi)發(fā)入門(mén):Xcode
·iOS開(kāi)發(fā)入門(mén):Cocoa Touch層
·iOS開(kāi)發(fā)入門(mén):Cocoa與Cocoa Touch的區(qū)別