android gradle中如何引用 libs.versions.toml中定义的版本变量添加compose引用

1.启用版本目录功能预览

./ settings.gradle

enableFeaturePreview('VERSION_CATALOGS') // 启用版本目录功能预览

bash 复制代码
enableFeaturePreview('VERSION_CATALOGS')
rootProject.name = "ComposeApplication"
include ':app'

2.设置版本变量

./gradle/libs.versions.toml

bash 复制代码
[versions]
agp = "7.2.0"
kotlin = "1.7.10"
coreKtx = "1.6.0"
ui = "1.6.0"
material3 = "1.1.0"
uiToolingPreview = "1.6.0"
lifecycleRuntimeKtx = "2.7.0"
activityCompose = "1.8.0"
junit = "4.13.2"
junitVersion = "1.1.3"
espressoCore = "3.4.0"
uiTestJunit4 = "1.6.0"
uiTooling = "1.6.0"
composeBom = "2024.04.01"


[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
androidx-ui = { group = "androidx.compose.ui", name = "ui",version.ref = "ui" }
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" ,version.ref = "uiTooling" }
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview",version.ref = "uiToolingPreview" }
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4",version.ref = "uiTestJunit4" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" ,version.ref = "material3"}

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

3.引用版本变量 配置compose引用库

注意:需要设置

buildFeatures {

compose true //允许在项目中使用 @Composable 函数和相关组件(如 Text、Button)

}

composeOptions {

kotlinCompilerExtensionVersion '1.3.0' //指定 Compose 编译器插件的版本号

}

具体见:./app/build.gradle

bash 复制代码
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.jetbrains.kotlin.android)
}

android {
    namespace 'com.android.demo.composeapplication'
    compileSdk 34

    defaultConfig {
        applicationId "com.android.demo.composeapplication"
        minSdk 30
        targetSdk 34
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion '1.3.0'
    }
    packagingOptions {
        // 1. 保留您之前针对coroutines.pro的配置
        pickFirst 'META-INF/com.android.tools/proguard/coroutines.pro'
        pickFirst 'META-INF/proguard/coroutines.pro'

        // 2. 新增:处理当前报错的MANIFEST.MF文件(选择第一个)
        pickFirst 'META-INF/MANIFEST.MF'

        // 3. (可选但推荐)添加对其他常见META-INF冲突文件的处理
        // 这些是Android开发中频繁出现冲突的文件路径
        pickFirst 'META-INF/DEPENDENCIES'
        pickFirst 'META-INF/LICENSE'
        pickFirst 'META-INF/LICENSE.txt'
        pickFirst 'META-INF/NOTICE'
        pickFirst 'META-INF/NOTICE.txt'
        pickFirst 'META-INF/INDEX.LIST'
        pickFirst 'META-INF/io.netty.versions.properties'
        pickFirst 'META-INF/*.kotlin_module'
        pickFirst 'META-INF/*.version'
        pickFirst 'META-INF/services/**'

        resources {
            excludes = ["/META-INF/{AL2.0,LGPL2.1}"]  // 示例:排除重复资源
        }
    }
}

dependencies {
    //region 方法1 引用libs.versions.toml 中定义的版本变量,在libs.versions.toml中的变量 指定版本
    implementation libs.androidx.core.ktx
    implementation libs.androidx.ui
    implementation libs.androidx.material3
    implementation libs.androidx.ui.tooling.preview
    implementation libs.androidx.lifecycle.runtime.ktx
    implementation libs.androidx.activity.compose
    testImplementation libs.junit
    androidTestImplementation libs.androidx.junit
    androidTestImplementation libs.androidx.espresso.core
    androidTestImplementation libs.androidx.ui.test.junit4
    debugImplementation libs.androidx.ui.tooling
    //endregion

    //region 方法2 引入 BOM 再引入其它 Compose 相关的库就不需要手动指定版本号了,它们会由 BOM 指定
//    implementation platform(libs.androidx.compose.bom)
//    implementation "androidx.core:core-ktx"
//    implementation "androidx.compose.ui:ui"
//    implementation "androidx.compose.material3:material3"
//    implementation "androidx.compose.ui:ui-tooling-preview"
//    implementation "androidx.lifecycle:lifecycle-runtime-ktx"
//    implementation "androidx.activity:activity-compose"
//    testImplementation "junit:junit"
//    androidTestImplementation "androidx.test.ext:junit"
//    androidTestImplementation "androidx.test.espresso:espresso-core"
//    androidTestImplementation "androidx.compose.ui:ui-test-junit4"
//    debugImplementation "androidx.compose.ui:ui-tooling"
    //endregion
}
相关推荐
行稳方能走远3 小时前
Android C++ 学习笔记
android·c++
2501_946230983 小时前
Cordova&OpenHarmony用户账户管理
android·javascript
x66ccff3 小时前
Claude Code 安装方法
android·java·数据库
码农搬砖_20203 小时前
【一站式学会compose】 Android UI体系之 Image的使用和介绍
android·image·compose·content·contentscale·scaletype
粤M温同学3 小时前
Android Room数据库的基本使用
android·数据库
lkbhua莱克瓦243 小时前
基础-约束
android·开发语言·数据库·笔记·sql·mysql·约束
戴西软件4 小时前
CAxWorks.VPG车辆工程仿真软件:打造新能源汽车安全的“数字防线“
android·大数据·运维·人工智能·安全·低代码·汽车
ljt27249606614 小时前
Compose笔记(六十三)--SegmentedButton
android·笔记·android jetpack
Android系统攻城狮4 小时前
Android ALSA驱动进阶之设置共享内存snd_pcm_lib_mmap_iomem:用法实例(九十九)
android·pcm·音频进阶·alsa驱动·android驱动