前言
iOS 的内测应用在安装时,很多人都遇到过安装失败的情况,安装失败的原因比较多,下面我们将一些常见原因总结如下,方便开发者进行排查。
应用安装过程中提示"无法下载应用程序"
原因一:在导出 iOS App 的安装包文件(.ipa
文件)时,选择了 App-Store 方式。
...
原因二:在导出 iOS App 的安装包文件(.ipa
文件)时,选择了 Ad-hoc 方式,但是没有添加设备 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 类型。
"Build active architecture only"
设置为 NO
原因五:App 支持的 iOS 系统版本,和当前设备系统版本不符。
...
原因六:开发者上传的是一个破解的 ipa 安装包,或者是一个使用破解 Xcode 方式打包生成的 ipa 安装包,或者是通过 iTunes 生成的 ipa 安装包。
...
原因七:设备上已经安装了这个App,且已经安装的 App 和要安装的 App 是用不同证书打包的。
...
原因八:Info.plist
文件中的LSRequiresIPhoneOS
没有设置,或者设置了 NO
。
...
原因九:网络出现中断或异常。
...
在 iOS 8 上安装时,没有任何反应
这个是由于 iOS 8 的一个 bug 造成的,开发者可以尝试在应用设置中,将“iOS 8 安装修复”的功能打开,然后重新安装应用。
安装 iOS 应用时,出现提示“无法连接到 ssl.pgyer.com”
这个问题一般是由于用户的网络,或者手机缓存错误造成的,可以尝试如下两个方法来解决:
- 重启手机,然后尝试重新安装。
- 换一个网络环境,例如换一个 Wi-Fi 热点,或由 Wi-Fi 换成 3G/4G 等,然后重新安装。
用这样的方式尝试后,一般都可以解决问题。
根据 iOS 的安装日志排查失败原因
如果根据以上的方式进行排查后,依然无法解决问题,那么可以试试使用蒲公英的 Mac OS 客户端来查看一下安装日志。
蒲公英的 Mac OS 客户端中,提供了实时查看 App 安装日志的功能,开发者可以方便的根据 App 的安装日志,来准确的判断具体安装失败的原因。
以上摘自:http://www.pgyer.com/doc/view/ios_install_failed
我遇到的问题是编译选项
"Build active architecture only"
设置为 了YES
问题原因解释如下:
这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。
而设置为no时,会编译所有的版本。
这个是设备对应的architecture:
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5, iPod5
编译出的版本是向下兼容的,比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。
所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。