Android项目无需模块级build.gradle即可编译和运行。这样对吗?

时间:2018-08-25 19:06:26

标签: android gradle android-gradle build.gradle

我有一个3年的项目(Android服务),其中只有一个顶级(项目级别)build.gradle文件。

文件如下:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
    }
}
apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 21
    buildToolsVersion "22.0.1"

    productFlavors {
        arm {
            ndk {
                abiFilters = ["armeabi-v7a", "arm64-v8a"]
            }
        }
    }

    defaultConfig {
        applicationId "com.mycompany.myapp"
        minSdkVersion 17
        targetSdkVersion 19
        versionCode 1
        versionName "9.99.99.99"
    }

    signingConfigs {
        release {
            storeFile file("myapp.jks")
            storePassword "mypwd"
            keyAlias "myalias"
            keyPassword "mykeypwd"
        }
    }

    buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug{
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

我已阅读的所有文档和教程,包括Google和Gradle官方文档,都指出应该有2个Gradle文件,分别是项目级和模块级。

我的项目只有一个项目级的build.gradle文件,看起来像是两者的组合。该项目编译并运行没有任何问题。因此,如果项目只有一个模块,则模块级build.gradle是否必须?

1 个答案:

答案 0 :(得分:1)

一个不一定需要模块(在带有Android ADT和antmvn的Eclipse IDE上很常见),尽管您可以在apply plugin: 'com.android.application'拆分文件并移动它进入子目录,并在settings.gradle中将其作为模块引用(这已成为Android Studio的标准)。

这基本上取决于是否在一个项目中需要其他模块-并且默认情况下,一个子项目包含一个子项目,而添加和/或删除其他模块的工作却较少,而不必先弄乱。同样,当不必总是重建整个代码库,而只是模块一个已更改时,这可以减少构建时间。