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.") throw new Exception("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 plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { signingConfigs { // 这里“debug”不是一个自定义变量,而是一个特定的关键词,凡是使用--debug模式,都会引用到这里 // 目前看来,debug模式没办法在buildTypes里面按flavors指定编译签名,所有口味的debug模式只能用同一个签名 debug { storeFile file("starlock.keystore") storePassword '123456' keyAlias = 'starlock' keyPassword '123456' } // 下面的pre、sky、xhj 都是自定义变量,自身不起任何作用,而是看哪里引用了它们 pre { storeFile file("starlock.keystore") storePassword '123456' keyAlias = 'starlock' keyPassword '123456' } sky { // CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown storeFile file("sky.jks") storePassword 'sky2028' keyAlias = 'upload' keyPassword 'sky2028' } xhj { storeFile file("xhj.jks") storePassword 'xhj8872' keyAlias = 'upload' keyPassword 'xhj8872' } } // ----- BEGIN flavorDimensions (autogenerated by flutter_flavorizr) ----- flavorDimensions "flavor-type" productFlavors { dev { dimension "flavor-type" applicationId "com.starlock.lock.dev" signingConfig signingConfigs.pre resValue "string", "app_name", "星锁-dev" manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.dev" } pre { dimension "flavor-type" applicationId "com.starlock.lock.pre" signingConfig signingConfigs.pre resValue "string", "app_name", "星锁" manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.pre" } sky { dimension "flavor-type" applicationId "com.skychip.lock" signingConfig signingConfigs.sky resValue "string", "app_name", "锁通通" manifestPlaceholders.JPUSH_PKGNAME = "com.skychip.lock" } xhj { dimension "flavor-type" applicationId "com.xhjcn.lock" signingConfig signingConfigs.xhj resValue "string", "app_name", "鑫锁" manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock" } } // ----- END flavorDimensions (autogenerated by flutter_flavorizr) ----- compileSdkVersion flutter.compileSdkVersion ndkVersion flutter.ndkVersion lintOptions{ checkReleaseBuilds false abortOnError false } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } sourceSets { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { applicationId "com.skychip.lock" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. minSdkVersion 25 targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName // 为减少体积,使用不同架构分包发布编译选项 flutter build apk --split-per-abi // 所以需要禁用ndk在同一个个包中包含多个架构 // 但是禁用NDK配置,又无法使用flutter run 命令了,因为编译完成它按照名称匹配找不到.apk包 ndk { //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so) abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64" } manifestPlaceholders = [ JPUSH_PKGNAME : "这里不重要,在口味配置", //JPush 上注册的包名对应的 Appkey. JPUSH_APPKEY : "7ff37d174c1a568a89e98dad", //暂时填写默认值即可. JPUSH_CHANNEL : "flutter_channel", //若不集成厂商通道,可直接跳过以下配置 XIAOMI_APPID : "MI-2882303761520287291", XIAOMI_APPKEY : "MI-5352028744291", ] splits { abi { enable true reset() // x86_64,x86,armeabi-v7a,armeabi,arm64-v8a // x86_64,x86,armeabi-v7a,armeabi,arm64-v8a include "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64" universalApk true } } } buildTypes { release { // 高德地图导致release编译模式下应用闪退,根据:[高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法](https://blog.csdn.net/weixin_39370093/article/details/109631210) // 为release模式设置混淆可以解决地图闪退问题 // 真实的解决办法 minifyEnabled false shrinkResources false productFlavors.dev.signingConfig signingConfigs.pre productFlavors.pre.signingConfig signingConfigs.pre productFlavors.sky.signingConfig signingConfigs.sky productFlavors.xhj.signingConfig signingConfigs.xhj } } } flutter { source '../..' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation('com.amap.api:location:5.6.0') implementation('com.amap.api:3dmap:8.1.0') implementation 'cn.jiguang.sdk:jpush:5.2.3' implementation 'com.huawei.hms:push:6.12.0.300' implementation 'cn.jiguang.sdk.plugin:xiaomi:5.2.3' }