AndroidStudio build.gradle 配置

AndroidStudio build.gradle 配置

Android Studio是通過gradle來構建項目放可,gradle基于groovy語言泽艘。當用 AndroidStudio 創(chuàng)建工程時,會生成兩個 build.gradle 文件恩掷,一個是工程的 build.gradle 文件蹄梢,另一個是 module app 的 build.gradle 文件嫉父,接下來進行詳細的介紹

工程 build.gradle 文件

作用

  • 用于對整個工程進行配置 比如mave倉庫
  • 聲明全局常量 用于統(tǒng)一版本控制

1. Android Gradle插件

  • 'com.android.tools.build:gradle:3.5.2' 配置 Android Gradle插件版本论熙,該插件添加了專用于編譯 Android 應用的功能
  • 查看官方文檔 Gradle plugin Android Gradle DSL

2. 配置阿里云maven鏡像

  • 由于 maven 倉庫時不時抽風福青,可以配置阿里maven鏡像
  • 阿里云maven倉庫和文檔https://maven.aliyun.com
allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public/' }
        maven { url 'https://maven.aliyun.com/repository/google'}
//        當前配置的阿里云公共代理庫 https://maven.aliyun.com
//        public庫是group庫摄狱,其實代理了maven central和jcenter倉庫
        google()
        jcenter()

    }

3. 聲明常量

  • 聲明常量脓诡,用于統(tǒng)一工程量版本號
ext {
    // 聲明一些常量 用于統(tǒng)一版本號
    minSdkVersion = 15
    targetSdkVersion = 26
    compileSdkVersion = 26
    buildToolsVersion = '29.0.2'
    compileSdkVersion = 29
    versionCode = 1
    versionName = '1.0.1'
    // App dependencies
    junitVersion = '4.12'
    v7Version = '26.1.0'
    appcompatVersion='1.1.0'
}

示例


// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'
        // 這里 Android Gradle插件,該插件添加了專用于編譯 Android 應用的功能
        // 文檔在這里 https://developer.android.google.cn/studio/releases/gradle-plugin
        // 文檔在這里 http://google.github.io/android-gradle-dsl/current/
    }
}

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public/' }
        maven { url 'https://maven.aliyun.com/repository/google'}
//        當前配置的阿里云公共代理庫 https://maven.aliyun.com
//        public庫是group庫媒役,其實代理了maven central和jcenter倉庫
        google()
        jcenter()

    }
}

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

ext {
    // 聲明一些常量 用于統(tǒng)一版本號
    minSdkVersion = 15
    targetSdkVersion = 26
    compileSdkVersion = 26
    buildToolsVersion = '29.0.2'
    compileSdkVersion = 29
    versionCode = 1
    versionName = '1.0.1'
    // App dependencies
    junitVersion = '4.12'
    v7Version = '26.1.0'
    appcompatVersion='1.1.0'
}


Module build.gradle 文件

作用

  • 用于對當前module配置

1. 配置module類型(文件根節(jié)點)

  • apply plugin: 'com.android.application' 表示module為應用程序
  • apply plugin: 'com.android.library' 表示module為 Library 庫

2. Android相關配置(android{}節(jié)點下)

2.1 NDK 配置 (android - defaultConfig節(jié)點下)
  • abiFilters 用于設置編譯哪些平臺的so文件
    android {
        defaultConfig {
            externalNativeBuild {
                cmake {
                    cppFlags ""
                }
                ndk {
                    abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64'
                }
            }
        }
    }
2.2 CMake 配置(android{}節(jié)點下)
  • 配置CMakeLists路徑
 externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }
2.3 sourceSets 文件映射關系配置(android{}節(jié)點下)
  • assets assets.srcDirs 'src/main/assets', 'src/main/zincAssets'
  • jniLibs jniLibs.srcDirs '目錄1','目錄2'
  • manifest manifest.srcFile 'src/main/ZincManifest.xml'
    //文件映射關系
    sourceSets {
        main {//表示為main
            jniLibs.srcDirs = ['libs']//nativie文件的目錄
        }
    }

3. 添加相關依賴(dependencies{}節(jié)點下)

  1. api與implementation區(qū)別

    • implementation 表示只依賴,無法給其他上層模塊使用祝谚,用于隔離;api 表示除了依賴之后還能給上層模塊使用
  2. 引用全局版本常量

    • implementation "androidx.appcompat:appcompat:$rootProject.ext.appcompatVersion"
  3. 解決依賴沖突

  implementation("com.zhihu.android:matisse:0.5.2-beta4") {
        exclude group: 'com.android.support'//剔除所有support包
        exclude group: 'com.android.support', module: 'design' //剔除support包中的design 模塊
    }
  1. 查看依賴樹
    • 命令行執(zhí)行:gradlew app:dependencies 查看依賴樹

示例

apply plugin: 'com.android.application'// 表示module為應用程序
//apply plugin: 'com.android.library' // 表示module為 Library 庫

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
    defaultConfig {
        applicationId "com.example.testc"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode rootProject.ext.versionCode
        versionName rootProject.ext.versionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags ""
            }
            ndk {
//                abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64'
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }

    signingConfigs {
        debugConfig {
            keyAlias 'voice'
            keyPassword 'biggerthanbigger'
            storeFile file('release.jks')
            storePassword 'biggerthanbigger'
        }
        release {
            keyAlias 'voice'
            keyPassword 'biggerthanbigger'
            storeFile file('release.jks')
            storePassword 'biggerthanbigger'
        }
    }
    //文件映射關系
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']//nativie文件的目錄
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "androidx.appcompat:appcompat:$rootProject.ext.appcompatVersion"
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation "junit:junit:$rootProject.ext.junitVersion"
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation("com.zhihu.android:matisse:0.5.2-beta4") {
        exclude group: 'com.android.support'
        exclude group: 'com.android.support', module: 'design'
//        命令行執(zhí)行:gradlew  app:dependencies 查看依賴樹
    }


}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市酣衷,隨后出現(xiàn)的幾起案子交惯,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件席爽,死亡現(xiàn)場離奇詭異意荤,居然都是意外死亡,警方通過查閱死者的電腦和手機只锻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門玖像,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人齐饮,你說我怎么就攤上這事捐寥。” “怎么了祖驱?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵握恳,是天一觀的道長。 經(jīng)常有香客問我捺僻,道長乡洼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任匕坯,我火速辦了婚禮就珠,結果婚禮上,老公的妹妹穿的比我還像新娘醒颖。我一直安慰自己妻怎,他們只是感情好,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布泞歉。 她就那樣靜靜地躺著逼侦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腰耙。 梳的紋絲不亂的頭發(fā)上榛丢,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音挺庞,去河邊找鬼晰赞。 笑死,一個胖子當著我的面吹牛选侨,可吹牛的內(nèi)容都是我干的掖鱼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼援制,長吁一口氣:“原來是場噩夢啊……” “哼戏挡!你這毒婦竟也來了?” 一聲冷哼從身側響起晨仑,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤褐墅,失蹤者是張志新(化名)和其女友劉穎拆檬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妥凳,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡竟贯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了逝钥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澄耍。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖晌缘,靈堂內(nèi)的尸體忽然破棺而出齐莲,到底是詐尸還是另有隱情,我是刑警寧澤磷箕,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布选酗,位于F島的核電站,受9級特大地震影響岳枷,放射性物質(zhì)發(fā)生泄漏芒填。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一空繁、第九天 我趴在偏房一處隱蔽的房頂上張望殿衰。 院中可真熱鬧,春花似錦盛泡、人聲如沸闷祥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凯砍。三九已至,卻和暖如春拴竹,著一層夾襖步出監(jiān)牢的瞬間悟衩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工栓拜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留座泳,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓幕与,卻偏偏與公主長得像挑势,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纽门,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容

  • http://www.reibang.com/p/7c288a17cda8 總的來說薛耻,Android的系統(tǒng)體系結...
    燕京博士閱讀 1,206評論 0 6
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項营罢,請點擊這里進行查閱:DSL參考 1.1新構建系統(tǒng)...
    Chuckiefan閱讀 12,142評論 8 72
  • Gradle配置最佳實踐 本文會不定期更新赏陵,推薦watch下項目饼齿。如果喜歡請star,如果覺得有紕漏請?zhí)峤籭ssu...
    Solang閱讀 1,640評論 0 4
  • 版權聲明:本文為博主原創(chuàng)文章蝙搔,未經(jīng)博主允許不得轉載缕溉。 https://blog.csdn.net/zhaoyanj...
    勤奮的pangdunhu閱讀 2,044評論 0 1
  • 赤草村的中部有一座雞腎嶺,山形如同一個雞腎剖開兩半吃型。矮而鈍证鸥,只有十多米高。嶺西數(shù)百米開外就是流溪河勤晚,嶺東數(shù)十米開外...
    含辛魚閱讀 1,366評論 0 3