做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结。个人不推荐使用盗版,这里主要以技术介绍为主。

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

  • (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 onlyNSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"User", @"ApplicationType", wanted, @"BundleIDs",nil];NSDictionary *dict = pMobileInstallationLookup(params, NULL);
#ifdef DEBUGNSLog(@"%@", dict);
#endifreturn 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安装,测试刚刚生成的文件

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

转载于:https://www.cnblogs.com/stronger-ios-lcx/p/5674023.html

iOS开发--底层开发之越狱开发第一篇相关推荐

  1. 小工具开发笔记—IE自动填表器—第一篇:你好,世界

    系列导航: 小工具开发笔记-IE自动填表器-第零篇:序 小工具开发笔记-IE自动填表器-第一篇:你好,世界 继上篇博文初步介绍了小工具,本文就作为开发笔记正文第一篇,来叙述一下如何使用C++开发一个完 ...

  2. 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)

    转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50515359 参考 :  -- 官方文档 : https://develope ...

  3. iOS-通过Message框架开发一个Sticker Pack(无需代码)(第一篇)

    一.概述 iOS 10 引入了Message框架,开发者可以为苹果内置的Messages应用开发扩展. 目的:通过开发一个应用扩展,可以让用户个能应用在Message应用中交互. Message框架支 ...

  4. OK6410开发板资源介绍---嵌入式回归第一篇

    一晃时隔大半年了,今天起重新开始学习国嵌的OK6410 精通嵌入式课程,之前学到第四季老大视频没更完,而且更的实在太慢了,大学那会刚开始学的时候也走了不少弯路,不过当时充满了学习的激情,前面的更的视频 ...

  5. 从零开始开发标准的s57电子海图第一篇--电子海图概述(共100篇)

    电子海图( Electronic Chart,EC)和电子海图显示与信息系统( ElectronicChart Display and System, ECDIS)及电子海图系统( Electroni ...

  6. [游戏开发]Python打表工具系列 [第二篇] [打表流程描简述]

    [上一篇链接] [游戏开发]Python打表工具系列 [第一篇][IDE开发环境部署] VSCode Python环境调试_Little丶Seven的博客-CSDN博客 [前言] 第二篇文章是对流程的 ...

  7. 开篇 关于iOS越狱开发

    本文版权归扣丁书屋所有,转载请保留此说明. 越狱与开发 iPhone 在10年前问世时,并没有第三方应用,连一个游戏都没有,但是 Nicholas Allegra 等越狱开发者将苹果的智能手机推到了极 ...

  8. IOS开发高手课第一篇 构建自己的IOS开发知识体系

    开篇词 | IOS开发锚定一个点,然后在这个点上深耕 你好,我是戴铭,欢迎你加入我的 iOS 开发专栏. 说起 iOS 开发,自然是绕不开 iPhone 和 App Store 这两个词.多少年过去了 ...

  9. iOS越狱开发theOS搭建

    iOS越狱开发theOS搭建 越狱环境搭建 TheOS Theos.最初由DHowett进行开发,由于DHwoett去了微软,不再有时间维护了,所以Adam Demasi(kirb)接手了他的工作,并 ...

最新文章

  1. PCB模拟地和数字地的处理
  2. AutoScan-收集监视及办理器械
  3. 服务器系统核心和带gui区别,Windows Server 2012图形用户界面(GUI)和服务器核心(Server Core)之间的切换...
  4. php解escape,PHP下escape解码函数用法示例
  5. java设计模式----简单工厂
  6. LwIP协议栈之数据包pbuf
  7. B2C电商系统源码 在线商城源码
  8. 忘记Apple ID密码,如何移除iCloud激活锁
  9. SkeyeARS 超高清8K视频录像检索、 回放、控制解决方案
  10. 数字图像处理 离散余弦变换(DCT)和峰值信噪比(PSNR)
  11. 微信小程序_阿里云api人脸识别
  12. 输入月份自动生成excel考勤表,周末高亮,内容可以勾选
  13. 快速查询hive数据仓库表中的总条数
  14. 王森版c语言课后题答案,《C语言编程基础第2版》王森-上机解答.doc
  15. rdkit smiles支持和扩展
  16. OSChina 周二乱弹 ——有一天你当了程序员巴巴
  17. 误报率、故障检测率、漏报率、虚警率、误警率等指标异同及计算公式
  18. python基础 多点坐标 绘制折线图 计算两点距离
  19. Codeforces1603 B. Moderate Modular Mode(数学)
  20. “爱运动管理系统”培训结业考试卷

热门文章

  1. 华为HMS的电商故事:新入口、新引擎、新体验
  2. spark和kafka_如何使用Kafka API入门Spark流和MapR流
  3. (附源码)计算机毕业设计Java宠物之家
  4. Loadrunner-Pacing步长
  5. 人工智能成最强“风口” 基金多路径布局
  6. WCF 扩展一:格式化Web服务请求XML
  7. python中elif老是出错_Python中的Elif语法错误
  8. 冒泡排序 (C语言)
  9. 计算机应用技术必须买笔记本吗,网吧里的电脑能买吗?技术员说出真相,能不能买关键要看这三点!...
  10. 一个完整项目的生命周期,不是上线就结束了