Flutter 3.x新版android端的build.gradle.kts文件配置arm64-v8a和armeabi-v7a等

新版的android端build.gradel采用了Kotlin ,语法和原先的Groovy 有点区别,build.gradle.kt 的配置结合了上层的settings.gradle.kts文件进行配置

新语法如图:

新版使用 externalNativeBuild、ndkBuild、getDefaultProguardFile

kotlin 复制代码
externalNativeBuild {
    ndkBuild {
        abiFilters.addAll(listOf("arm64-v8a", "armeabi-v7a"))
    }
} 
//  ndkBuild还可以是CMake,例如:
//  ndkBuild {
//     path = file("src/main/cpp/Android.mk")
//  }
kotlin 复制代码
// 原先的MinifyEnabled等也改了
isMinifyEnabled = true
isShrinkResources = true

// 新版getDefaultProguardFile
proguardFiles(
    getDefaultProguardFile("proguard-android-optimize.txt"),
    "proguard-rules.pro"
) 

下面是一些常用的配置,根据自己需求配置,大多数和原先大差不差

kotlin 复制代码
plugins {
    id("com.android.application")
    kotlin("android")
}

android {
    namespace = "com.example.app"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.example.app"
        minSdk = 21
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"

        // 如果使用 native 代码
        externalNativeBuild {
            ndkBuild {
                abiFilters.addAll(listOf("arm64-v8a", "armeabi-v7a"))
            }
        }

        // 多语言支持(可选)
        resourceConfigurations.addAll(listOf("en", "zh", "ja"))
    }

    // 建议将密码等敏感信息放入 gradle.properties 文件中
    // 并用 project.property("key") 读取
       signingConfigs { 
        create("release") { 
            storeFile = file(project.property("RELEASE_STORE_FILE") as String) 
            storePassword = project.property("RELEASE_STORE_PASSWORD") as String
            keyAlias = project.property("RELEASE_KEY_ALIAS") as String
            keyPassword = project.property("RELEASE_KEY_PASSWORD") as String
        }

    }
    buildTypes {
        release {
            isMinifyEnabled = true
            isShrinkResources = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
        debug {
            isMinifyEnabled = false
            isShrinkResources = false
        }
    }

    // 构建 ABI 分包(可选)
    splits {
        abi {
            isEnable = true
            reset()
            include("arm64-v8a", "armeabi-v7a")
            isUniversalApk = false
        }
    }

    // Flutter 兼容性设置(防止构建冲突)
    packaging {
        resources {
            excludes += setOf(
                "META-INF/**",
                "lib/**/libflutter.so",
                "**/*.kotlin_module"
            )
        }
    }

    externalNativeBuild {
        ndkBuild {
            path = file("src/main/cpp/Android.mk") // 如果你使用 ndk-build
        }
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = "17"
    }
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.10")
    // 添加你需要的库
}

gradle.properties加入jks信息

properties 复制代码
RELEASE_STORE_FILE=keystore.jks
RELEASE_KEY_ALIAS=myKeyAlias
RELEASE_STORE_PASSWORD=yourStorePassword
RELEASE_KEY_PASSWORD=yourKeyPassword
相关推荐
花菜会噎住5 分钟前
MySQL 高级特性与性能优化:深入理解函数、视图、存储过程、触发器
android·mysql·函数·索引·视图
meng半颗糖5 分钟前
JavaScript 性能优化实战指南
前端·javascript·servlet·性能优化
EndingCoder7 分钟前
离线应用开发:Service Worker 与缓存
前端·javascript·缓存·性能优化·electron·前端框架
遗憾随她而去.19 分钟前
css3的 --自定义属性, 变量
前端·css·css3
haogexiaole2 小时前
vue知识点总结
前端·javascript·vue.js
哆啦A梦15884 小时前
[前台小程序] 01 项目初始化
前端·vue.js·uni-app
娅娅梨6 小时前
Android- Surface, SurfaceView, TextureView, SurfaceTexture 原理图解
android·surface
小周同学@7 小时前
谈谈对this的理解
开发语言·前端·javascript
Wiktok7 小时前
Pyside6加载本地html文件并实现与Javascript进行通信
前端·javascript·html·pyside6
一只小风华~7 小时前
Vue:条件渲染 (Conditional Rendering)
前端·javascript·vue.js·typescript·前端框架