如果你用的是 AndroidStudio 启动android 模拟器会自动build
如果因为版本报错 有一个属性高版本不支持 在android/build.gradle 中的 classpath 应该是3.4.1 改成3.2.1就没问题了
主要参考两篇文章
https://blog.csdn.net/weixin_41191134/article/details/88837684
https://www.cnblogs.com/niceyoo/p/11046253.html
需要用到jdk 如果没有的话需要去下载 https://www.oracle.com/technetwork/java/javase/downloads/index.html
1.生成签名文件
在打包之前我们需要一个签名文件,证明文件的唯一性。
keytool -genkey -v -keystore ~/AndroidStudioProjects/myapp/sign.jks -keyalg RSA -keysize 2048 -validity 10000 -alias keyalias
~/AndroidStudioProjects/myapp/sign.jks为签名问价存放目录,keyalias 为密钥名。
查看证书SHA1:
keytool -list -v -keystore ~/AndroidStudioProjects/myapp/sign.jks -alias keyalias -storepass 123456 -keypass 123456
其中 keyalias、storepass、keypass 分别为: 别名、密钥库密码、 sign文件密码
2.然后新建文件 key.properties
在Flutter工程中/android/key.properites创建该文件
storePassword=123456
keyPassword=123456
keyAlias=keyalias
storeFile=../sign.jks
3.配置/android/app/build.gradle文件
signingConfigs {
release {
keyAlias 'keyalias'
keyPassword '123456'
storeFile file('../../sign.jks')
storePassword '123456'
}
}
完整的代码:
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 28
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.myapp"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
keyAlias 'keyalias'
keyPassword '123456'
storeFile file('../../sign.jks')
storePassword '123456'
}
}
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
}
}
}
flutter {
source '../..'
}
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
4.打包APK
在当前项目目录的终端中执行:flutter build apk
生成的目录:当前项目\build\app\outputs\apk\release\xx.apk