Gradle之BuildConfig自定義常量

本篇文章內容來自於
Gradle之使用BuildConfig自定義常量
Android Studio之BuildConfig類

目錄

  1. 什麼是BuildConfig
  2. 使用BuildConfig自定義常量
  3. 在哪裏可以配置BuildConfig
  4. BuildConfig+gradle.properties配合使用

1. 什麼是BuildConfig

BuildConfig是android studio在打包時自動生成的一個java類

BuildConfig在哪裏?
BuildConfig類在項目工程的build/generated/source/buildConfig/androidTest或debug或release中,這些目錄中的BuildConfig類中有相同的常量字段。

 

但這裏BuildConfig中的常量字段的值是完全可以自定義的,
這樣我們就可以通過定義一些常量使其在debug以及release中生成不同的字段,

2. 使用BuildConfig自定義常量

第一步:使用buildConfigField用於給BuildConfig文件添加一個字段
在app/build.gradle中的buildTypes下,我們可以爲release以及debug定義我們所需要的常量:

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
            //buildConfigField用於給BuildConfig文件添加一個字段
            //三個參數:1.要定義的常量的類型 2.該常量的命名 3.該常量的值
            buildConfigField("String", "HTTP_BASE", '"https://www.baidu.com/api/release/"')
            buildConfigField("String","HAHA","\"haahahah\"")
        }
        debug{
            buildConfigField("String", "HTTP_BASE", '"https://www.baidu.com/api/debug"')
            buildConfigField("String","HAHA","\"haahahah\"")
        }
    }
    ...
}

第二步:rebuild項目
添加好這些值後,rebuild一下項目,然後在BuildConfig類中,這些我們剛剛定義的值就會顯示出來,這些值就可以在整個module中使用了。

第三步:使用BuildConfig常量

Log.d("xl",BuildConfig.HTTP_BASE);
Log.d("xl",BuildConfig. HAHA);

3. 在哪裏可以配置BuildConfig

來自Android 與gradle 4 --gradle配置之BuildConfig與resValue

defaultConfig {
  ...
    buildConfigField("String","testKey","\"testValue\"")
}

buildTypes {
...
    debug {
        buildConfigField("String","debugtestKey","\"debugtestValue\"")
    }
}
productFlavors{
    Flavortest{
        buildConfigField("String","testFlavorKey","\"testFlavorValue\"")
    }
}

4. BuildConfig+gradle.properties配合使用

我們可以將敏感信息存放在BuildConfig文件,同時通過將敏感信息存放在工程中的gradle.properties中,可以避免將其上傳到版本控制系統(svn或者git上),從而將敏感信息控制在少數人手裏,而不是暴露給所有svn或者git權限的人
但是安全級別也是很低的,我們可以對生成的APK反編譯,查看BuildConfig.class文件,還是可以看到API Key的取值

第一步:在app/build.gradle設置BuildConfig

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //buildConfigField用於給BuildConfig文件添加一個字段
            buildConfigField("String","KEY","\"${AppKey}\"")
        }
        debug{
            buildConfigField("String","KEY","\"${AppKey}\"")
        }
    }
    ...
}

第二步:""${AppKey}""取值定義在gradle.properties文件中。

AppKey=123456

第三步:使用

Log.d("xl",BuildConfig.KEY);

使用:在接到的外包項目(雲視訊)中實際應用。

一套代碼,buildConfig配合productFlavour實現多個項目的接口調用,界面渲染,applicationid,icon。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章