csdn
打包
android
https://blog.csdn.net/sundaysme/article/details/106264735
簡述
https://www.jianshu.com/p/3011c694d037
ios
簡單命令
flutter clean
rm -rf ios/Flutter/App.framework
先在項目目錄下運行
flutter build ios --release
再到xcode下進行打包
如果不進行build命令,則在xcode下會報錯:
flutter Could not find an option named "track-widget-creation".
具體打包方法:
https://github.com/bingoogolapple/bingoogolapple.github.io/issues/46
當一個純Flutter APP開發完成,我們要打包發布到App Store和各大安卓市場,這時候我們需要設置APP的版本號。
如果我們在使用原生iOS或者Android開發的時,我們會在info.plist中設置version和build或是在build.gradle中設置versionName和versionCode,他們分別表示APP的版本和構建版本。
但是我們在使用Flutter管理APP版本時,打開pubspec.yaml只看到一個version字段。這時候我們應該怎么設置APP的version和build呢?
我們在pub上隨便找一個Flutter的組件,例如官方的camera,我們可以看到截止目前為止最新的版本為:camera: ^0.5.2+1。看到這里,我想大家都明白了,Dart采用的是加號式的版本描述方式,+前面是版本號,+后面是當前版本的build號。所以我們設置APP的版本號和build次數,在這里設置即可,例如:version: 1.2.0+1。
當我們新建一個Flutter工程的時候,我們分別使用Xcode和Android Studio打開iOS和Android的工程可以看到,iOS中的 version和 build的值分別為FLUTTER_BUILD_NAME 和 FLUTTER_BUILD_NUMBER:
<!-- version --> <key>CFBundleShortVersionString</key> <string>$(FLUTTER_BUILD_NAME)</string> <key>CFBundleSignature</key> <!-- build --> <key>CFBundleVersion</key> <string>$(FLUTTER_BUILD_NUMBER)</string> <key>LSApplicationCategoryType</key>
同樣我們打開Android工程可以看到有如下定義:
def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0.0' }
versionCode flutterVersionCode.toInteger() versionName flutterVersionName
事實上,Flutter在編譯的時候會生成ios/Flutter/Generated.xcconfig和android/local.properties文件。這兩個文件由Flutter編譯自動生成,不可更改。記錄了包含SDK路徑或者文件路徑,版本信息,環境配置(release/debug)等信息。原生工程獲取版本信息的變量就定義在這兩個文件里面。
作者:readonly__
鏈接:https://www.jianshu.com/p/3011c694d037
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
https://segmentfault.com/a/1190000013672885
大致是這幾個步驟:
1.命令行生成key.jks文件;
2.在flutter項目中,android文件夾下進行相關配置,需配置的地方有:
--新建key.properyties文件,配置
storePassword=秘鑰庫密碼 keyPassword=秘鑰密碼 keyAlias=key storeFile=秘鑰完整路徑
--app/build.gradle文件中
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
3.生成apk:flutter build apk
檢測設備
adb devices
4.安裝apk:flutter install
