iOS 企业包无法安装

通用方案

请先参考这里:
1.iOS ipa 安装包安装失败原因
2.iOS企业应用安装失败原因排查

如果上面的打不开
请看文末的原文


还没解决?(这是不是原因)

看看这里
我遇到情况是
项目的project.pbxproj文件里面的缩进格式变了!

iOS 企业包无法安装_第1张图片
左边的缩进是4个空格,打包是能安装成功的
右边的缩进是1个Tab,打包后安装不成功

所以,问题就出在SVN同步代码时
空格缩进被改成了Tab缩进


后续

— 2020-03-19

后来测试
其实Tab缩进也是没问题的
也许是证书的问题


再续

— 2020-03-28

后来项目修改
再次打包后,又不行了
使用打广告卖假药的搜索引擎,找不到解决方案
于是使用了https://cn.bing.com/ 查找

找到了一篇通过查看安装日志来定位原因的文章
下载蒲公英桌面客户端
安装打开客户端
连接手机
在屏幕左上角,选择菜单查看->查看设置日志
先在右上角的搜索框内输入:installcoordinationd
过滤不必要的信息
然后开始安装企业包

安装失败时,会有日志包含以下内容:
This app could not be installed at this time

然后往后找,安装失败的原因:
Failed to load Info.plist from bundle at path /private/var/installd/Library/Caches/ NSLocalizedDescription=Failed to load Info.plist from bundle at path /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.x3G89O/extracted/Payload/\M-h\M^@\M^C\M-g\M-1\M-3.app/Frameworks/XXXXX.framework

我这里安装失败的原因是
有一个第三方库,导入工程的时候,系统默认选择了Embed & Sign
导致这个静态库被当成了动态库
所以才会有上面的报错

所以
Embed选项设置为Do Not Embed即可


原文

  • iOS ipa 安装包安装失败原因
原因一:在导出 iOS App 的安装包文件( .ipa 文件)时,选择了 App-Store 方式。
在导出 iOS 的.ipa文件时,有些开发者选择了App-Store方式,这种方式导出的.ipa文件,只适合于上传到苹果App Store,并不能通过托管平台来安装。如果是这种方式导出的 .ipa文件,传到托管平台上是不能通过安装的。

原因二:在导出 iOS App 的安装包文件( .ipa 文件)时,选择了 Ad-hoc 方式,但是没有添加设备 UDID 。
在导出 iOS 的安装包文件时,如果选择了Ad-hoc方式(一般用于苹果个人开发者账户),那么,如果要某台设备可以安装,则必须要将这台设备的 UDID 添加到导出安装包时所用的证书文件中(.mobileprovision文件),才可以在这台设备上安装。

使用 Ad-hoc 方式导出的安装包文件上传到托管平台后,托管平台会显示为内测版,同时会在应用管理中,显示出该安装包的证书中包含的 UDID 列表。开发者可以根据显示出的UDID列表,来排查某台设备的 UDID 有没有被添加到安装包的证书中。

原因三:在导出 iOS App 的安装包文件( .ipa 文件)时,选择了 In-house 方式,但是证书已过期或被撤销。
在导出 iOS 的安装包文件时,如果选择了In-house方式(一般用于苹果企业开发者账户),此时,如果出现无法安装的情况,开发者可以检查一下自己的企业开发者证书是否已过期或被撤销。因为苹果对于企业开发者证书管理较为严格,所以开发者如果使用不当,可能会导致企业证书被封,被封后的企业证书导出的安装包,也是无法正确安装的。

原因四:开发者在生成App安装包时,没有在 Xcode 中设置正确的 Architecture 。
iOS 应用的 Architecture(架构),决定了这款 iOS 应用可以在哪些设备机型上安装。例如,如果某个应用在 Xcode 中只添加了 arm64 这一种 Architecture,那么最终打包后的安装包文件上传到托管平台后,对于 iPad mini、iPhone5 等以下设备,都是无法安装的(因为这些设备都不是 arm64 架构)。换句话说,如果需要在某个设备上可以安装,App 就必须支持那个设备的 Architecture。

所以,正确的解决方法是,在生成 App 安装包时,尽可能让 App 支持更多的 Architecture。

具体操作方法是:在 Xcode - Build Settings - Architecture 中,增加 armv7、armv7s、arm64,以便所有设备都可以安装。然后,将 "Build active architecture only" 设置为NO。对于各个 iOS 设备支持的Architecture 类型。请点击这里查看。

原因五:App 支持的 iOS 系统版本,和当前设备系统版本不符。
打包时 App 选择支持的 iOS 系统版本过低或者过高,都可能导致 App 无法安装成功。例如,如果某个 App 设置了只支持 iOS 7.0 以上的系统时,那么,如果在 iOS 6.1 系统上安装时,肯定是无法安装成功。

因此,我们应该尽量让 App 尽可能支持更宽泛的系统版本。

具体操作方式是:在Xcode - General - Deployment Info - Deployment Target中,给 App 设置一个尽量低的版本,例如 iOS 5.0。

原因六:开发者上传的是一个破解的 ipa 安装包,或者是一个使用破解 Xcode 方式打包生成的 ipa 安装包,或者是通过 iTunes 生成的 ipa 安装包。
通过任何非 Xcode(或 Xcode 的命令行工具)生成的安装包,都是没有办法正确在设备上安装的(越狱设备除外)。

常见的不正确的打包 ipa 的方式有:
通过 iTunes 导出安装包文件、通过 iTools 导出安装包文件等等。这种类型的 App 上传到托管平台后,会显示未签名的标签提示。

【正确的方法】

使用一个正常的苹果开发者证书,通过未破解的 Xcode 打包生成 ipa 安装包。

原因七:设备上已经安装了这个App,且已经安装的 App 和要安装的 App 是用不同证书打包的。
这种情况下,也会造成 App 安装失败。解决的方式很简单,开发者只需将设备上原来已经安装的 App 删除,再重新安装新的 App 即可。

原因八:Info.plist 文件中的LSRequiresIPhoneOS 没有设置,或者设置了 NO。
对于 iOS 的 App 来说,如果Info.plist文件中的LSRequiresIPhoneOS没有设置,或者设置了NO,那么由 Xcode 导出的安装包(.ipa包),就不会包含Payload文件夹,而是被一个叫做Applications的文件夹代替。这样的安装包在安装时,会被 iOS 判定为无效的安装包,所以无法被正确安装。

【解决方式】

只需要将Info.plist文件中的LSRequiresIPhoneOS设置为YES,然后重新打包即可。具体操作为:在 Xcode 中打开Info.plist文件,然后检查 LSRequiresIPhoneOS是否已设置,如果没有设置,就添加一个,然后将LSRequiresIPhoneOS的类型设置为Boolean,值设置为 YES。

设置好以后,可以看到Info.plist文件中显示Application requires iPhone environment的值为YES。

原因九:网络出现中断或异常。
遇到这种情况,用户可检查自己手机的所连接的网络是否稳定、速度是否正常等。可以尝试一下其他网站,或者更换一个 Wi-Fi,或者由 Wi-Fi 换成 3G/4G 等,然后重新安装。

  • iOS企业应用安装失败原因排查
一、网络问题

网络问题比较好排查,如果只有某一个人或者几个人出现这种失败,其他人不存在这种情况,基本就可以确定为网络问题导致,可以通过多重试几次,或者切其他的wifi或网络模式来尝试解决这个问题。

二、手机设置问题

甄别是不是手机设置问题,可以到appstore尝试下载商店中的应用,如果这是也出现同样的错误的话,基本就可以确定是手机设置的问题。

修复这个问题呢,就需要考虑尝试以下动作:

首先清除safari的历史记录:打开“设置”-"Safari"-点击 “清除历史记录与网站数据"

其次注销Apple ID账户:打开"设置"-"iTunes store与app store"点击"Apple ID:"然后"注销"帐户。

最后还原网络设置:打开设置-通用-还原-还原网络设置。设备自动重启。

重启后链接网络如果还是不能下载的话,可以通过设置-当前wifi后的感叹号-dns,修改dns为8.8.8.8即可。

三、云存储的设置问题

云存储的设置如果出现问题,最明显的就是ios7.1后所有的系统安装都会失败,而且失败提醒不是简单的下载不成功,而是“无法安装应用程序因为http://xxx.xxx.xxx证书无效”

导致这个问题的原因其实是ios7.1后要求应用的下载地址必须是https导致。

修复这个问题的办法就是将应用plist的URL修改http修改成https同时plist中ipa的地址也改成https

itms-services://?action=download-manifest&url=http://example.com/manifest.plist

最后服务器也增加对https的支持即可,详细的描述见下面链接中的文章。

http://stackoverflow.com/questions/20276907/enterprise-app-deployment-doesnt-work-on-ios-7-1/22325916#22325916

四、打包证书的问题

如果您的应用大部分安装都失败的话,基本就可以确定是打包证书的问题。

对于这种情况,我们可能需要从以下角度排查:

首先,您使用的企业账号是否有效(一般考虑是否过期,如果过期,则联系相关人员续费即可)

其次,您的企业账号下打包用的证书是不是被别人revoke了。如果是只需要重新设置证书,再打包发布就可以了,具体的打包发布流程可以参考这篇文章:http://blog.csdn.net/kmyhy/article/details/6418280

最后,考虑是不是导出ipa的时候选择的到处选项不对。切记,一定是选择Save for Enterprise Deployment这种才有效。

五、打包时电脑连接外设问题

这个问题不好归纳问题现象,我遇到的现象就是有的手机安装成功,有的安装失败。然后试了各种系统,发现ios7,到ios9.3,均是有的成功有的失败。真的是很崩溃的问题。

最后也是试了上面所有的修复办法,都没有修复,才怀疑可能是打包时电脑连接了外设导致。据说连接外设的电脑,在打包时,包会打成自动匹配该外设的硬件信息,也就是说,如果您的外设正好是64位的系统的话,那么不好意思,这个新包不匹配32位设备。

不过这个问题要修复倒是比较简单。

就是用之前打包的代码版本,重新打包。只是特别提醒,请拔出所有的链接电脑的设备(手机,pad等),选择build only for device下的Generic ios device,然后Archive,最后将导出的包重新上传托管平台就可以了。


你可能感兴趣的:(iOS各种报错)