Flutter(二十) 打包發佈

一. Android打包和發佈

1.1. 填寫應用配置

1.1.1. 基本信息

在之前講解應用程序的配置信息時,我們已經介紹過,這裏不再過多介紹

  • 應用的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進行配置:

  • 比如默認情況下應用程序是不能發送網絡請求的,如果之後App中有用到網絡請求,那麼需要在AndroidManifest.xml中進行如下配置(默認debug模式下有配置網絡請求)
  • 比如我們需要訪問用戶的位置,那麼需要在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>

1.2. 應用程序簽名

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

1.2.1. 創建一個祕鑰庫

在 macOS 或者 Linux 系統上,執行下面的命令:

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

在 Windows 系統上,執行下面的命令:

keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key

在這裏插入圖片描述

1.2.2. 在app中引用祕鑰庫

創建一個名爲 /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 {
...
}
  1. 在 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
       }
   }

現在我們發佈的app就會被自動簽名了

1.3. 打包應用程序

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

APK文件:

  • Android application package
  • 目前幾乎所有的應用市場都支持上傳APK文件
  • 用戶直接安裝的就是APK文件
# 運行 flutter build apk (flutter build 默認帶有 --release 參數)
flutter build apk

AAB文件:(推薦)

  • Android App Bundle
  • Google推出的一種新的上傳格式,某些應用市場不支持的
  • 會根據用戶打包的aab文件,動態生成用戶設備需要的APK文件
# 運行 flutter build appbundle。 (運行 flutter build 默認構建一個發佈版本。)
flutter build appbundle

1.4. 發佈應用程序

Android應用程序可以發佈到很多的平臺,包括國內的平臺和國外的Google Play

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

  • 可以根據不同的應用市場相關的規則,上傳對應的APK或者AAB文件,填寫相關的信息審覈即可

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

  1. 需要申請一個Google Play 開發者賬號

    • 需要支付25美元註冊費用的信用卡,信用卡需要支持Visa, Master Amex, Discover, JCB。
    • 谷歌支付網站
  2. 進入到管理中心,創建應用發佈即可

    • 進入了Google Play Console管理中心

在這裏插入圖片描述

二. iOS打包和發佈

2.1. 填寫應用信息

2.1.1. 基本信息

和Android一致

2.1.2. 版本信息

和Android一致

2.1.3. 用戶權限配置

在iOS中某些權限,需要用戶允許,爲了添加這些權限需要配置info.plist文件:
在這裏插入圖片描述

2.2. Apple開發者賬號

2.2.1. 申請開發者賬號

蘋果發佈應用程序,必須申請一個Apple開發者賬號:

  • 蘋果開發者網站
  • 填寫AppleID(沒有的話先申請AppleID)
  • 加入開發者計劃
    • 個人和公司:$99/年
    • 企業賬號:$299/年

2.2.2. 配置相關證書

發佈iOS應用程序需要配置相關的Apple ID和證書:

  • 蘋果開發者個人賬戶
  • 登錄開發者的賬號:
    • 下載和安裝證書,電腦才具備發佈程序的能力
    • 1.創建AppID(和自己的應用程序的AppID是一直的)
    • 2.配置發佈者證書(iOS Distribution)

在這裏插入圖片描述

2.2.3. 創建發佈App

我們需要在App Store創建一個新的應用程序:

2.3. 打包發佈應用

2.3.1. Xcode登錄AppleID

在Xcode中登錄自己的AppleID
在這裏插入圖片描述

2.3.2. 打包和發佈應用

應用簽名信息:

在這裏插入圖片描述
打包應用程序:

  1. 設備選擇真機(這裏必須選擇真機)
    在這裏插入圖片描述
  2. Product -> Archive -> Distribute App
    在這裏插入圖片描述
    在這裏插入圖片描述

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

  • 需要刪除ios/Flutter目錄下之前生成的App.framework
  • 因爲這個framework默認是給模擬器生成的,我們發佈的程序要跑在真機設備上

2.4. Application loader

目前很多應用程序的發佈喜歡藉助於Application loader,所有的流程都可以在這個工具中完成

  • 具體的使用過程可以查找相關的資料,用法比較簡單
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章