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
相关推荐
xy34531 分钟前
Axure 9.0 中继器核心结构
前端·ui·html·axure·原型·产品设计
老王以为8 分钟前
走进 AI Agent 第四篇(上):知识获取管道——RAG 基础
前端·人工智能·全栈
夏天要喝冰可乐21 分钟前
一处写作,多平台分发:我给掘金做了一款开源 Chrome 插件
前端·chrome·vibecoding
货拉拉技术31 分钟前
货拉拉开源Hadice:安卓 & 鸿蒙桌面调试工具
前端
Godikov1 小时前
Android 工业终端保活实战:前台服务 + 开机自启 + 更新自启的三重保障
android
字节暗面1 小时前
SO加固强度怎么量化?腾讯ACE与FairGuard静态分析实测
android·逆向
程序猿DD1 小时前
OctaFuse Gateway 2.11.0:流式请求优化、用户折扣策略与错误契约升级
前端·后端
尾善爱看海1 小时前
《JavaScript 数组操作全攻略:12 类 API + 30 个实战场景 + 20 个避坑指南》
前端·javascript·面试
君赏1 小时前
FlutterPatch:把 Shorebird 热更新的控制面搬回自己服务器
flutter
计算机魔术师2 小时前
Anthropic 估值冲 4 万亿,但企业客户已经偷偷换了便宜模型
前端