Різниця між 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.