Android Studio - 将SDK版本和依赖项添加到所有模块

时间:2017-11-06 07:42:50

标签: android android-studio gradle

在我目前工作的项目中包含许多模块和依赖项。那么有没有办法让所有这些版本和依赖项保持通用并在所有模块中重用。我知道我们可以在root build.gradle文件中定义公共依赖项,但是有关compileSdkVersions和exclude groups之类的内容。 我的依赖有时包括排除组如。

  androidTestCompile ('com.android.support.test:rules:1.0.1'){
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'appcompat'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude module: 'recyclerview-v7'
}

我们如何处理这种情况? 一旦我们添加了root build.gradle,有没有办法在app模块中添加它们,而不指定下面的各个。

compile deps.cardview
compile deps.design
compile deps.supportv4
compile deps.animation
compile deps.pagination
compile deps.shimmerlayout
compile deps.enhanced_card
compile deps.swipeanim
compile deps.appcompact

2 个答案:

答案 0 :(得分:1)

对于像compileSdkVersion,buildTypes和compileOptions这样的东西,我在root gradle文件中定义了这样的东西:

ext.android_settings_for_module = {
    compileSdkVersion COMPIlE_SDK_VERSION.toInteger()
    buildToolsVersion BUILD_TOOLS_VERSION

    defaultConfig {
        minSdkVersion 
        targetSdkVersion 
        versionCode 
        versionName 
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt')
        }
    }
    compileOptions compile_options
    lintOptions lint_options
    testOptions test_options
}

ext.lint_options = {
    //butterKnife
    disable 'InvalidPackage'
}

ext.compile_options = {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

然后,在您的模块文件中,您可以使用:

android android_settings_for_module

依赖性非常相似。在根gradle文件中定义一个字段:

ext.common_libs = [

]

然后在模块级gradle文件中使用:

dependencies {
    compile common_libs
}

答案 1 :(得分:1)

用于共享通用SDK版本和依赖项。您可以在库模块中定义共享gradle依赖项,如果app模块将库作为依赖项,则不需要指定所有内容两次。更进一步,你可以创建一个'通用'模块,它需要共享的gradle依赖关系,同时拥有app&库模块需要通用模块。

看看:

// Top-level build file where you can add configuration options common to 
all sub-projects/modules.
buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.2.3'
}
}

// Load dependencies
apply from: 'dependencies.gradle'

这里是 dependencies.gradle :适用于app中的所有模块和sdk版本。

ext {
//Version
supportLibrary = '22.2.1'

//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}",
]
}

快乐编码!!