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
相关推荐
Csvn3 小时前
框架性能优化
前端
yuanlaile4 小时前
2026年全新Flutter 跨平台开发全栈学习资料整理
flutter·getx·鸿蒙 next·flutter开发鸿蒙·flutter入门实战·flutter全栈
回眸&啤酒鸭4 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户69371750013844 小时前
2026,程序员的时代拐点到了
android·前端·后端
大龄秃头程序员5 小时前
一次 iBeacon + BLE 无感解锁方案的实现记录
前端
小兔子5 小时前
Python 的 GIL 与 free-threading:3.13 之后「去 GIL」走到哪一步了
前端
IT_陈寒5 小时前
SpringBoot自动配置差点让我加班到凌晨
前端·人工智能·后端
guslegend6 小时前
脚手架原理与本地调试:从 bin 软链接到 npm link
前端·npm·node.js·脚手架·前端工程化
浪潮IT馆6 小时前
Android Studio 非最新版本下载安装教程
android·ide·android studio
海码事务所7 小时前
Google Play 新个人开发者账号上架指南:12 人连续 14 天封闭测试怎么做?
前端