since.2006  

越狱后iOS可以以编程方式安装其它IPA程序(像AppStore一样)。在iOS5中可以直接调用MobileInstallationInstall进行安装,但到iOS6中调用此方法后台会报错,提示:

required to have an entitlement named "com.apple.private.mobileinstall.allowedSPI" with an array containing "Install" to call command Install

解决方法可以参见:

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

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

上述解决方法中有几点需要注意:

1. SDKSettings.plist文件的位置在xcode下各个版本是不同的。

2. 使用ldid之前,需要在xcode中先把Command Line Tools装好。

3. 如果下载文中提到的ldid进行签名,是不会成功的,也不会报错。(在这个地方纠结了几个小时)。

4. 能正常使用的ldid下载地址:https://github.com/downloads/rpetrich/ldid/ldid.zip

 

标签:

Posted by hee at 10:03 AM | Permalink | 评论(30) | iOS

1440 天 18 小时前
沙发 asptest 说:

兄弟,能否把你的代码共享一下?

1440 天 9 小时前
板凳 hee 说:

@asptest
具体是想看哪块代码?安装的核心代码就是一句系统api调用就行了。签名的操作,不需要写代码,是在命令行下调用ldid进行签名操作。

1424 天 15 小时前
地板 cosperypf 说:

兄弟有几个问题咨询一下
1、ldid是在mac上安装的还是手机上安装的?我手机上安装好了,mac上到现在都是
sudo: apt-get: command not found
2、这样打包出来的应用可以在所有越狱ios设备上运行吗?
我的意思是,运行安装应用的代码可以安装别的应用
非常感谢LZ的回答

1424 天 15 小时前
4楼 cosperypf 说:

你给的ldid我下载了,双击执行之后出现了一些log信息。但是之后再调用ldid指令仍然会提示
-bash: ldid: command not found
(mac下的terminal执行 ldid -S entitlements.xml installerIpaTest.app/installerIpaTest)

1424 天 15 小时前
5楼 cosperypf 说:

还有,为什么要安装Command Line Tools?我安装了,但是不太清楚怎么用。这个调用ldid有关吗?我是用的terminal执行的命令啊

1423 天 10 小时前
6楼 hee 说:

@cosperypf

1. ldid是在mac上执行这个命令
2. 可以在所有越狱过的机器上正常调用API安装程序
3. Command Line Tools不装执行ldid会报一个错,具体没记录是什么错了
4. -bash: ldid: command not found,你没把ldld加上可执行权限吧?用chmod加。
然后调用命令需要./,如:./ldid -Sentitlements.xml installerIpaTest.app/installerIpaTest
5. ./ldid -Sentitlements.xml,-S后不需要加空格

1420 天 22 小时前
7楼 cosperypf 说:

关于ldid的问题我解决了,把你提供的ldid放到 /usr/bin下再运行就OK了
但是出现了一个很纠结的问题:我使用xcode进行调试的时候如果Hello.app执行entitlements.xml,那么这个app是可以拖动到itunes中然后生成ipa放到手机中执行的。但是如果我执行了“ldid -Sentitlements.xml Hello.app/Hello",那么这个新生成的ipa放到真机上运行,应用一启动就直接退出了,表现跟xcode没有越狱就在真机测试的时候应用闪退一样
我使用的xml是直接从你给出的网址自己拷贝的内容
使用的iphone5 ios6.1.2(越狱) 进行测试,xcode版本4.6.1
LZ遇到过这样的情况吗

1420 天 21 小时前
8楼 cosperypf 说:

或者说你有没有遇到这样的情况:在命令行执行了"ldid -Sentitlements.xml Hello.app/Hello"之后,发现没有任何反应,此时可以输入字符之类的信息,但是没有任何反应,直到点下ctrl+c结束此次运行
这个授权现在弄得我有些纠结了。。

1417 天 22 小时前
9楼 hee 说:

@cosperypf 已加

1416 天 9 小时前
10楼 jevonszmx 说:

我也遇到这个问题,执行ldid -Sentitlements.xml hello.app/hello后系统cpu系统资源占用好高,风扇狂响,很久没有下文。。。希望能和博主交流。希望能收到你的邮件~

1415 天 23 小时前
11楼 hee 说:

@jevonszmx
昨天和cosperypf一起调试了下这个问题,执行他机器编译后发给我的.app文件,在我机器上一样卡死。。
后来我编译自己的项目,生成.app,执行没有任何问题。所以初步判断是xcode配置方面的问题?
参考下面文章重新配置下xcode试试看:
http://stackoverflow.com/questions/14871748/how-do-i-change-my-applications-entitlements-to-com-apple-backboard-client

1414 天 8 小时前
12楼 zzz 说:

我也遇到7楼 cosperypf 闪退的问题,期待与楼主有些交流。。QQ:164376591

1412 天 16 小时前
13楼 无名 说:

我也遇到了闪退的问题 折腾了N久 是那个xml不合法的问题。贴一下我的xml



com.apple.private.mobileinstall.allowedSPI

Install
Browse
Uninstall
Archive
RemoveArchive


1412 天 16 小时前
14楼 无名 说:

貌似回复把xml格式都去掉了 反正上面就是所有的value 其他的都多余 估计大家保留了原帖的那个ture 顺便说一下楼主的验证码太无敌了 人肉也很难识别

1412 天 8 小时前
15楼 zzz 说:

不容易啊,搞定了
把xml格式都去掉正解

1411 天 22 小时前
16楼 hee 说:

@无名
@zzz

搞定就好,我倒没注意自己的那个xml文件有没有true,晚上回家看看。

1411 天 17 小时前
17楼 无名 说:

新问题: 这个方法做出来的ipa 使用ifunbox安装后会自动launch 大家有没有遇到这个问题 求与楼主and诸位交流 QQ:6809721

1411 天 16 小时前
18楼 无名 说:

顺便再说一下那个xml的问题吧 首先在闪退的时候日志中会提示xml文件不合法.
如何保证xml文件是对的: 1.把xml文件拖到浏览器里 如能正常显示那证明xml格式ok 2.这xml文件是权限配置文件 内容格式应该是"什么东西包括什么 or 什么东西开或关" 所以不应该出现单独的一个节点 例如你有可能错误的保留了那个ture

1410 天 16 小时前
19楼 无名 说:

问题一个接着一个 这个帖子的解决办法不让做code sign. 但不做code sign推送等需要证书签名的功能怎么搞呢? 头大啊~ 期待和大家的交流 QQ:6809721

1410 天 15 小时前
20楼 hee 说:

@无名
看下这篇文章(把文章中的Ad Hoc换为你的release试试看):
http://www.musicalgeometry.com/?p=1237

1410 天 15 小时前
21楼 hee 说:

@无名
还有这篇
How to add Entitlement.plist in xCode 4.2
http://stackoverflow.com/questions/8547471/how-to-add-entitlement-plist-in-xcode-4-2

1389 天 20 小时前
22楼 无名 说:

再回来回复一下 不能签名的问题按照楼主的提示“How to add Entitlement.plist in xCode 4.2 ”这个帖子做就可以了。 加了那个权限文件然后再手动添加节点 剩下的就一切照旧了。

1387 天 14 小时前
23楼 @无语 说:

为什么我在Mac上面进行ldid时候一直卡着,半个多少小时 后台也不报错!

1369 天 23 小时前
24楼 燕子 说:

./ldid -Sentitlements.xml testIAPInstall.app/testIAPInstall
minimal/mapping.h(54): _assert(false); errno=2
libc++abi.dylib: terminate called throwing an exception
Abort trap: 6
为什么我的老是报这个错呢?有哪位大神知道的不?

1363 天 18 小时前
25楼 iamleetvin 说:

xml的权限是加给你主程序的,不是加给你要安装的那个ipa的。还有“无名”方法更好,看他和楼主的对话

1324 天 13 小时前
26楼 hjhdggzh 说:

我的也是执行了"ldid -Sentitlements.xml Hello.app/Hello"之后,发现没有任何反应,什么原因,如何解决?

1324 天 11 小时前
27楼 hee 说:

to hjhdggzh:

下载这个ldid试试,我就是用这个成功的
4. 能正常使用的ldid下载地址:https://github.com/downloads/rpetrich/ldid/ldid.zip

1252 天 16 小时前
28楼 笨菜鸟 说:

各位实现的大神,能给我完整的demo,跪求... 邮箱 xjwteam@sina.com,谢谢!

1016 天 19 小时前
29楼 asd 说:

dasdas

536 天 21 小时前
30楼 欢欢 说:

请问这种方式只能安装自己的app吧,别人的ipa可以安装吗?

请输入名称
请输入邮件地址

 

    请输入邮件地址