原因一:開發(fā)者在打包App時孽文,導出 iOS App 的安裝包文件(.ipa
文件)時拧揽,選擇了 App-Store 方式疲吸。
在導出 iOS 的 .ipa
文件時,有些開發(fā)者選擇了 App-Store 方式誉察,這種方式導出的 .ipa
文件,只適合于上傳到蘋果 App Store惹谐,并不能通過蒲公英來安裝持偏。如果是這種方式導出的 .ipa
文件,傳到蒲公英上時氨肌,蒲公英會顯示“App-Store版”鸿秆,這種版本是不能通過蒲公英安裝的。
原因二:在導出 iOS App 的安裝包文件(.ipa
文件)時怎囚,選擇了 Ad-hoc 方式卿叽,但是沒有添加設備 UDID。
在導出 iOS 的安裝包文件時恳守,如果選擇了 Ad-hoc 方式(一般用于蘋果個人開發(fā)者賬戶)附帽,那么,如果要某臺設備可以安裝井誉,則必須要將這臺設備的 UDID 添加到導出安裝包時所用的證書文件中(. mobileprovision
文件)蕉扮,才可以在這臺設備上安裝。
使用 Ad-hoc 方式導出的安裝包文件上傳到蒲公英后颗圣,蒲公英會顯示為“內(nèi)測版”喳钟,同時會在應用管理中,顯示出該安裝包的證書中包含的 UDID 列表在岂。開發(fā)者可以根據(jù)顯示出的 UDID 列表奔则,來排查某臺設備的 UDID 有沒有被添加到安裝包的證書中。
原因三:在導出 iOS App 的安裝包文件(.ipa
文件)時蔽午,選擇了 In-house 方式易茬,但是證書已過期或被撤銷。
在導出 iOS 的安裝包文件時及老,如果選擇了 In-house 方式(一般用于蘋果企業(yè)開發(fā)者賬戶)抽莱,此時,如果出現(xiàn)無法安裝的情況骄恶,開發(fā)者可以檢查一下自己的企業(yè)開發(fā)者證書是否已過期或是否被撤銷食铐。因為蘋果對于企業(yè)開發(fā)者證書管理較為嚴格,所以開發(fā)者如果使用不當僧鲁,可能會導致企業(yè)證書被蘋果官方撤銷虐呻,被撤銷后的企業(yè)證書導出的安裝包象泵,也是無法正確安裝的。
原因四:開發(fā)者在生成App安裝包時斟叼,沒有在 Xcode 中設置正確的 Architecture偶惠。
iOS 應用的 Architecture(架構(gòu)),決定了這款 iOS 應用可以在哪些設備機型上安裝朗涩。例如洲鸠,如果某個應用在 Xcode 中只添加了 arm64
這一種 Architecture,那么最終打包后的安裝包文件上傳到蒲公英后馋缅,對于 iPad mini扒腕、iPhone5 等以下設備,都是無法安裝的(因為這些設備都不是 arm64
架構(gòu))萤悴。換句話說瘾腰,如果需要在某個設備上可以安裝,App 就必須支持那個設備的 Architecture覆履。
所以蹋盆,正確的解決方法是,在生成 App 安裝包時硝全,盡可能讓 App 支持更多的 Architecture栖雾。
具體操作方法是:在 Xcode - Build Settings - Architecture
中,增加 armv7
伟众、armv7s
析藕、arm64
,以便所有設備都可以安裝凳厢。然后账胧,將 "Build active architecture only"
設置為 NO
。對于各個 iOS 設備支持的 Architecture 類型先紫。請點擊這里查看治泥。
原因五:App 支持的 iOS 系統(tǒng)版本,和當前設備系統(tǒng)版本不符遮精。
App 支持的 iOS 系統(tǒng)版本過低或者過高居夹,都可能導致 App 無法安裝成功。例如本冲,如果某個 App 設置了只支持 iOS 11.0 以上的系統(tǒng)時准脂,那么,如果在低于這個版本的系統(tǒng)上安裝時眼俊,是無法安裝成功的意狠。
因此,解決的方法也很簡單疮胖,我們應該盡量讓 App 盡可能支持更寬泛的系統(tǒng)版本环戈。
具體操作方式是:在 Xcode
- General
- Deployment Info
- Deployment Target
中,給 App 設置一個盡量低的版本澎灸,例如 iOS 6.0院塞。
原因六:設備上已經(jīng)安裝了這個App,且已經(jīng)安裝的 App 和要安裝的 App 是用不同證書打包的性昭。
這種情況下拦止,也會造成 App 安裝失敗。解決的方式很簡單糜颠,用戶只需將設備上原來已經(jīng)安裝的 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
搀擂。