Flutter 打包教程
- 1. APP 圖示
- 規格說明
- 圖示尺寸
- 在線工具
- 圖示目錄
- 2. 啟動圖片
- 規格說明
- 圖片尺寸
- 3. Android 發布
- 證書簽名說明
- 生成證書
- Gradle 配置
- 修改版本號
- 修改程式名稱
- 設定網路權限
- 編譯打包
- 輸出目錄
- 啟動頁
- 4. iOS 發布
- 修改版本號
- 編譯打包
1. APP 圖示
規格說明
https://developer.android.com/google-play/resources/icon-design-specifications
https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/app-icon/
圖示尺寸
android 512x512
ios 1024x1024
在線工具
https://www.designevo.com/cn/logo-maker/
https://icon.wuruihong.com/
圖示目錄
android/app/src/main/res
ios/Runner/Assets.xcassets/AppIcon.appiconset
2. 啟動圖片
規格說明
https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/#device-screen-sizes-and-orientations
https://developer.android.com/about/dashboards/index.html#Screens
https://uiiiuiii.com/screen/
圖片尺寸
iPhone XS Max 1242px × 2688px
android xxhdpi xhdpi
3. Android 發布
證書簽名說明
https://developer.android.com/studio/publish/app-signing?hl=zh-cn
使用簽名的主要作用是:
應用程式升級:只有以同一個證書簽名,系統才會允許安裝升級的應用程式,如果你采用了不同的證書,那么系統會要求你的應用程式采用不同的包名稱,在這種情況下相當于安裝了一個全新的應用程式,如果想升級應用程式,簽名證書要相同,包名稱要相同!
應用程式模塊化:Android 系統可以允許同一個證書簽名的多個應用程式在一個行程里運行,系統實際把他們作為一個單個的應用程式,此時就可以把我們的應用程式以模塊的方式進行部署,而用戶可以獨立的升級其中的一個模塊,
代碼或者資料共享:Android 提供了基于簽名的權限機制,那么一個應用程式就可以為另一個以相同證書簽名的應用程式公開自己的功能,以同一個證書對多個應用程式進行簽名,利用基于簽名的權限檢查,你就可以在應用程式間以安全的方式共享代碼和資料了,
生成證書
# 在 macOS 或者 Linux 系統上,執行下面的命令,不用修改
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
#如果出現如下錯誤
No Java runtime present, requesting install.
# 需要安裝java SDK或者使用
/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
Gradle 配置
- android/key.properties
storePassword=123456
keyPassword=123456
keyAlias=key
storeFile=/Users/zhitianbai/key.jks
- android/app/build.gradle
// 定義屬性讀取物件,讀取 android/key.properties
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 28
...
// 簽名配置
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
// 發布配置
release {
signingConfig signingConfigs.release
}
}
}
修改版本號
- pubspec.yaml
version: 1.0.0+1
修改程式名稱
- android/app/src/main/AndroidManifest.xml
<application
android:name="io.flutter.app.FlutterApplication"
android:label="FlutterBase"
android:icon="@mipmap/launcher_icon">
設定網路權限
- android/app/src/main/AndroidManifest.xml
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
編譯打包
flutter build apk
輸出目錄
? Built build/app/outputs/flutter-apk/app-release.apk (31.2MB).
啟動頁
- 圖片

4. iOS 發布
修改版本號
- 打開xcworkspace工程檔案

-
Display Name 真正顯示到用戶螢屏上的 App 名稱
-
Bundle Identifier 包名
-
Version(應用程式發布版本號)
對應的就是CFBundleShortVersionString,該版本的版本號是三個時期分隔的整陣列成的字串:
第一個整數代表重大修改的版本,如實作新的功能或重大變化的修訂, 第二個整數表示的修訂,實作較突出的特點,
第三個整數代表維護版本,該鍵的值不同于CFBundleVersion標識, 如當前上架版本為1.1.0,之后你更新的時候可以改為1.1.1 -
Build(應用程式內部標示)
對應的是CFBundleVersion,標識(發布或未發布)的內部版本號,用以記錄開發版本的,每次更新的時候都需要比上一次高,如:當前版本是1,下一次就要大于1,比如2,3,比如團隊打算發布1.0版本的時候,會發布很多build版本供測驗或QA團隊進行測驗,你發布了很多build,因為一直在修改著代碼,因此當你收到一條bug資訊時候,你怎么知道是哪個build引起的問題呢,這時候build版本號的優點就可以體現出來了,

編譯打包
flutter build ios

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/292067.html
標籤:其他
