Flutter開發(fā)(24)- 打包發(fā)布

一. Android打包和發(fā)布

1.1. 填寫應用配置

1.1.1. 基本信息

在之前講解應用程序的配置信息時,我們已經(jīng)介紹過,這里不再過多介紹

????應用的AppID

????應用的名稱

????應用的Icon

????應用的Launcher

1.1.2. 版本信息

Flutter的版本信息在哪里填寫呢?在pubspec.yaml中

version:1.0.0+1

第一次見到這個會很疑惑,后面的+1是什么意思呢?

在Android中,應用的版本分為versionCode?&?versionName

????versionCode:內部管理的版本號

????versionName:用戶顯示的版本號

在iOS中,應用的版本分為?version?&?build

????version:用戶顯示的版本????

????build:內部管理的版本

Flutter中我們如何管理這兩個版本號呢?

????1.0.0.0:用戶顯示的版本

????1:內部管理的版本

1.1.3. 用戶權限配置

在Android中某些用戶權限需要在AndroidManifest.xml進行配置:

????比如默認情況下應用程序是不能發(fā)送網(wǎng)絡請求的,如果之后App中有用到網(wǎng)絡請求,那么需要在AndroidManifest.xml中進行如下配置(默認debug模式下有配置網(wǎng)絡請求)

????比如我們需要訪問用戶的位置,那么需要在AndroidManifest.xml中進行如下配置

package="com.example.catefavor">

1.2. 應用程序簽名

Android系統(tǒng)在安裝APK的時候,首先會檢驗APK的簽名,如果發(fā)現(xiàn)簽名文件不存在或者校驗簽名失敗,則會拒絕安裝,所以應用程序在發(fā)布之前一定要進行簽名。

1.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?-keysize2048-validity10000-alias?key

1.2.2. 在app中引用秘鑰庫

創(chuàng)建一個名為?/android/key.properties?的文件,它包含了密鑰庫位置的定義:

storePassword=<上一步驟中的密碼>

keyPassword=<上一步驟中的密碼>

keyAlias=key

storeFile=<密鑰庫的位置,e.g. /Users/<用戶名>/key.jks>

注意:這個文件一般不要提交到代碼倉庫

????修改.gitignore文件

# Android ignore

/android/key.properties

1.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. 打包應用程序

目前Android支持打包兩種應用程序:APK、AAB

APK文件:

Android application package

目前幾乎所有的應用市場都支持上傳APK文件

用戶直接安裝的就是APK文件

#?運行?flutter?build?apk?(flutter?build?默認帶有?--release?參數(shù))

flutter?build?apk

AAB文件:(推薦)

Android App Bundle

Google推出的一種新的上傳格式,某些應用市場不支持的

會根據(jù)用戶打包的aab文件,動態(tài)生成用戶設備需要的APK文件

#?運行 flutter build appbundle。?(運行 flutter build 默認構建一個發(fā)布版本。)

flutter?build?appbundle

1.4. 發(fā)布應用程序

Android應用程序可以發(fā)布到很多的平臺,包括國內的平臺和國外的Google Play

國內的應用市場非常多,包括360、百度、小米等等

可以根據(jù)不同的應用市場相關的規(guī)則,上傳對應的APK或者AAB文件,填寫相關的信息審核即可

國外的應用市場通常只有一個Google Play

1.需要申請一個Google Play 開發(fā)者賬號

需要支付25美元注冊費用的信用卡,信用卡需要支持Visa, Master Amex, Discover, JCB。

https://play.google.com/apps/publish/signup/

2.進入到管理中心,創(chuàng)建應用發(fā)布即可

進入了Google Play Console管理中心

need-to-insert-img

Google Play

二. iOS打包和發(fā)布

2.1. 填寫應用信息

2.1.1. 基本信息

和Android一致

2.1.2. 版本信息

和Android一致

2.1.3. 用戶權限配置

在iOS中某些權限,需要用戶允許,為了添加這些權限需要配置info.plist文件:

配置用戶權限

2.2. Apple開發(fā)者賬號

2.2.1. 申請開發(fā)者賬號

蘋果發(fā)布應用程序,必須申請一個Apple開發(fā)者賬號:

https://developer.apple.com/

1.填寫AppleID(沒有的話先申請AppleID)

2.加入開發(fā)者計劃

個人和公司:$99/年

企業(yè)賬號:$299/年

2.2.2. 配置相關證書

發(fā)布iOS應用程序需要配置相關的AppID和證書:

https://developer.apple.com/account/

登錄開發(fā)者的賬號:

下載和安裝證書,電腦才具備發(fā)布程序的能力

1.創(chuàng)建AppID(和自己的應用程序的AppID是一直的)

2.配置發(fā)布者證書(iOS Distribution)

need-to-insert-img

證書和描述文件

2.2.3. 創(chuàng)建發(fā)布App

我們需要在App Store創(chuàng)建一個新的應用程序:

https://appstoreconnect.apple.com/

新建App,并且填寫相關信息即可

need-to-insert-img

新建APP

2.3. 打包發(fā)布應用

2.3.1. Xcode登錄AppleID

在Xcode中登錄自己的AppleID

登錄AppleID

2.3.2. 打包和發(fā)布應用

應用簽名信息:

選擇應用簽名信息

打包應用程序:

1.設備選擇真機(這里必須選擇真機)

選擇真機設備

2.Product -> Archive -> Distribute App

發(fā)布程序

發(fā)布界面

注意:如果之前的應用程序是運行在模擬器上的,那么Archive時會報錯

需要刪除ios/Flutter目錄下之前生成的App.framework

因為這個framework默認是給模擬器生成的,我們發(fā)布的程序要跑在真機設備上

2.4. Application loader

目前很多應用程序的發(fā)布喜歡借助于Application loader,所有的流程都可以在這個工具中完成

具體的使用過程可以查找相關的資料,用法比較簡單

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容