Gradle實(shí)用技巧

Gradle是一個基于Apache Ant和Apache Maven概念的項(xiàng)目自動化建構(gòu)工具褒墨。它使用一種基于Groovy的特定領(lǐng)域語言(DSL)來聲明項(xiàng)目設(shè)置驳癌,拋棄了基于XML的各種繁瑣配置宛蚓。

gradle使用技巧.jpg
  • 構(gòu)建工具包括 make,Ant,Maven,Lvy和現(xiàn)在的Gradle,差不多是一步步進(jìn)化而來,前面幾種都是基于XML,不擅長if這類邏輯判斷搂根,而Gradle基于Groovy有自己的語法。

1.布局文件分包

將res文集愛你下的layout修改為layouts锦积,然后新建layout->activity,新建layout->adapter歉嗓,新建layout->fragment
新建layout->fragment充包,新建layout->content等等,然后在你的build.gradle下配置代碼:

        main {
            res.srcDirs = [
                    'src/main/res/layouts/activity',
                    'src/main/res/layouts/adapter',
                    'src/main/res/layouts/content',
                    'src/main/res/layouts/fragment',
                    'src/main/res/layouts',
                    'src/main/res'.
            ]
        }
    }

2.配置簽名信息

  • 新建簽名信息
signingConfigs {
        config {
            storeFile file('xxx.jks')
            storePassword '123456'
            keyAlias 'meibaa'
            keyPassword '123456'
        }
    }

-在buildTypes里面添加配置信息

  buildTypes {
        release {
            signingConfig signingConfigs.config
 }
    }

3.為生成的apk添加代碼混淆遥椿,去除未用資源

          shrinkResources true
            zipAlignEnabled true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

當(dāng)然在生成apk的過程在可能會出現(xiàn)一些未知error
可以添加忽略

 lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

4.在debug測試過程和relaese過程中配置不同信息

buildTypes {
        release {
            buildConfigField("boolean", "isDebug", "false")
            buildConfigField("String", "coder", "\"ZABone\"") //
            buildConfigField("int", "age", "26")
        }

        debug {
            applicationIdSuffix ".debug"
            buildConfigField("boolean", "isDebug", "true")
            buildConfigField("String", "coder", "\"ZABone\"") //
            buildConfigField("int", "age", "26")

            resValue("bool", "test_is_debug", "true")
            resValue("string", "testCoder", "\"ZABone\"")
            resValue("integer", "test_age", "26")
        }
    }

1.修改debug版本的包名

applicationIdSuffix ".debug"http://表示在當(dāng)前包名后面增加.debug也可以自定義
  1. 為debug和relaease版本配置不同信息:
    -在java代碼里面生成
    //添加了boolean類型的參數(shù)
     buildConfigField("boolean", "isDebug", "true")
      // 添加了String類型的參數(shù)
      buildConfigField("String", "coder", "\"ZABone\"") //
       // 添加了int類型的參數(shù)
       buildConfigField("int", "age", "26")
       //獲取方式  BuildConfig.isDebug     BuildConfig.coder   BuildConfig.age  
  • 在res文件下面生成xml
           resValue("bool", "test_is_debug", "true")
            resValue("string", "testCoder", "\"ZABone\"")
            resValue("integer", "test_age", "26")
            //獲取方式  getString(R.string.coder);

5. 設(shè)置渠道包(一般使用第三方例如umeng,當(dāng)然也可以自定義)

-在manifest里面添加渠道包名稱占位符

      <meta-data
            android:name="PRODUCT"
            android:value="${CHANNEL_VALUE}"/>

-在build.gradle里面設(shè)置渠道信息

 productFlavors {
        xiaomi { manifestPlaceholders = [CHANNEL_VALUE: "XIAO_MI"] }
        c360 { manifestPlaceholders = [CHANNEL_VALUE: "C360"] }
    }

當(dāng)然在AS 3.0以后可能編譯不通過淆储,添加如下代碼于defaultConfig 下的versionCode下面即可

flavorDimensions "versionCode"

表示當(dāng)前渠道版本信息

6. 設(shè)置打包生成時(shí)間

-在defaultConfig中添加

      buildConfigField("String", "buildTime", "\"" + getDate() + "\"")

-在build.gradle中的android包體之外添加

def getDate() {
    return new Date().format("yyyy-MM-dd HH:mm:ss")
}

通過 BuildConfig.buildTime即可獲取build時(shí)間

7. 為jar包遠(yuǎn)程依賴設(shè)置代理

由于公司不能訪問外網(wǎng)冠场,而AS每次啟動需要連接遠(yuǎn)程依賴,可按照如下實(shí)現(xiàn)
-在app的build.gradle中添加遠(yuǎn)程依賴倉庫

 repositories {
        google()
        jcenter()
       //公司倉庫地址
        maven{ url 'http://xxxx.yyy.com:8081/repository/android-public/'}
    }

然后在所有的項(xiàng)目依賴中也添加

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
       //公司倉庫地址
          maven{   url 'http://xxxx.yyy.com:8081/repository/android-public/'
                   credentials{
                                 username  '張三'
                                 password   '123456'
                 }     
                       }
    }
}

或許本砰,或出現(xiàn)305.jar包錯誤
在build.gradle中的android包體內(nèi)添加即可解決

configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碴裙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舔株,老刑警劉巖莺琳,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異载慈,居然都是意外死亡惭等,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門办铡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辞做,“玉大人,你說我怎么就攤上這事寡具〕用” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵童叠,是天一觀的道長框喳。 經(jīng)常有香客問我,道長厦坛,這世上最難降的妖魔是什么五垮? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮粪般,結(jié)果婚禮上拼余,老公的妹妹穿的比我還像新娘。我一直安慰自己亩歹,他們只是感情好匙监,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著小作,像睡著了一般亭姥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顾稀,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天达罗,我揣著相機(jī)與錄音,去河邊找鬼静秆。 笑死粮揉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抚笔。 我是一名探鬼主播扶认,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殊橙!你這毒婦竟也來了辐宾?” 一聲冷哼從身側(cè)響起狱从,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叠纹,沒想到半個月后季研,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡誉察,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年与涡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冒窍。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡递沪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出综液,到底是詐尸還是另有隱情款慨,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布谬莹,位于F島的核電站檩奠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏附帽。R本人自食惡果不足惜埠戳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蕉扮。 院中可真熱鬧整胃,春花似錦、人聲如沸喳钟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奔则。三九已至蛮寂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間易茬,已是汗流浹背酬蹋。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抽莱,地道東北人范抓。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像食铐,于是被迫代替她去往敵國和親匕垫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評論 25 707
  • 用兩張圖告訴你璃岳,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料年缎? 從這篇文章中你...
    hw1212閱讀 12,732評論 2 59
  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載铃慷。 https://blog.csdn.net/zhaoyanj...
    勤奮的pangdunhu閱讀 2,038評論 0 1
  • 轉(zhuǎn)載注明出處:http://www.reibang.com/p/5255b100930e 0. 前言 完全由個人翻...
    王三的貓阿德閱讀 2,520評論 0 4
  • 我想你現(xiàn)在一定很忙沒空理我 那你就只看見前三個字就好了 在所有人眼中都平凡又渺小的我們蝎毡,卻在彼此的眼中閃閃發(fā)亮
    chinaandliuxiao閱讀 171評論 1 0