前言

之前写过一篇非越狱手机安装ipa包的方法,然而现在已经不能用了,不仅会报警告“–resource-rules has been deprecated in Mac OS X >= 10.10”,而且苹果在iOS8.1.3系统以后加强了对ipa安装包签名的验证,主要区别在于ipa唯一标识在原有Bundle Identifier的基础上增加了证书ID,也就说安装包和手机上已安装APP的Bundle Identifier即使一致,如果两者签名的证书ID不相同,那么安装包也无法正常安装

原理

其实安装ipa最核心的在于签名,因为iOS上的app运行前系统都会对其进行签名校验,来保证是否被篡改或者合法,证书过期或者无效时,点击app图标会直接闪退。主要分为三类,一种是个人/团队开发者证书签名,另一种是企业证书签名,比如各种xxx助手之类的,主要区别在于企业开发者不能通过appstore途径发app,但是可以直接无上限的分发app(in-house 发布),个人开发者可以通过Appstore发布,同时有一些别的特权。还有一类是教育帐号本文不做阐述。

步骤

我假定你已经是一名iOS开发者,并且加入了苹果开发者计划,电脑已经装了开发证书和发布证书。

  • 进入Member Center,建立一个新的App ID,并创建一个新的Provisioning Profiles

  • 解压你需要重签名的ipa包(友情提示,去xxx助手找有很多哦),删除包内的_CodeSignature目录

  • 下载之前新建的Provisioning Profiles,重命名为embedded.mobileprovision替换ipa包内的同名文件

  • 修改info.plist中的包名(经实测不是必须)

  • 创建entitlements.plist,这是一个授权文件,其授权机制决定了哪些系统资源在什么情况下允许被一个应用使用。简单的说它就是一个沙盒的配置列表,上面列出了哪些行为被允许,哪些会被拒绝。很可能你已经猜到授权机制也是按照 plist 文件格式来列出的。Xcode 会将这个文件作为 –entitlements 参数的内容传给codesign,在 Xcode 的 Capabilities 选项卡下选择一些选项之后,Xcode 就会生成这样一段 XML。 Xcode 会自动生成一个.entitlements 文件。此处我们的entitlements.plist文件如下,identifier需要和Provisioning Profiles里的一致,比如我的Provisioning Profiles用的是通配符com.peach.*,另外XXX是发布证书的id,可以参考mac上的keychain,或者用下面的命令查看

#查看本机安装的证书
security find-identity -v -p codesigning 
<?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>XXX.com.peach.test</string><key>com.apple.developer.team-identifier</key><string>XXX</string><key>get-task-allow</key><false/><key>keychain-access-groups</key><array><string>XXX.*</string></array>
</dict>
</plist>
  • 签名
/usr/bin/codesign -f -s "iPhone Distribution: xxxxxxx" --entitlements entitlements.plist Payload/xxx.app
  • 签名完成后您可以进行验证
#查看签名信息
/usr/bin/codesign -vv -d Payload/xxx.app
#验证签名是否成功,无返回表示成功
/usr/bin/codesign --verify Payload/xxx.app
  • 重新压缩成zip并将后缀改为ipa
zip -r xxxNew.ipa Payload/

注意:ipa文件,entitlements.plist,最好放在同目录下

自动化

有了上面的步骤,自然就可以做成一个工具/脚本方便下次使用,把以下脚本的路径和证书名称改成自己对应的即可~~~

#!/bin/sh
#把你的所有需要的文件都放到path目录下,见下面的path的定义。比如我的是/Users/peach/Downloads
#并且entitlements.plist,embedded.mobileprovision,ipa都需要在同一文件夹if ! ([ -f "$1" ]); then
echo \"${1}\"文件不存在
exit
fi
ipaName=${1%.ipa}
if [ "$ipaName" = "$1" ]; then
echo \"${1}\"不是ipa文件
exit
fipath="/Users/peach/Downloads"
## step 1, unzip ipa file
unzip ${path}/${ipaName}.ipa## step 2, remove old codesign
rm -rf ${path}/Payload/*.app/_CodeSignature/## step 3, copy new provision profile
cp ${path}/embedded.mobileprovision ${path}/Payload/*.app/## step 4, codesign with new certificate and provision
/usr/bin/codesign -f -s "iPhone Distribution: XXXX" --entitlements entitlements.plist ${path}/Payload/*.app
## if code sign error, will to here## step 5, zip it
cd ${path}
zip -r ${ipaName}New.ipa Payload/
rm -rf ${path}/Payload/

总结

有了上面的方法和脚本,就可以在非越狱手机安装几乎任意ipa包(说的不好听就是安装盗版和破解软件),当然有一种app是装不了,就是app内部做了安全校验,发现证书被篡改或者非法直接退出程序,不过那个是app内部代码的流程,也无可奈何了。工具/脚本永远是把双刃剑,用的好会带来效率提升和极大的方便,用的不好那么就呵呵了~~~

如何用未越狱手机安装ipa文件(更新版)相关推荐

  1. 如何用未越狱手机安装ipa文件

    当你发现一个很不错的app,如果要钱那就要花钱买,如果该app上架了App store,你也可以用同步助手免费安装.可是如果这个app没有上架App store,而你又不想越狱,或者你装的iOS系统版 ...

  2. 未越狱设备 安装ipa

    最近因客户想要在真机上看Demo的效果,而客户又在外地,设备又未越狱.所以就研究了下不越狱安装ipa.经过几天的查阅资料与研究,发现苹果原来提供了一种工具( iPhone配置实用工具).我用这个工具的 ...

  3. PP助手安装ipa文件显示Install Prohibited安装失败解决办法

    今天使用PP助手给别人的iPhone手机安装ipa文件,显示"Install Prohibited"安装失败 检查有没有关闭"通用--设置--访问限制--安装应用程序&q ...

  4. 苹果无需越狱了!通过苹果签名轻松安装IPA文件

    很多朋友会有类似的疑问,不上架app store应用商店的情况下,如何把ipa文件安装到苹果手机上?其实很简单,有需要通过PC端进行操作的安装方式也有仅通过手机端就可以完成安装的操作. 上架App S ...

  5. ipa文件怎么安装到iphone_无视签名随意安装 IPA 文件

    今天要分享的内容依然是和签名有关的,只不过今天的内容适用于已经越狱的用户,只有在越狱以后才能实现我标题中的效果.名称:AppSync Unified软件源:https://cydia.akemi.ai ...

  6. ios 隔空投安装ipa_ipa文件是什么?怎么安装ipa文件到苹果手机上?

    近期有多人咨询咔叽一个问题 "iphone中的ipa文件如何安装到苹果手机上?",都知道安装到手机上的是App,那ipa文件又是什么呢?下面就来讲解一下关于ipa文件的相关内容. ...

  7. iTunes 安装ipa文件到iPhone上

    iTunes 安装ipa文件到iPhone上 把ipa文件拖到itunes里面. ipa(iPhoneApplication) 菜单 File>Add File to Library>Se ...

  8. pythonista安卓版下载-使用Pythonista 脚本,手机端轻松安装ipa文件

    在手机端安装ipa 文件是件不容易的事情,无论是临时应急,还是习惯所需,安装ipa 对很多朋友来说是一个很实用的功能. 今天给大家推荐一个Pythonista 脚本IPA Installer,无需电脑 ...

  9. ipa文件是什么?怎么安装ipa文件到苹果手机上?

    ipa文件是什么? ipa文件的实质是一个zip压缩包,也就是一个苹果应用文件,简称ipa文件,该文件在进行了ios签名后可以在App未上架App Store的情况下将应用下载到苹果手机上. 怎么安装 ...

最新文章

  1. TensorFlow2.0正式版发布,极简安装TF2.0(CPUGPU)教程
  2. R语言list.dirs函数获取目录列表实战
  3. 加密与解密、OpenSSL(SSL/TLS)、OpenSSH(ssh)、dropbear
  4. spring@PropertySource用法
  5. java 中断 继续_中断,继续并在Java循环中标记
  6. Failed to read auto-increment value from storageengine错误的处理方法
  7. JQuery常用选择器总结
  8. java面试没有全部答对_十道java基础面试题,你能保证全答对吗?
  9. 数学界的花木兰——苏菲﹒热尔曼
  10. 搜索NLP行业模型和轻量化客户定制
  11. dismiss和remove_remove的近义词辨析
  12. jsp向servlet传输数据
  13. python 添加环境变量_怎么将 Python 重新添加到环境变量?
  14. Oracle数据泵(Data Dump)错误汇集
  15. 华为交换机初始化_华为交换机如可恢复出厂设置
  16. 地图下载器拼接ArcGIS Server瓦片
  17. 60后刘备聘用80后诸葛亮的启示
  18. linux marvell 网卡驱动,linux下安装Marvell Yukon网卡驱动
  19. 理解SPI/Dual SPI/Quad SPI/QPI之间的区别
  20. 我的Serverless实战—基于Serverless搭建一个简单的WordPress个人博客图文详解-JJZ

热门文章

  1. 向中级程序员转变必备的10个秘诀
  2. 阿里云settings.xml配置
  3. 解决antimalware service executable程序占用CPU过高(有效)
  4. 【react】createRef
  5. 2023小红书年度生活趋势报告
  6. ULONG64转CString
  7. 【Hack The Box】linux练习-- Doctor
  8. 【C语言】sizeof操作符详解
  9. 爱奇艺小程序陪你嗨一夏
  10. 1.OCR--文本检测算法FCENet