UDID 和修改成realease
原因一:在導出 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(架構)大渤,決定了這款 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 系統(tǒng)版本斗幼,和當前設備系統(tǒng)版本不符。
App 支持的 iOS 系統(tǒng)版本過低或者過高抚垄,都可能導致 App 無法安裝成功蜕窿。例如,如果某個 App 設置了只支持 iOS 7.0 以上的系統(tǒng)時督勺,那么渠羞,如果在 iOS 6.1 系統(tǒng)上安裝時,肯定是無法安裝成功智哀。
因此次询,解決的方法也很簡單,我們應該盡量讓 App 盡可能支持更寬泛的系統(tǒng)版本瓷叫。
具體操作方式是:在 Xcode
- General
- Deployment Info
- Deployment Target
中屯吊,給 App 設置一個盡量低的版本送巡,例如 iOS 5.0。
原因六:設備上已經(jīng)安裝了這個App盒卸,且已經(jīng)安裝的 App 和要安裝的 App 是用不同證書打包的骗爆。
這種情況下,也會造成 App 安裝失敗蔽介。解決的方式很簡單摘投,開發(fā)者只需將設備上原來已經(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
。
另外下梢,還可以使用蒲公英的 Mac OS 客戶端 來打包上傳 App客蹋,蒲公英的 Mac OS 客戶端在打包安裝包時,自動處理了這個問題孽江。
原因八:網(wǎng)絡出現(xiàn)中斷或異常讶坯。
遇到這種情況,用戶可檢查自己手機的所連接的網(wǎng)絡是否穩(wěn)定岗屏、速度是否正常等辆琅∈欤可以嘗試一下其他網(wǎng)站,或者更換一個 Wi-Fi婉烟,或者由 Wi-Fi 換成 3G/4G 等娩井,然后重新安裝。
用這樣的方式嘗試后似袁,一般都可以解決問題洞辣。
原因九:iOS10中未添加權限
iOS10 需要添加新權限管理,需要聲明 Privacy - Microphone Usage Description( http://stackoverflow.com/questions/38498275/ios-10-changes-in-asking-permissions-of-camera-microphone-and-photo-library-c )
嘗試過以上方案昙衅,還是無法解決扬霜?
如果根據(jù)以上的方式進行排查后,依然無法解決問題绒尊,那么可以使用蒲公英的 Mac OS 客戶端來查看安裝日志畜挥。
蒲公英的 Mac OS 客戶端中,提供了實時查看 App 安裝日志的功能婴谱,開發(fā)者可以方便的根據(jù) App 的安裝日志蟹但,來準確的判斷具體安裝失敗的原因,具體方法請見:查看iOS的安裝日志