![](/img/trans.png)
[英]How to solve the error of different version of libraries in build.gradle?
[英]How I can separate version of libraries in "build.gradle" app
我正在尝试将库的版本分开以将它们全部放在一个位置,以节省时间和复杂性。
我在一些博客的一些评论中看到一个人,他用这种方式来做这件事。 他发布了下一个屏幕。
我不能用这种方式来构建gradle,但我认为这是一个好方法。
我的项目 build.gradle 文件:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
// Definition of versions of libraries
ext {
toolVersions = [
android :[
versionCode : 1,
versionName : "0.0.1",
minSdk : 16,
targetSdk : 26,
compileSdk : 26,
buildTools : "26.0.2",
support : "26.1.0"
],
espressoCore : "2.2.2",
junit : "4.12"
]
libVersions = [
glide : "4.2.0",
flubber : "1.0.1"
]
}
我的应用程序 build.gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion toolVersions.android.compileSdk
buildToolsVersion toolVersions.android.buildTools
defaultConfig {
applicationId "com.maol.brastlewark"
minSdkVersion toolVersions.android.minSdk
targetSdkVersion toolVersions.android.targetSdk
versionCode toolVersions.android.versionCode
versionName toolVersions.android.versionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:' + toolVersion.espressoCore, {
exclude group: 'com.android.support', module: 'support-annotations'
})
// SUPPORT LIBRARIES
compile 'com.android.support:appcompat-v7:' toolVersion.support
compile "com.android.support:support-core-utils:$rootProject.toolVersion.support"
testCompile "junit:junit:$rootProject.toolVersion.junit"
// IMAGE LOADER LIBRARY
compile "com.github.bumptech.glide:glide:$rootProject.libVersions.glide"
annotationProcessor "com.github.bumptech.glide:compiler:$rootProject.libVersions.glide"
// VIEW ANIMATIONS
compile "com.appolica:flubber:$rootProject.libVersions.flubber"
}
我不知道如何在 build.gradle (应用程序)中使用它。 房间里的任何人都可以给我一些建议吗?
谢谢
您可以创建一个文件(例如gradleScript/dependencies.gradle
):
ext {
//Version
supportLibrary = '26.1.0'
//Support Libraries dependencies
supportDependencies = [
design : "com.android.support:design:${supportLibrary}",
recyclerView : "com.android.support:recyclerview-v7:${supportLibrary}",
cardView : "com.android.support:cardview-v7:${supportLibrary}",
appCompat : "com.android.support:appcompat-v7:${supportLibrary}",
supportAnnotation: "com.android.support:support-annotations:${supportLibrary}",
]
}
在顶层文件build.gradle
添加:
// Load dependencies
apply from: 'gradleScript/dependencies.gradle'
在module1/build.gradle
:
// Module build file
dependencies {
//......
compile supportDependencies.appCompat
compile supportDependencies.design
}
您可以使用与您的问题相同的构造。 要保留 lint 更新检查,您只需包含版本号(而不是整个依赖项名称)。
build.gradle
文件中创建一个ext
块ext 块中的每个项目都像一个映射,因此我们可以在一个数组中组织依赖版本。
ext {
playServicesVersions = [
base : '17.6.0',
location: '18.0.0',
maps : '17.0.0'
]
supportVersions = [
nameHere: '3.0.0'
]
}
请注意,此处使用大括号是因为访问了多个变量。
dependencies {
implementation "com.google.android.gms:play-services-base:${playServicesVersions.base}"
implementation "com.google.android.gms:play-services-location:${playServicesVersions.location}"
implementation "com.google.android.gms:play-services-maps:${playServicesVersions.maps}"
}
为此,您可以在 build.gradle 文件中声明ext{}
块。
ext {
def AAVersion = '4.0-SNAPSHOT' // change this to your desired version
}
dependencies {
apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
}
如果你想使用数组:
ext {
supportDependencies = [
design : "com.android.support:design:${supportLibrary}",
// whatever lib...
]
}
那么当你想调用它时:
dependencies {
compile supportDependencies.design
}
您可以在settings.gradle中声明依赖项:
dependencyResolutionManagement {
versionCatalogs {
libs {
alias('protobuf').to('com.google.protobuf:protobuf-java:3.15.8')
alias('snappy').to('org.xerial.snappy:snappy-java:1.1.8.4')
alias('junit').to('junit:junit:4.13.2')
}
}
}
然后在build.gradle中使用它们:
dependencies {
api libs.protobuf
api libs.snappy
testImplementation libs.junit
}
它也适用于多项目构建。
详细请参考官方文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.