一樟凄、iOS打包和發(fā)布
1.1. 填寫應(yīng)用信息
1.1.1. 基本信息
-應(yīng)用的AppID
-應(yīng)用的名稱
-應(yīng)用的Icon
-應(yīng)用的Launcher
1.1.2. 版本信息
Flutter的版本信息在哪里填寫呢?在pubspec.yaml中
version: 1.0.0+1
第一次見到這個會很疑惑梁丘,后面的+1是什么意思呢?
在Android中旺韭,應(yīng)用的版本分為versionCode
& versionName
- versionCode:內(nèi)部管理的版本號
- versionName:用戶顯示的版本號
在iOS中氛谜,應(yīng)用的版本分為 version
& build
- version:用戶顯示的版本
- build:內(nèi)部管理的版本
Flutter中我們?nèi)绾喂芾磉@兩個版本號呢?
- 2.0.0:用戶顯示的版本
- 1:內(nèi)部管理的版本
1.1.3. 用戶權(quán)限配置
在iOS中某些權(quán)限区端,需要用戶允許值漫,為了添加這些權(quán)限需要配置info.plist文件:
1.2. Apple開發(fā)者賬號
1.2.1. 申請開發(fā)者賬號
蘋果發(fā)布應(yīng)用程序,必須申請一個Apple開發(fā)者賬號:
1.填寫AppleID(沒有的話先申請AppleID)
2.加入開發(fā)者計劃
個人和公司:$99/年
企業(yè)賬號:$299/年
1.2.2. 配置相關(guān)證書
發(fā)布iOS應(yīng)用程序需要配置相關(guān)的AppID和證書:
登錄開發(fā)者的賬號:
下載和安裝證書织盼,電腦才具備發(fā)布程序的能力
1.創(chuàng)建AppID(和自己的應(yīng)用程序的AppID是一直的)
2.配置發(fā)布者證書(iOS Distribution)
1.2.3. 創(chuàng)建發(fā)布App
我們需要在App Store創(chuàng)建一個新的應(yīng)用程序:
- https://appstoreconnect.apple.com/
- 新建App杨何,并且填寫相關(guān)信息即可
1.3. 打包發(fā)布應(yīng)用
1.3.1. Xcode登錄AppleID
在Xcode中登錄自己的AppleID
2.3.2. 打包和發(fā)布應(yīng)用
應(yīng)用簽名信息:
打包應(yīng)用程序:
1.設(shè)備選擇真機(這里必須選擇真機)
2.Product -> Archive -> Distribute App
注意:如果之前的應(yīng)用程序是運行在模擬器上的,那么Archive時會報錯
- 需要刪除ios/Flutter目錄下之前生成的App.framework
- 因為這個framework默認是給模擬器生成的沥邻,我們發(fā)布的程序要跑在真機設(shè)備上
1.4. Application loader
目前很多應(yīng)用程序的發(fā)布喜歡借助于Application loader危虱,所有的流程都可以在這個工具中完成
- 具體的使用過程可以查找相關(guān)的資料,用法比較簡單
————————————————————————————————————————————————————————————————————————
二. Android打包和發(fā)布
2.1. 填寫應(yīng)用配置
2.1.1. 基本信息
在之前講解應(yīng)用程序的配置信息時唐全,我們已經(jīng)介紹過埃跷,這里不再過多介紹
- 應(yīng)用的AppID
- 應(yīng)用的名稱
- 應(yīng)用的Icon
- 應(yīng)用的Launcher
2.1.2. 版本信息
與iOS一致
2.1.3. 用戶權(quán)限配置
在Android中某些用戶權(quán)限需要在AndroidManifest.xml進行配置:
- 比如默認情況下應(yīng)用程序是不能發(fā)送網(wǎng)絡(luò)請求的,如果之后App中有用到網(wǎng)絡(luò)請求,那么需要在AndroidManifest.xml中進行如下配置(默認debug模式下有配置網(wǎng)絡(luò)請求)
- 比如我們需要訪問用戶的位置捌蚊,那么需要在AndroidManifest.xml中進行如下配置
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.catefavor"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/></manifest>
2.2. 應(yīng)用程序簽名
Android系統(tǒng)在安裝APK的時候集畅,首先會檢驗APK的簽名,如果發(fā)現(xiàn)簽名文件不存在或者校驗簽名失敗缅糟,則會拒絕安裝挺智,所以應(yīng)用程序在發(fā)布之前一定要進行簽名。
2.2.1. 創(chuàng)建一個秘鑰庫
在 macOS 或者 Linux 系統(tǒng)上窗宦,執(zhí)行下面的命令:
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
在 Windows 系統(tǒng)上赦颇,執(zhí)行下面的命令:
keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
2.2.2. 在app中引用秘鑰庫
創(chuàng)建一個名為 /android/key.properties
的文件,它包含了密鑰庫位置的定義:
storePassword=<上一步驟中的密碼>keyPassword=<上一步驟中的密碼>keyAlias=keystoreFile=<密鑰庫的位置赴涵,e.g. /Users/<用戶名>/key.jks>
注意:這個文件一般不要提交到代碼倉庫
- 修改.gitignore文件
# Android ignore/android/key.properties
2.2.3. 在gradle中配置簽名
通過編輯 /android/app/build.gradle
文件來為我們的 app 配置簽名:
1.在 android
代碼塊之前添加:
android { ...}
替換為秘鑰庫的信息
- 將
key.properties
文件加載到keystoreProperties
對象中媒怯。
def keystoreProperties = new Properties()def keystorePropertiesFile = rootProject.file('key.properties')if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile))}android {...}
2.在 buildTypes
代碼塊之前添加:
buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, // so `flutter run --release` works. signingConfig signingConfigs.debug } }
替換為下面的代碼:
-
build.gradle
文件中配置signingConfigs
部分
signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } } buildTypes { release { signingConfig signingConfigs.release } }
現(xiàn)在我們發(fā)布的app就會被自動簽名了
1.3. 打包應(yīng)用程序
目前Android支持打包兩種應(yīng)用程序:APK、AAB
APK文件:
Android application package
目前幾乎所有的應(yīng)用市場都支持上傳APK文件
用戶直接安裝的就是APK文件
# 運行 flutter build apk (flutter build 默認帶有 --release 參數(shù))flutter build apk
AAB文件:(推薦)
- Android App Bundle
- Google推出的一種新的上傳格式髓窜,某些應(yīng)用市場不支持的
- 會根據(jù)用戶打包的aab文件扇苞,動態(tài)生成用戶設(shè)備需要的APK文件
# 運行 flutter build appbundle。 (運行 flutter build 默認構(gòu)建一個發(fā)布版本寄纵。)flutter build appbundle
2.4. 發(fā)布應(yīng)用程序
Android應(yīng)用程序可以發(fā)布到很多的平臺鳖敷,包括國內(nèi)的平臺和國外的Google Play
國內(nèi)的應(yīng)用市場非常多,包括360程拭、百度定踱、小米等等
- 可以根據(jù)不同的應(yīng)用市場相關(guān)的規(guī)則,上傳對應(yīng)的APK或者AAB文件恃鞋,填寫相關(guān)的信息審核即可
國外的應(yīng)用市場通常只有一個Google Play
1.需要申請一個Google Play 開發(fā)者賬號
需要支付25美元注冊費用的信用卡崖媚,信用卡需要支持Visa, Master Amex, Discover, JCB。
2.進入到管理中心恤浪,創(chuàng)建應(yīng)用發(fā)布即可
進入了Google Play Console管理中心