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
相关推荐
不好听6131 小时前
React 核心概念:JSX、组件与数据驱动
前端·react.js
触底反弹1 小时前
🔥 React 零基础入门(中):500 行屎山代码到组件化的蜕变
前端·javascript·react.js
不好听6131 小时前
React vs Vue:两大前端框架技术选型深度对比
前端·vue.js·react.js
GuWenyue1 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
GuWenyue1 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
GitLqr1 小时前
Flutter 无障碍开发实战:玩转 Semantics 解决视障用户使用痛点
android·flutter·dart
小林ixn2 小时前
从 onclick 到 React 合成事件,再到完整应用逻辑:一次前端架构的深度剖析
前端·react.js·前端框架
Csvn3 小时前
🧩「找不到模块」排查全记录——Monorepo 下 TypeScript 路径别名的 5 种「不通」与根治方案
前端
腻害兔3 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
CodexDave3 小时前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡