iOS越狱开发(一)
做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结。个人不推荐使用盗版,这里主要以技术介绍为主。
这个系列里面主要介绍怎样进行越狱开发,涉及到以下几个方面:
(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
此操作参考的路径如下: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://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
iOS越狱开发(一)的更多相关文章
- 关于ios越狱开发的那些事
也许吧,每每接触某些新东西的时候,都有点犯晕吧,这不是应该要的. 第一次接触ios越狱开发,也是这样吧.这篇主要是从无到有的说一下ios越狱的开发,网上很多的教程大部门都比较旧了吧,放在新设备上总是出 ...
- 【iOS越狱开发】如何将应用打包成.ipa文件
在项目开发中,我们常常需要将工程文件打包成.ipa文件,提供给越狱的iphone安装. 下面是一种方法: 1.首先应该给工程安装好配置文件(这里不再敖述),在ios device的状态下,运行成功. ...
- theos初探:ios越狱开发教程
开发环境搭建回顾 现在已经在windows上安装好了theos了.在上一篇中都已经讲了,开发环境主要部件就是: 1.theos,主要包含了使用make时的makefile模板文件.包含了各种库和框架的 ...
- ios越狱开发第一次尝试记录
1.THEOS的makefile文件中的THEOS_DEVICE_IP要写在第一行 2.如果make package install报错 dpkg status database is locked ...
- IOS越狱开发之——进程通讯
Mac OS下的IPC方式种类很多,大约有下面几种. 1. Mach API 2. CFMessagePort 3. Distributed Objects (DO) 4. Apple events ...
- iOS越狱开发手记 - iOS9.3 dyld_decache不能提取arm64的dyld的解决方法
参考以下文章 http://iosre.com/t/when-dyld-decache-fails-on-dyld-shared-cache-arm64-dsc-extractor-saves-our ...
- IOS越狱开发错误解决
Questions: haseScriptExecution Run\ Script /Users/jun/Library/Developer/Xcode/DerivedData/ButtonMa ...
- IOS越狱开发环境搭建
1:安装 mac ports 2:安装DPKG, 在终端输入sudo port -f install dpkg即可安装 3:安装theos Theos是一个基于Make的编译环境,我们正是用它来编译生 ...
- ios越狱开发
theos/Logos常用命令 %hook 用的最多,意思是钩住一个类. %hook SpringBoard %end %new (v@:) 新建方法 v是返回值@代表参数名 %new(v@:@i) ...
随机推荐
- poj 2482 Stars in Your Window (线段树:区间更新)
题目链接:http://poj.org/problem?id=2482 读完题干不免有些心酸(
- 如何解决SoftekBarcode.dll加载失败的问题
本文转自:慧都控件网 Softek Barcode Reader Toolkit是专门从事于条形码读取技术的软件公司Softek旗下一款著名的条码读取工具包.最近有部分用户反映在运行此工具包时会遇到“ ...
- 一款免费支持PDF、word、excel、PPT、jpeg之间互转线上软件
偶然发现的一款免费支持PDF.word.excel.PPT.jpeg之间互转,支持合并pdf.加密解密PDF的线上软件,首先声明,不是广告党,我自己试用过,确实是目前我用过最好用的,如果有朋友有更好的 ...
- [置顶]PADS PCB功能使用技巧系列之NO.001- 如何走蛇形线?
蛇形线是布线过程中常用的一种走线方式,其主要目的是为了调节延时满足系统时序设计要求,但是设计者应该有这样的认识:蛇形线会破坏信号质量,改变传输延时,布线时要尽量避免使用,因此一块PCB上的蛇形线越多并 ...
- Windows下mysql忘记root密码的解决方法
1. 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用命令: net stop mysql 打开第一个cmd窗口,切换到mysql的bin目录,运行命令: mysql ...
- Drupal资源
以下是一些Drupal的常用资源. www.drupal.org:Drupal官网,拥有最全 www.acquia.com:Drupal奠基人Dries主导的专业网站,有著名的Aquia平台,功能类似 ...
- Bullet物理引擎在OpenGL中的应用
Bullet物理引擎在OpenGL中的应用 在开发OpenGL的应用之时, 难免要遇到使用物理来模拟OpenGL中的场景内容. 由于OpenGL仅仅是一个关于图形的开发接口, 因此需要通过第三方库来实 ...
- [leetcode 37]sudoku solver
1 题目: 根据给出的数独,全部填出来 2 思路: 为了做出来,我自己人工做了一遍题目给的数独.思路是看要填的数字横.竖.子是否已经有1-9的数字,有就剔除一个,最后剩下一个的话,就填上.一遍一遍的循 ...
- 解剖SQLSERVER 完结篇 关于Internals Viewer源代码
解剖SQLSERVER 完结篇 关于Internals Viewer源代码 大家可能都用过Internals Viewer这个软件 <查看SQLSERVER内部数据页面的小插件Internals ...
- 强大好用的"文本"编辑器
1 editplugs 说明:EditPlus是一款由韩国 Sangil Kim (ES-Computing)出品的小巧但是功能强大的可处理文本.HTML和程序语言的Windows编辑器,你甚至可以通 ...