在做ios签名的时候,通常都会根据签名的类型去选择不同的打包方式。但是,错误的打包方式会直接导致签名失败,应用在安装的时候出错。其实,很大程度上是因为你在打包的时候选择了错误的打包方式才会出现如此尴尬的局面。下面为大家整理一下大致原因,希望大家在做ios签名的时候尽量避免出错。
通常这个问题出在导出苹果iOS的ipa文件时,有些开发者错误的选择了App-Store方式,此方式导出的ipa文件,仅适合于上传到苹果 App Store,并不能通过做企业签名后进行安装。假如是如此方式导出的ipa文件,当传到分发平台上后,会显示“App-Store版”,此类版本是不能安装的。
当在导出苹果iOS的安装包文件时,如果选择了Ad-hoc方式(一般适用于苹果的个人开发者账户),那么,如果某台设备需要安装,则必须要将这台设备的UDID添加到导出安装包时所用的证书文件中(. mobileprovision文件),然后才可以在这台设备上进行安装。
在导出苹果iOS的安装包文件时,假如选择了In-house方式(一般适用于苹果的企业开发者账户),此时,如果出现无法安装的情况,开发者可以排查一下自己的企业开发者证书是否已过期或是否被撤销。因为苹果对于企业开发者证书监测比较严格,一旦开发者使用不当,可能会导致企业证书被苹果官方封掉撤销,被撤销后的企业证书导出的安装包,也是无法正确安装的。
在苹果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无法安装成功。例如,假如某个 App设置了只支持iOS 11.0以上的系统时,那么,如果在低于这个版本的系统上安装时,那么是无法安装成功的。
因此,解决的方法也很简单,我们应该让App尽可能支持更宽泛的系统版本。具体操作方式是:在Xcode - General - Deployment Info - Deployment Target 中,给App设置一个尽量低的版本,例如 iOS 6.0。
这样的情况下,也会造成App安装失败。解决的方式很简单,用户只需将设备上原来已经安装的App删除,然后再重新安装新的App即可。
对于苹果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等,然后再试试重新安装。用这样的方式尝试后,一般都可以解决问题。
以上。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。