在Android開發(fā)中我們一般需要在app里獲取gradle里的配置信息:
1.在程序里使用gradle里的配置項,
2.在resouce里使用gradle里的配置項?
方法一:
一,為什么使用gradle.properties栈虚?
1袖外,對于項目而言,有時候需要配置某些敏感信息魂务。比如密碼曼验,帳號等。而這些信息需要被很多類共同使用粘姜,所以必須有一個全局的配置
2鬓照,當(dāng)需要把項目push到git上時,我們不希望別人看到我們項目的key孤紧,token等豺裆。我們可以將這些信息設(shè)置在gradle.properties中。(這一點后續(xù)需要詳解)
二号显,如何使用gradle.properties?
1臭猜,在gradle.properties文件中進行變量初始化。
2押蚤,在build.gradle(module app)中進行變量的重定義蔑歌,即將配置內(nèi)容轉(zhuǎn)化成java能夠使用的形式
其中,buildConfigField定義的方式是
buildConfigField 類型揽碘,變量名次屠,值
resValue定義的方式是
resValue XML中的類型,變量名雳刺,值
3劫灶,在java中使用。
使用BuildConfig可以直接讀取配置信息
注:在項目中直接使用“BuildConfig.APPNAME”,是因為系統(tǒng)根據(jù)build.gradle文件自動生成了BuildConfig類掖桦,該類里是一些配置常量:
4浑此,在布局文件中使用
通過build.gradle中的配置,可以直接使用@string 訪問
方法二:(不常用滞详,推薦使用方法一)
項目中有登錄頁面凛俱,但平時調(diào)試的時候每次都輸入用戶名密碼來登錄太麻煩,寫成固定值發(fā)布的時候又要重新替換和注釋料饥。所以就想從不同版本獲得信息然后代碼中控制蒲犬。
在Android項目文件中的build.gradle中,在android標簽下的defaultConfig標簽下岸啡,可以添加manifestPlaceholders原叮,里面可以存一些app的配置信息值,比如是否是發(fā)布版本。如下圖:
這樣平時編譯調(diào)試的時候使用的是debug版本默認的false奋隶,發(fā)布的時候使用的是release版本為true擂送,即只需要在代碼中獲取這個isRelease值就可控制登錄時候是否填寫用戶名密碼或者直接賦值固定值。
那怎么獲取build.gradle文件中的值呢唯欣,整個app項目中有個配置文件AndroidManifest.xml嘹吨,在application標簽下,可新寫meta-data標簽境氢,其中的value值用${value}來表示蟀拷,花括號中的value為gradle文件中的變量名。如下圖:
然后代碼中就可以寫個工具類來獲取manifest文件的meta-data的值萍聊。
代碼:
代碼中再根據(jù)返回的值進行判斷和控制即可问芬。