iOS开发--底层开发之越狱开发第一篇

作越狱开发也有一些时间了,有不少东西想总结一下,但愿给他人一些借鉴,也是本身对过去开发经历的一些总结。我的不推荐使用盗版,这里主要以技术介绍为主。git

这个系列里面主要介绍怎样进行越狱开发,涉及到如下几个方面:github

  • (1)主要涉及到越狱市场的创建,在App内部实现ipa的安装和卸载以及更新。参照的对象就是91助手,25pp,同步推那样的应用。创建一个盗版的App Store.固然了,若是经过299刀的企业证书的话,是不须要经过Cydia的,直接经过网页连接就能够实现app的推广,有必定的风险。这里面涉及到一些协议,后面会进行介绍。
  • (2)在App内部实现壁纸和铃声的替换。这个过程涉及到的东西不少,特别是铃声的替换,iPhone里面很是麻烦;
  • (3)一些越狱插件的开发,经过里面有些插件很是好用,合理,并且很是美观漂亮。

这里先从App内部安装ipa包开始讲,后面逐步把上面提到的3点所有讲完。vim

通常状况下安装91助手,同步推这样的应用须要手机越狱,同时安装AppSync,这样才能使用,因此进行开发的必备条件也是如此。app

上传的demo工程的地址,个人github连接:https://github.com/easonoutlook/IPAInstaller工具

以前一直在fork别人的东西,也没作什么贡献,从如今开始,为开发为开源,作一点本身的贡献。测试

 

进入正题:ui

须要的工具和环境:spa

 

一、修改SDKSettings.plist文件插件

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

将这个目录下的 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/

 

二、给工程添加相应的权限,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签名。后面再介绍。

 

三、实现越狱安装的代码:

复制代码
复制代码
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目录中,能够自行查看。

 

四、编译生成App文件

由于须要给APP签名加权限,因此不要生成IPA文件,而是生成APP文件。等把签名与权限加好后,再手动用APP制做IPA文件。

 在Xcode中选择设备(IOS Device)(图3),编译(Build)(图4)。编译完成后,在工程的Products文件夹中能够看到刚刚编译好的APP文件,右键Show in Finder(图5),就能够在文件夹中显示。将APP复制到一个别的文件夹中,什么地方均可以,后面须要用到。

 

五、制做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的名字是同样的。  若是没有输出错误信息或是卡住(就是敲回车后没反应)就是添加权限成功了。

 

六、生成ipa文件,安装

新建一个文件夹,命名为“Payload”。将刚刚添加好权限的APP文件放到这个文件夹中。右键“压缩Payload”,获得一个“.zip”文件,将这个ZIP文件的后缀名改成“.ipa”。好了,IPA文件就制做完成了。

而后经过itools安装,测试刚刚生成的文件

 

整合了不少资源,有些地方弄的比较凌乱,后面加以完善

相关文章
相关标签/搜索