Gradle實用技巧

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

gradle使用技巧.jpg
  • 構(gòu)建工具包括 make,Ant,Maven,Lvy和現(xiàn)在的Gradle,差不多是一步步進化而來,前面幾種都是基于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è)置打包生成時間

-在defaultConfig中添加

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

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

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

通過 BuildConfig.buildTime即可獲取build時間

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

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

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

然后在所有的項目依賴中也添加

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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容