module下的gradle文件的基本配置

本文將介紹平常android開發(fā)當(dāng)中項(xiàng)目module的gradle文件中的基本配置(不包含創(chuàng)建的library進(jìn)行上傳到j(luò)center的腳本配置)怠惶,以及針對一些常見的問題進(jìn)行說明宗侦。
歡迎加入交流群:微信群(AndroidRunner )践宴、QQ群(314896948)
歡迎關(guān)注微信公眾號:AndroidRunner

在項(xiàng)目的module目錄下的gradle文件主要包含三個節(jié)點(diǎn)兢交,分別是apply、android和dependencies会烙,下面就將這三個節(jié)點(diǎn)分別做一個介紹半等。

1.apply節(jié)點(diǎn)

apply所標(biāo)識的用以區(qū)分了application以及l(fā)ibrary。這個節(jié)點(diǎn)的作用就是用來區(qū)分當(dāng)前module是可以作為應(yīng)用程序還是作為一個應(yīng)用程序的支持庫module拾氓。

application module使用如下:

applyplugin:'com.android.application'

library使用如下:

apply plugin: 'com.android.library'

2.android節(jié)點(diǎn)

  • packagingOptions

      packagingOptions {
          pom.properties'
          exclude 'project.properties'
          exclude 'META-INF/LICENSE.txt'
          exclude 'META-INF/LICENSE'
          exclude 'META-INF/NOTICE.txt'
          exclude 'META-INF/NOTICE'
          exclude 'META-INF/DEPENDENCIES.txt'
          exclude 'META-INF/DEPENDENCIES'
      }
    

我們在開發(fā)過程當(dāng)中可能會遇到這樣的問題冯挎,導(dǎo)入了很多的三方庫或者框架,在項(xiàng)目編譯的時候會報(bào)重復(fù)文件錯誤咙鞍,如下圖



解決這個錯誤的方法就可以在packagingOptions中加入以下兩句:

    exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
    exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
  • lintOptions

      lintOptions {
             disable 'MissingTranslation'
          abortOnError false
          ignoreWarnings true
      }
    

其中disable 'MissingTranslation'是在lint檢查的時候禁用翻譯缺少檢查织堂,如果你的項(xiàng)目不考慮國際化可以加上,如果需要國際化就去掉該行即可奶陈。abortOnError false設(shè)置在lint檢查時如果出現(xiàn)error是否需要中斷,如果對lint檢查要求不高可以設(shè)置為false附较,關(guān)心lint檢查的話設(shè)置true即可吃粒。ignoreWarnings true設(shè)置是否忽略警告,在lint檢查時會對一些代碼進(jìn)行警告比如有用了過時API的注解地方拒课,一般可以設(shè)置為true徐勃,忽略掉警告。lintOptions還有其他一些控制開關(guān)早像,具體可以點(diǎn)進(jìn)lintOptions源碼查看僻肖。

  • signingConfigs

      signingConfigs {
          debug {
              keyAlias 'android'
              keyPassword 'android'
              storeFile file('E:/debug.jks')
              storePassword 'android'
          }
          release {
              keyAlias 'psw'
              keyPassword 'psw'
              storeFile file('keystore addresss')
              storePassword 'psw'
          }    
         }
    

signingConfigs是項(xiàng)目module的簽名配置信息,主要包括調(diào)試版和發(fā)布版卢鹦,考慮隱私信息可以僅使用debug即可臀脏,release在導(dǎo)出包使用手動添加。幾個字段含義應(yīng)該開發(fā)者都比較清楚了冀自,這里不做介紹揉稚。

  • compileSdkVersion

      compileSdkVersion 23
    

編譯SDk的版本號,改版本號決定使用的SDK對應(yīng)的android源碼熬粗,android源碼隨著版本的不斷更新搀玖,各個版本間也有著一定的區(qū)別,這里所填寫的版本號關(guān)系到具體代碼的一些API的使用驻呐,可以根據(jù)當(dāng)前APP的版本兼容要求做相應(yīng)的兼容灌诅。

  • buildToolsVersion

      buildToolsVersion "23.0.2"
    

使用的編譯工具版本號指定芳来,對于應(yīng)編譯版本號即可。

  • defaultConfig

      defaultConfig {
          applicationId "com.xxx"http://app的唯一標(biāo)識符猜拾,一般使用包名
          minSdkVersion 14 //app要求最低的SDK版本號 對于應(yīng)android可使用的最低系統(tǒng)版本
          targetSdkVersion 23 //目標(biāo)版本SDK版本號
          versionCode 1 // app版本號
          versionName "1.0.0" // app版本名稱
    
          // 多渠道打包默認(rèn)渠道(以umeng為例)
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "GF"]
      }
    

defaultConfig里面可以設(shè)置app的一些相關(guān)默認(rèn)配置信息即舌,包括應(yīng)用的id,可使用最低版本,版本號关带,版本名稱等侥涵。

  • buildTypes

      buildTypes {
          debug {
              minifyEnabled false
              zipAlignEnabled false
              shrinkResources false
          }
          release {
              minifyEnabled true
              zipAlignEnabled true
              shrinkResources true
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
    

buildTypes設(shè)置編譯對應(yīng)的版本時所需的一些配置設(shè)置,可以針對調(diào)試版和發(fā)布版進(jìn)行不同的設(shè)置是否需要混淆宋雏、是否需要壓縮芜飘、是否需要刪減無用資源等。

  • sourceSets

      sourceSets.main {
          jniLibs.srcDir 'libs'
      }
    

sourceSets用來設(shè)置項(xiàng)目對應(yīng)文件資源的路徑位置磨总,比如習(xí)慣平常的把jni文件so包存放在libs目錄下即可設(shè)置jniLibs.srcDir 'libs'嗦明,也可以設(shè)置其他文件目錄,包括源碼蚪燕,資源娶牌,jar包等等。

  • productFlavors

      productFlavors {
         GF {}
          wandoujia {}
          //... add more
      }
    
      productFlavors.all { flavor ->
          flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
      }
    

productFlavors提供了多渠道打包的渠道設(shè)置馆纳,成列了可生產(chǎn)的取到列表诗良,productFlavors.all通過遍歷productFlavors中的所有條目對應(yīng)替換AndroidManifest.xml下面meta節(jié)點(diǎn)key為UMENG_CHANNEL_VALUE的value,從而生成對應(yīng)渠道的apk包

3.dependencies

dependencies下面是項(xiàng)目的依賴第三方支持庫存放鲁驶,包括libs目錄及目錄樹下子目錄所有的jar包鉴裹,以及按照jcenter倉庫庫命名的的三方支持庫。樣例如下:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'

    compile 'com.squareup.picasso:picasso:2.5.2' //picasso
    compile 'com.squareup.okio:okio:1.6.0' //okio
    compile 'com.squareup:otto:1.3.8' //otto
    compile 'com.alibaba:fastjson:1.2.7' //fastjson
}

下面給出一個完整的gradle基本配置#

apply plugin: 'com.android.application'

android {

    packagingOptions {
        exclude 'project.properties'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/DEPENDENCIES'
    }

    lintOptions {
        disable 'MissingTranslation'
        abortOnError false
        ignoreWarnings true
    }

    signingConfigs {
        debug {
            keyAlias 'android'
            keyPassword 'android'
            storeFile file('E:/debug.jks')
            storePassword 'android'
        }
        release {
            keyAlias 'psw'
            keyPassword 'psw'
            storeFile file('keystore addresss')
            storePassword 'psw'
        }
    }

    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.xxx"http://app的唯一標(biāo)識符钥弯,一般使用包名
        minSdkVersion 14 //app要求最低的SDK版本號 對于應(yīng)android可使用的最低系統(tǒng)版本
        targetSdkVersion 23 //目標(biāo)版本SDK版本號
        versionCode 1 // app版本號
        versionName "1.0.0" // app版本名稱

        // 多渠道打包默認(rèn)渠道(以umeng為例)
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "GF"]
    }

    buildTypes {
        debug {
            minifyEnabled false
            zipAlignEnabled false
            shrinkResources false
        }
        release {
            minifyEnabled true
            zipAlignEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets.main {
        jniLibs.srcDir 'libs'
    }

    productFlavors {
        GF {}
        wandoujia {}
        //... add more
    }

    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'

    compile 'com.squareup.picasso:picasso:2.5.2' //picasso
    compile 'com.squareup.okio:okio:1.6.0' //okio
    compile 'com.squareup:otto:1.3.8' //otto
    compile 'com.alibaba:fastjson:1.2.7' //fastjson
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末径荔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子脆霎,更是在濱河造成了極大的恐慌总处,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睛蛛,死亡現(xiàn)場離奇詭異鹦马,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)忆肾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門菠红,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人难菌,你說我怎么就攤上這事试溯。” “怎么了郊酒?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵遇绞,是天一觀的道長键袱。 經(jīng)常有香客問我,道長摹闽,這世上最難降的妖魔是什么蹄咖? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮付鹿,結(jié)果婚禮上澜汤,老公的妹妹穿的比我還像新娘。我一直安慰自己舵匾,他們只是感情好俊抵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坐梯,像睡著了一般徽诲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吵血,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天谎替,我揣著相機(jī)與錄音,去河邊找鬼蹋辅。 笑死钱贯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的侦另。 我是一名探鬼主播秩命,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淋肾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起爸邢,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤樊卓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后杠河,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碌尔,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年券敌,在試婚紗的時候發(fā)現(xiàn)自己被綠了唾戚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡待诅,死狀恐怖叹坦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卑雁,我是刑警寧澤募书,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布绪囱,位于F島的核電站,受9級特大地震影響莹捡,放射性物質(zhì)發(fā)生泄漏鬼吵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一篮赢、第九天 我趴在偏房一處隱蔽的房頂上張望齿椅。 院中可真熱鬧,春花似錦启泣、人聲如沸涣脚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涩澡。三九已至,卻和暖如春坠敷,著一層夾襖步出監(jiān)牢的瞬間妙同,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工膝迎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粥帚,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓限次,卻偏偏與公主長得像芒涡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卖漫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,104評論 25 707
  • 參考 中文官網(wǎng)構(gòu)建指南:https://developer.android.google.cn/studio/bu...
    FinalSky閱讀 5,351評論 0 16
  • Gradle配置最佳實(shí)踐 本文會不定期更新费尽,推薦watch下項(xiàng)目。如果喜歡請star羊始,如果覺得有紕漏請?zhí)峤籭ssu...
    Solang閱讀 1,635評論 0 4
  • 序 言 初一的又一學(xué)期過去了旱幼。在這一年的學(xué)習(xí)過程中,你有很頑強(qiáng)的對抗突委,對抗你的...
    一溪風(fēng)月閱讀 466評論 0 2
  • 挑了一個冷門的工作室柏卤,但是我很喜歡,因?yàn)槭遣瀹嬙扔汀_€是很期待的缘缚。 今天班級最后一次出去,我也最后的確定了敌蚜,我沒有一點(diǎn)...
    刀井閱讀 286評論 0 0