Android-проект компилируется и запускается без уровня модуля build.gradle.Это правильно? - PullRequest
0 голосов
/ 25 августа 2018

У меня есть 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 голосов
/ 25 августа 2018

один не обязательно требует модулей (что было распространено во времена Eclipse IDE с Android ADT и ant или mvn), в то время как вы можете разбить файл на apply plugin: 'com.android.application' и переместить его в подкаталог иссылаться на него как на модуль в settings.gradle (который стал просто стандартом в Android Studio).

это в основном зависит от того, требуются ли дополнительные модули в проекте - и при наличии проекта с одним подпроектомпо умолчанию, меньше усилий для добавления и / или удаления других модулей, без необходимости сначала возиться.также это может сократить время сборки, когда не всегда приходится перестраивать всю кодовую базу, а только один модуль изменился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...