ios 越獄開發(應用安裝)

http://www.cnblogs.com/easonoutlook/p/3220429.html

做越獄開發也有一些時間了,有很多東西想總結一下,希望給他人一些借鑑,也是自己對過去開發經歷的一些總結。個人不推薦使用盜版,這裏主要以技術介紹爲主。

這個系列裏面主要介紹怎樣進行越獄開發,涉及到以下幾個方面:

(1)主要涉及到越獄市場的建立,在App內部實現ipa的安裝和卸載以及更新。參照的對象就是91助手,25pp,同步推那樣的應用。建立一個盜版的App Store.當然了,如果通過299刀的企業證書的話,是不需要通過Cydia的,直接通過網頁鏈接就可以實現app的推廣,有一定的風險。這裏面涉及到一些協議,後面會進行介紹。

(2)在App內部實現壁紙和鈴聲的替換。這個過程涉及到的東西很多,特別是鈴聲的替換,iPhone裏面非常麻煩;

(3)一些越獄插件的開發,通過裏面有些插件非常好用,合理,而且非常美觀漂亮。

這裏先從App內部安裝ipa包開始講,後面逐步把上面提到的3點全部講完。

一般情況下安裝91助手,同步推這樣的應用需要手機越獄,同時安裝AppSync,這樣才能使用,所以進行開發的必備條件也是如此。

上傳的demo工程的地址,我的github鏈接:https://github.com/easonoutlook/IPAInstaller

之前一直在fork別人的東西,也沒做什麼貢獻,從現在開始,爲開發爲開源,做一點自己的貢獻。

 

進入正題:

需要的工具和環境:

A. iPhone or iPad越獄,安裝AppSync

B. Xcode安裝 Command Line Tools

C. 下載最新版本的ldid https://github.com/downloads/rpetrich/ldid/ldid.zip

1、修改SDKSettings.plist文件

我用的是Xcode4.6.3版本,iPhone的版本是6.1.2, 路徑爲:/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/

將這個目錄下的 SDKSettings.plist裏面的CODE_SIGNING_REQUIRED置爲NO

執行命令爲:

轉到目錄下

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

將原有文件備份

sudo cp SDKSettings.plist SDKSettings.plist.orig

對SDKSettings.plist文件進行編輯

sudo vim SDKSettings.plist

將下面對應的字段改爲NO
<key>CODE_SIGNING_REQUIRED</key>
<string>YES</string>  // 默認爲YES, 需要改爲NO

此操作參考的路徑如下:http://kqwd.blog.163.com/blog/static/4122344820117191351263/

2、給工程添加相應的權限,iOS6裏面需要賦予權限纔可以,iOS5之前不需要此操作

新建一個plist文件,命名爲entitlements.

創建一個plist

將plist文件改爲:

複製代碼
<?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>com.apple.private.mobileinstall.allowedSPI</key>
        <array>
            <string>Install</string>
            <string>Browse</string>
            <string>Uninstall</string>
            <string>Archive</string>
            <string>RemoveArchive</string>
        </array>
    </dict>
</plist>
複製代碼

將Code Signing 的Code Signing Entilements設置爲剛剛創建的entitlements.plist文件

後面還需要一個手續,將生產的app文件用ldid簽名。後面再介紹。

3、實現越獄安裝的代碼:

複製代碼
typedef NSDictionary *(*PMobileInstallationLookup)(NSDictionary *params, id callback_unknown_usage);
NSDictionary *IPAInstalledApps()
{
    void *lib = dlopen("/System/Library/PrivateFrameworks/MobileInstallation.framework/MobileInstallation", RTLD_LAZY);
    if (lib)
    {
        PMobileInstallationLookup pMobileInstallationLookup = (PMobileInstallationLookup)dlsym(lib, "MobileInstallationLookup");
        if (pMobileInstallationLookup)
        {
            NSArray *wanted = nil;//[NSArray arrayWithObjects:@"com.celeware.IPADeploy",@"com.celeware.celedial",nil]; Lookup specified only
            NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"User", @"ApplicationType", wanted, @"BundleIDs",nil];
            NSDictionary *dict = pMobileInstallationLookup(params, NULL);
#ifdef DEBUG
            NSLog(@"%@", dict);
#endif
            return dict;
        }
    }
    return nil;
}
複製代碼

所有代碼均在之前的github目錄中,可以自行查看。

4、編譯生成App文件

因爲需要給APP簽名加權限,所以不要生成IPA文件,而是生成APP文件。等把簽名與權限加好後,再手動用APP製作IPA文件。

 在Xcode中選擇設備(IOS Device)(圖3),編譯(Build)(圖4)。編譯完成後,在工程的Products文件夾中可以看到剛剛編譯好的APP文件,右鍵Show in Finder(圖5),就可以在文件夾中顯示。將APP複製到一個別的文件夾中,什麼地方都可以,後面需要用到。

 

5、製作ipa文件

將之前提到的ldid下載好後,將ldid文件放到/usr/bin中。

比如在 Download 目錄下, sudo -i 

然後 cp ldid /usr/bin/即可將文件拷貝到/usr/bin中。

然後對之前生成的文件,進行ldid簽名

這個命令中“ldid -S ,“ldid”與“-S”之間有一個空格。“-S”與“entitlements.xml”之間沒有空格。“entitlements.xml”就是上面說到的XML文件,如果你的XML不是這個名,請將命令修改爲你的XML文件名即可。

-Sentitlements.xm”與“ipainstall.app”之間有一個空格。“ipainstall”是剛剛生成的APP文件,如果你的名字不一樣,請修改爲你的名字。“/“後面和APP的名字是一樣的。  如果沒有輸出錯誤信息或是卡住(就是敲回車後沒反應)就是添加權限成功了。

6、生成ipa文件,安裝

新建一個文件夾,命名爲“Payload”。將剛剛添加好權限的APP文件放到這個文件夾中。右鍵“壓縮Payload”,得到一個“.zip”文件,將這個ZIP文件的後綴名改爲“.ipa”。好了,IPA文件就製作完成了。

然後通過itools安裝,測試剛剛生成的文件

 

整合了很多資源,有些地方弄的比較凌亂,後面加以完善

參考資源鏈接:

http://since2006.com/blog/240/ios6-mobileinstallationinstall

http://blog.sina.com.cn/s/blog_9cd1705d0101l4bo.html

http://kqwd.blog.163.com/blog/static/4122344820117191351263/

http://blog.csdn.net/linkai5696/article/details/5924356

http://www.yonsm.net/post/553

http://stackoverflow.com/questions/14871748/how-do-i-change-my-applications-entitlements-to-com-apple-backboard-client

http://stackoverflow.com/questions/13817569/how-to-programatically-install-a-ipa-file-in-ios-6/15062538#15062538

http://since2006.com/blog/240/ios6-mobileinstallationinstall

http://hi.baidu.com/prognostic/item/831b622202b2dd0f72863e9c

http://www.vsyo.com/a/t/89895554d4043c5a

http://mobile.dotblogs.com.tw/cmd4shell/archive/2013/03/26/98967.aspx

發佈了44 篇原創文章 · 獲贊 4 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章