AGP7.0依赖版本管理version catalogs使用

编程入门 行业动态 更新时间:2024-10-13 02:19:38

AGP7.0依赖<a href=https://www.elefans.com/category/jswz/34/1771446.html style=版本管理version catalogs使用"/>

AGP7.0依赖版本管理version catalogs使用

AGP7.0依赖版本管理 version catalogs使用

概念

version catalogs是AGP7.0之后推出的一种依赖版本管理的方式;

好处
  • 对所有module可见,可统一管理所有module的依赖
  • 支持声明依赖bundles,组合打包依赖减少重复代码
  • 支持在单独的libs.versions.toml文件中配置依赖,支持在项目间共享依赖。
环境要求
环境工具最低版本
Android-gradle-plugin7.0
SDK Build TOOL30.0.0
NDK23.1.XXX
JDK11
Gradle Wrapper7.0
API
版本管理类型类型描述举例用法举例app/build.gradle
libraryaar、jar版本管理library(‘appcompat’, ‘androidx.appcompat’, ‘appcompat’).version(‘1.4.1’)api libs.appcompat
bundle依赖聚合管理bundle(“androidx”, [“'appcompat”," fragment"])api libs.bundles.androidx
version版本号常量管理version('compilesdk", ‘33’)compilesdk:libs.versionspilesdk.toInt()
plugingradle插件版本管理plugin(" agp", " com.android.tools.build:gradle").version(“1.7.0”)id : libs.plugins.agp
使用
  1. 在setting.gradle中开启version catalogs

    enableFeaturePreview('VERSION_CATALOGS')
    

    这一步,在gradle8.0以后不需要,7.0的时候还需要设置一下;

  2. 使用versionCatalogs创建分组,在每个组中可以使用library、bundle 、version、plugin创建版本管理

library【arr,jar版本管理】

1、在setting.gradle中做如下操作

enableFeaturePreview('VERSION_CATALOGS')//8.0的不需要这个
dependencyResolutionManagement {// 配置项目下载的maven源repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()}//引入versionCatalogsversionCatalogs {//创建分组create('androidxLibs') {//library的参数分别对应 别名、group、artifact、versionlibrary('core-ktx', 'androidx.core', 'core-ktx').version('1.8.0')library('appcompat', 'androidx.appcompat', 'appcompat').version('1.4.1')library('constraintlayout', 'androidx.constraintlayout', 'constraintlayout').version('2.1.3')}}}

2,比如在app模块中引入library依赖

dependencies {implementation androidxLibs.core.ktximplementation androidxLibs.appcompatimplementation androidxLibs.constraintlayout}
bundle【依赖聚合管理】

1、在setting.gradle中做如下操作

enableFeaturePreview('VERSION_CATALOGS')//8.0的不需要这个
dependencyResolutionManagement {// 配置项目下载的maven源repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()}//引入versionCatalogsversionCatalogs {//创建分组create('androidxLibs') {//library的参数分别对应 别名、group、artifact、versionlibrary('core-ktx', 'androidx.core', 'core-ktx').version('1.8.0')library('appcompat', 'androidx.appcompat', 'appcompat').version('1.4.1')library('constraintlayout', 'androidx.constraintlayout', 'constraintlayout').version('2.1.3')// androidX通用依赖bundle('androidx', ["core-ktx", 'appcompat', 'constraintlayout'])}}}

2,比如在app模块中引入bundle依赖

dependencies {implementation androidxLibs.bundles.androidx
}
version【版本号常量管理】

1、在setting.gradle中做如下操作

enableFeaturePreview('VERSION_CATALOGS')//8.0的不需要这个
dependencyResolutionManagement {// 配置项目下载的maven源repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()}//引入versionCatalogsversionCatalogs {//创建分组/*** 在app/build.gradle中* compileSdk:buildsdk.versionspilesdk.get().toInteger()*/create('buildsdk') {version('compileSdk', '33')version('minSdk', '24')version('targetSdk', '33')}}}

2,比如在app模块中引入version依赖

android {namespace 'com.version.catalogs'compileSdk buildsdk.versionspileSdk.get().toInteger()//引入defaultConfig {applicationId "com.version.catalogs"minSdk buildsdk.versions.minSdk.get().toInteger()//引入targetSdk buildsdk.versions.targetSdk.get().toInteger()//引入versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}
plugin【gradle插件版本管理】

versionCatalogs下载插件是从gradlePluginPotal中下载的;

一、发布到gradlePluginPortal的插件

​ 1、在setting.gradle中做如下操作

enableFeaturePreview('VERSION_CATALOGS')//8.0的不需要这个
dependencyResolutionManagement {// 配置项目下载的maven源repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()}//引入versionCatalogsversionCatalogs {//1、只需在app/build.gradle中alias(pluginLibs.plugins.hilt.android)即可create('pluginLibs') {plugin('hilt-android', 'com.google.dagger.hilt.android').version('2.41')}}}

2,比如在app模块中引入plugin依赖[app.gradle]

plugins {id 'com.android.application'id 'org.jetbrains.kotlin.android'alias(pluginLibs.plugins.hilt.android)
}

二、对于没有发布到gradlePluginPortal的插件,暂时沿用老的模式,

1、在项目的build.gradle模块中加入老的依赖

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {dependencies {// 对于没有发布到gradlePluginPortal的插件,暂时沿用老的模式,即buildScript { dependencies{  classpath 'xxx.xxx.xxx:1.0.0'}}classpath 'com.alibaba:arouter-register:1.0.2'}
}plugins {id 'com.android.application' version '8.0.1' apply falseid 'com.android.library' version '8.0.1' apply falseid 'org.jetbrains.kotlin.android' version '1.8.20' apply false}

2、在app模块引入

plugins {id 'com.android.application'id 'org.jetbrains.kotlin.android'alias(pluginLibs.plugins.hilt.android)id 'com.alibaba.arouter'
}

以上是一种依赖版本管理的方式,还有一种以为文件的形式进行管理;
1、在工程目录下创建一个libs.version.toml文件,如下图

2、libs.version.toml文件里面编写version 、plugins、libraires、bundles

[versions]
compileSdk = '33'
minSdk = '24'
targetSdk = '33'[plugins]
android-application = { id = "com.android.application", version = "7.4.1" }
android-library = { id = "com.android.library", version = "7.4.1" }[libraries]
appcompat = { module = "androidx.appcompat:appcompat", version = "1.4.1" }
material = { module = "com.google.android.material:material", version = "1.5.0" }
core-ktx = { module = "androidx.core:core-ktx", version = "1.7.0" }[bundles]
androidx = ['appcompat', 'material', 'core-ktx']

3、把libs.version.toml文件加加载进来來

//开启version-catalogs,新版本8.0不需要這句話
enableFeaturePreview('VERSION_CATALOGS')
dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {mavenLocal()google()mavenCentral()}//使用versionCatalogs标签versionCatalogs {//把libs.version.toml文件加加载进来來create('libs') {from(files("libs.version.toml"))}}
}

4、在app.gradle中使用

dependencies {//以library方式引入依赖implementation libs.appcompatimplementation libs.materialimplementation libs.core.ktx//以bundle方式引入依赖implementation libs.bundles.androidx}
plugins {//id 'com.android.application'id 'org.jetbrains.kotlin.android'alias libs.plugins.android.application
}android {namespace 'xxxxxx'compileSdk libs.versionspileSdk.get().toInteger()defaultConfig {applicationId "xxxxxxx"minSdk libs.versions.minSdk.get().toInteger()targetSdk libs.versions.targetSdk.get().toInteger()versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}

更多推荐

AGP7.0依赖版本管理version catalogs使用

本文发布于:2023-11-16 13:19:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1623642.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:版本   catalogs   version

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!