Різниця між build.gradle (Project) та build.gradle (Модуль)


98

Я намагаюся додати залежність Android-асинхронного Http-клієнта у свій проект. Отже, у проекті є два файли build.gradle.

введіть тут опис зображення

Як я розумію, існують різні види залежностей:

  1. Той, який визначено на кореневому рівні build.gradle (Проект: Мій додаток)
  2. Один із сценаріїв build.gradle (Проект: Мій додаток)
  3. Інша - build.gradle (Модулі: додаток)

Це питання стосується сховищ для залежностей buildScript, трохи пояснимо перші два типи.

Також build.gradle (Проект: Мій додаток) говорить

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

Тому я здогадуюсь код залежності Android-асинхронного Http-клієнта слід додати у build.gradle (Модуль: додаток).

Якби хтось міг дати чітке уявлення про все це для кращого розуміння, було б чудово.


3
якщо зовнішня бібліотека, так, вам слід додати build.gradle(Modules:app)або перейти туди, File -> Project Structure -> Modules -> (Choose project you want to add library) -> Dependenciesде ви побачите зелений знак хреста, натиснувши цю опцію Module Dependencyта додавши бібліотеку
— yout

Додаючи до build.gradle (Модуль: додаток), що дає мені помилку, Failed to find: com.loopj.android:android-async-http:1.4.5 тому, що він не може завантажити безпосередньо, я також встановив проксі. Я завантажив файл jar і спробував вручну, але як File Repository.. це правильний шлях.
— Аніл Бхаскар

для простоти використовуйте Project Structureперейдіть Modulesта виберіть свій проект. Там ви побачите green cross sign. Клацнувши, що відкриє New Moduleвікно. Там ви вирішите імпортувати свою бібліотеку. Якщо у вас є .jarфайл, виберіть нижче import .JAR or .AAR package. Інакше скопіюйте свою банку в libsпапку та Module:appдодайте ці залежності:dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile files('libs/your_jar_file.jar') }
— hrskrs

Відповіді:


49

build.gradle(Project:My-app)

Файл збірки верхнього рівня, куди можна додати параметри конфігурації, спільні для всіх підпроектів / модулів.

Кожен проект міститьtop-level gradle file . Він в основному містить common configsдля всіх modules. Що б це не включило top-level gradle, це вплине на всіх modules.

колишній:

// 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:2.0.0-alpha3'

        //Maven plugin
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(Module:app)

Створіть файл конкретного модуля (куди ви додаєте свої залежності, конфігурації підписання, типи складання, аромати тощо)

Усі modulesмають певний gradleфайл . Що б не було включено до цього gradleфайлу, це вплине лише на те, moduleщо включено.

колишній:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.hrskrs.gesturefun"
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':gesture-fun')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.jakewharton:butterknife:7.0.1'
}

43

Це трохи заплутано, оскільки Android Studio за замовчуванням показує обидва build.gradleфайли поруч один з одним (при використанні перегляду Android).

введіть тут опис зображення

Якщо ви переключитесь на перегляд проекту, ви побачите фактичну структуру та місце розташування різних build.gradleфайлів.

введіть тут опис зображення

Файл build.gradle(Project: MyApplication) знаходиться в кореневій папці проекту, і його параметри конфігурації застосовуються до кожного модуля проекту. Модуль - це відокремлений фрагмент більшого проекту. У багатомодульному проекті ці модулі мають власні завдання, але працюють разом, щоб сформувати весь проект. У більшості Android-проектів є лише один модуль - модуль додатків.

Файл build.gradle(Модуль: додаток) тут знаходиться в appпапці. Налаштування його складання стосуються лише модуля програми. Якби був ще один модуль, то і у цього модуля був би власний build.gradleфайл. Як приклад , я зробив проект бібліотеки з трьома модулями: модулем бібліотеки, модулем демо-програми та іншим модулем програми, який я планую використовувати для тестування. У кожного з них є свої build.gradleфайли, які я можу налаштувати.

введіть тут опис зображення

У базовому проекті майже все, що потрібно для редагування, буде знаходитись у build.gradleфайлі модуля програми . Ви можете запам'ятати його так:

Ви робите додаток , тому перейдіть до файлу build.gradle(Модуль: додаток ).

Подальше читання


1

Щодо співвідношення двох gradleфайлів, hrskrs зробив дуже чітке пояснення , Я докладу про це доповнення.

якщо у вашому проекті є лише один модуль (наприклад, додаток ), перевага top build.gradle (Project: My-app) не проявляється дуже ясно. тому що ви можете налаштувати все у build.gradle (Модуль: додаток) про Модуль і змінити лише один файл під час оновлення протягом наступних днів。

але якщо у вашому проекті є 5 модулів, і сталося, що вони мають однакову залежність A , якщо ви не використовуєте верхній build.gradle (Project: My-app), вам потрібно підтримувати 5 файлів протягом наступних днів.

до речі, build.gradle (Модуль: додаток) може замінити build.gradle (Проект: Мій додаток) .

Цей дизайн може покращити ремонтопридатність APP

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.