2016年6月20日 星期一

0620 IOS IPA 打包錯誤排除

我的排除方式,除了第三項之外
還有就是打包時,插的手機改為IPHONE4S

此外還有參照修改 http://blog.csdn.net/ysysbaobei/article/details/16371263 修改設定


iOS應用安裝失敗原因排查

iOS 的內測應用在安裝時,很多人都遇到過安裝失敗的情況,安裝失敗的原因比較多,下面我們將一些常見原因總結如下,方便開發者進行排查。

原因一:在導出 iOS APP 的安裝包文件時,選擇了Ad Hoc 方式,但沒有添加設備 UDID
在導出 iOS 的安裝包文件時,如果選擇了 Ad Hoc 方式(一般用於蘋果個人開發者賬戶),那麼,如果要某台設備可以安裝,則必須要將這台設備的 UDID 添加到導出安裝包時所用的證書文件中(. mobileprovision 文件),才可以在這台設備上安裝。使用 Ad Hoc 方式導出的安裝包

原因二:在導出 iOS APP 的安裝包文件(.ipa 文件)時,選擇了 In-house 方式,但是證書已過期。
在導出 iOS 的安裝包文件時,如果選擇了 In-house 方式(一般用於蘋果企業開發者賬戶),此時,如果出現無法安裝的情況,開發者可以檢查一下自己的企業開發者證書是否已過期。因為蘋果對於企業開發者證書管理較為嚴格,所以開發者如果使用不當,可能會導致企業證書被封,被封后的企業證書導出的安裝包,也是無法正確安裝的。
 (第三項有實際修改到)
原因三:開發者在生成APP安裝包時,沒有在 Xcode 中設置正確的 Architecture
iOS 應用的 Architecture(架構),決定了這款 iOS 應用可以在哪些設備機型上安裝。例如,如果某個應用在 Xcode 中只添加了arm64 這一種 Architecture,那麼最終打包後的安裝包文件上傳到 Pre.im後,對於 iPad miniiPhone5 等以下設備,都是無法安裝的(因為這些設備都不是 arm64 架構)。換句話說,如果需要在某個設備上可以安裝,APP 就必須支持那個設備的Architecture。所以,正確的解決方法是,在生成 APP 安裝包時,讓 APP 支持更多的 Architecture 。具體操作方法是:在 Xcode - Build Settings - Architecture 中,增加 armv7 armv7sarm64等,以便所有設備都可以安裝。然後,將 "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 上傳到Pre.im 後,會顯示「未簽名」。正確的方法是,使用一個正常的蘋果開發者證書,通過未破解的 Xcode 打包生成 ipa 安裝包。
 原因六:設備上已存在不同簽名的相同APP
設備上已經安裝了這個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 文件,然後檢查 APPlication requires iPhone environment 是否已設置,如果沒有設置,就添加一個,然後將 APPlication requires iPhone environment 的類型設置為 Boolean ,值設置為 YES

沒有留言:

張貼留言

cocos2dx-lua 建立滑鼠監聽

重要關鍵字  EVENT_MOUSE_SCROLL addEventListenerWithSceneGraphPriority      if IsPc() then --建立滑鼠監聽         local listener = cc.EventListenerMouse...