Gradle之BuildConfig自定義常量

注意:本篇文章是本人閱讀相關(guān)文章的總結(jié),方便以后查閱召耘,所有內(nèi)容非原創(chuàng),侵權(quán)刪。

本篇文章內(nèi)容來自于
Gradle之使用BuildConfig自定義常量
Android Studio之BuildConfig類

目錄

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

1. 什么是BuildConfig

BuildConfig是android studio在打包時(shí)自動(dòng)生成的一個(gè)java類褐隆。

BuildConfig在哪里污它?
BuildConfig類在項(xiàng)目工程的build/generated/source/buildConfig/androidTest或debug或release中,這些目錄中的BuildConfig類中有相同的常量字段。

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

2. 使用BuildConfig自定義常量

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

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
            //buildConfigField用于給BuildConfig文件添加一個(gè)字段
            //三個(gè)參數(shù):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項(xiàng)目
添加好這些值后固惯,rebuild一下項(xiàng)目梆造,然后在BuildConfig類中,這些我們剛剛定義的值就會(huì)顯示出來葬毫,這些值就可以在整個(gè)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文件,同時(shí)通過將敏感信息存放在工程中的gradle.properties中贴捡,可以避免將其上傳到版本控制系統(tǒng)(svn或者git上)忽肛,從而將敏感信息控制在少數(shù)人手里,而不是暴露給所有svn或者git權(quán)限的人栈暇。
但是安全級(jí)別也是很低的麻裁,我們可以對(duì)生成的APK反編譯,查看BuildConfig.class文件源祈,還是可以看到API Key的取值煎源。

第一步:在app/build.gradle設(shè)置BuildConfig

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

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

AppKey=123456

第三步:使用

Log.d("xl",BuildConfig.KEY);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末香缺,一起剝皮案震驚了整個(gè)濱河市手销,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌图张,老刑警劉巖锋拖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異祸轮,居然都是意外死亡兽埃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門适袜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柄错,“玉大人,你說我怎么就攤上這事苦酱∈勖玻” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵疫萤,是天一觀的道長(zhǎng)颂跨。 經(jīng)常有香客問我,道長(zhǎng)扯饶,這世上最難降的妖魔是什么恒削? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任池颈,我火速辦了婚禮,結(jié)果婚禮上蔓同,老公的妹妹穿的比我還像新娘饶辙。我一直安慰自己,他們只是感情好斑粱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布弃揽。 她就那樣靜靜地躺著,像睡著了一般则北。 火紅的嫁衣襯著肌膚如雪矿微。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天尚揣,我揣著相機(jī)與錄音涌矢,去河邊找鬼。 笑死快骗,一個(gè)胖子當(dāng)著我的面吹牛娜庇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播方篮,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼名秀,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了藕溅?” 一聲冷哼從身側(cè)響起匕得,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巾表,沒想到半個(gè)月后汁掠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡集币,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年考阱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞠苟。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡羔砾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出偶妖,到底是詐尸還是另有隱情,我是刑警寧澤政溃,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布趾访,位于F島的核電站,受9級(jí)特大地震影響董虱,放射性物質(zhì)發(fā)生泄漏扼鞋。R本人自食惡果不足惜申鱼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望云头。 院中可真熱鬧捐友,春花似錦、人聲如沸溃槐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昏滴。三九已至猴鲫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谣殊,已是汗流浹背拂共。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姻几,地道東北人宜狐。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蛇捌,于是被迫代替她去往敵國和親抚恒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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

  • 這一章主要針對(duì)項(xiàng)目中可以用到的一些實(shí)用功能來介紹Android Gradle豁陆,比如如何隱藏我們的證書文件柑爸,降低風(fēng)險(xiǎn)...
    acc8226閱讀 7,601評(píng)論 3 25
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)盒音,斷路器表鳍,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,070評(píng)論 25 707
  • 轉(zhuǎn)載注明出處:http://www.reibang.com/p/5255b100930e 0. 前言 完全由個(gè)人翻...
    王三的貓阿德閱讀 2,511評(píng)論 0 4
  • “那么譬圣,可以給我講講你的故事嗎?” “我…沒有什么故事雄坪±迨欤” 如果說,這些也算作故事的話维哈。 那年我獨(dú)自踏上離鄉(xiāng)的車绳姨,...
    與愁予閱讀 697評(píng)論 0 1