離線打包app步驟
其中有一些坑要注意,以及對於不熟原生工程的人可以看看。
幾個特點:
1、相比雲打包,不需要在蘋果開發者后台手動生成描述文件。
2、也不需要下載證書到本地安裝,再導出p12文件。但是生成的證書開發者平台里不能刪除。
准備工作:
蘋果開發者后台:
1、手動生成certificate。在Software里選擇“iOS Distribution (App Store and Ad Hoc)”或“iOS App Development”。實際操作中,另外幾個我也點擊了生成,怕出錯就沒有刪除。
2、手動生成identifier。每一個app都需要生成一個,選擇“App IDs”。bundle Id填寫app的唯一id。命名規則可以按反向域名,例如 自己的域名是 meta.com,那么就可以寫com.meta.應用的名稱。
這個一般情況下勾選,其他的看需求。
uniapp准備工作:
1、申請需要打包的app的appkey,官方有文檔就不再說明(https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey)。
2、下載最新的ios離線打包sdk,其實就是一個hbuilder hello的工程項目。注意的是按照官方說法,sdk的版本號必須和hbuilder的版本號一致。比如hbuilder用正式版,sdk用預覽版就不行。
3、hbuilder中選擇“原生app本地打包”-》“生成本地app打包資源”。生成一個以“uni-app應用標識”的文件夾,例如__UNI__E27A345。
打包方法:
官方文檔:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios
1、用xcode打開“iOSSDK@3.2.16.80725_20211122/HBuilder-Hello/HBuilder-Hello.xcodeproj”。
2、把hbuilder打包的離線app打包資源文件夾拷貝到“iOSSDK@3.2.16.80725_20211122/HBuilder-Hello/HBuilder-Hello/Pandora/apps”。
3、修改info.plist里的dcloud_appkey為之前申請的appkey。
4、修改control.xml。注意每次都要檢查該文件,因為如果換app打包的時候就需要修改為需要打包的appid和版本號。具體看https://nativesupport.dcloud.net.cn/AppDocs/importfeproject/ios。
5、配置要打包的app的基本資料。
注意:如果bundle identifier不可改,則參考第11步
display name=name manifest.json里的應用名稱
bundle identifier=之前蘋果開發者后台申請的 “bundle Id”。
version=versionName manifest.json里的應用版本名稱
build=code manifest.json里的應用版本號
6、配置app的圖標。可以先在hbuilder里更換app圖標(上傳一張1024*1024的圖片,其他尺寸會自動生成,然后此處直接選取之前生成好的圖片。
7、配置app啟動界面。此處直接使用了uniapp官方提供的方案,但是需要修改啟動界面顯示的圖標。
注意:由於不熟悉文件修改方式,我直接替換了項目里的 dclogo@2x.png和dclogo@3x.png。此時本地測試時,啟動界面會先顯示下官方的h圖標,然后迅速切換到我們換的圖標,不過安裝到手機后沒有這個問題。
8、模塊配置部分見官方文檔。
9、(可選)如果后續打包時報錯,則需要把這里全部改成 apple development。可查看https://www.cnblogs.com/waitingbar/p/13902627.html
10、配置sign(release),由於我打包時跳過了debug所以,debug的配置就不介紹了,其實是一樣的。
勾選 automatically manage signing。首次選擇時會讓登錄apple id。這也就是離線打包時不需要下載證書的原因。
勾選后,team里可以直接選蘋果開發者后台里的組織,我感覺此時也會自動匹配certificate。
bundle identifier=bundle id,別填寫錯了類似這個 com.meta.facebook。
注意:此時如果出現如下的報錯信息,則需要執行第九步。
11、(可選)打包時如果報錯可以執行。錯誤信息類似:The provisioning profile specified in your build settings ("test") has an AppID of "com.meta.facebook" which does not match your bundle identifier "com.meta.facebook"。
參考:https://blog.csdn.net/l2i2j2/article/details/51661443
修改bundle identifier 只在info.plist中修改並沒有完,還需要把Build Settings中Package分欄下的Product Bundle Identifier改成新的“com.meta.facebook”
12、(可選)如果打包時報錯可以執行。錯誤信息類似如下:
可參考:https://www.jianshu.com/p/36a5ba85c1e5
意思就是app沒有使用后台任務,但是勾選了如下服務。
解決方式如下:
13、(可選)如果Archive按鈕一直為灰色不可點擊可執行。
可參考:https://blog.csdn.net/weixin_34309435/article/details/85757979
解決辦法:目前的運行配置是使用模擬器,改成“iOS Device”即可。
14、點擊product/archive。然后等待執行,后續可以一直默認下一步。此時不要預先到蘋果開發者后台創建app基本信息,當前操作會自動創建,然后可以等上傳成功后再去調整。
15、發布到testflight內部測試時,不需要提交審核,上傳成功后5分鍾后即可直接在內側組用戶里下載測試。