Android應用開發(fā)最佳實踐:馬甲包配置管理

在過去的半年時間中瞬欧,由于行業(yè)大環(huán)境的惡化,App產(chǎn)品需求一直處于停滯狀態(tài)罢防,接到的都是市場導向的馬甲包需求艘虎。隨著馬甲包的不斷增多,build.gradle文件的內(nèi)容長度開始變得難以接受咒吐,于是優(yōu)化之旅隨之展開顷帖。

優(yōu)化前

由于數(shù)據(jù)敏感等原因,進行了簡化脫敏處理

如圖所示由于我們采用的是productFlavor來制作馬甲包渤滞,所以造成build.gradle變長的元兇也就是productFlavor節(jié)點贬墩,這一次的優(yōu)化也就針對它來進行。

在我們的APP中妄呕,針對每個馬甲包配置的第三方key或其它屬性共有22個陶舞,當馬甲包數(shù)量到達10個之后,單這部分配置就達到了近300行绪励,每次要新增加一個馬甲肿孵,需要費不少時間在龐大的文件中找到空間去新增配置,且在一大堆文字當中疏魏,容易遺漏需要修改的配置停做。

優(yōu)化后

Android項目中的properties大閱兵一文中,我曾為了實現(xiàn)脫敏將一些Key放到local.properties中大莫,然后在build.gradle中去動態(tài)讀取蛉腌。這一次依然可以用這種形式,將這些配置抽到獨立的配置文件中以供讀取。

創(chuàng)建product對應的配置文件

首先烙丛,在項目根目錄下創(chuàng)建一個config目錄來規(guī)整馬甲包的配置文件舅巷。然后在config目錄下,創(chuàng)建若干命名格式為${flavor_name}_config.properties的配置文件河咽。最后將每個馬甲的參數(shù)以Key=Value的形式配置到對應的文件中钠右,并刪除build.gradle中的這些配置。

注意忘蟹,${flavor_name}必須和build.gradle中的productFlavors的key保持一致飒房,否則會造成無法正確讀取到配置。

修改build.gradle

在完成配置文件的創(chuàng)建工作之后媚值,就需要在build.gradle中根據(jù)需要去讀取這些配置了情屹,這里不多做解釋,直接上代碼:

android {
    flavorDimensions "default"

    productFlavors {
        product1 {}
        product2 {}
        product3 {}
    }

    productFlavors.each { flavor ->

        def props = new Properties()
        file("../config/${flavor.name}_config.properties").withInputStream { props.load(new InputStreamReader(it,"utf-8")) }

        flavor.dimension "default"

        def application_id = props.getProperty("application_id")
        def app_name = props.getProperty("app_name")
        def color_primary = props.getProperty("color_primary")
        def color_accent = props.getProperty("color_accent")
        def primary_text_dark = props.getProperty("primary_text_dark")
        def version_name = props.getProperty("version_name")
        def scheme = props.getProperty("scheme")
        def gio_project_id = props.getProperty("gio_project_id")
        def gio_scheme = props.getProperty("gio_scheme")
        def um_key = props.getProperty("um_key")
        def amap_key = props.getProperty("amap_key")
        def jpush_key = props.getProperty("jpush_key")
        def bugly_key = props.getProperty("bugly_key")

        flavor.applicationId application_id
        flavor.versionName version_name 
        flavor.manifestPlaceholders = [
                JPUSH_PKGNAME       : application_id,
                ROUTER_SCHEME       : scheme,
                JPUSH_APPKEY        : jpush_key,
                growingio_url_scheme: gio_scheme,
                UM_KEY              : um_key,
                AMAP_KEY            : amap_key
        ]

        flavor.resValue "color", "colorPrimary", color_primary
        flavor.resValue "color", "colorAccent", color_accent
        flavor.resValue "color", "primary_text_dark", primary_text_dark
        flavor.resValue "string", "app_name", app_name
        flavor.resValue "string", "growingio_project_id", "\"${gio_project_id}\""
        flavor.resValue "string", "growingio_url_scheme", gio_scheme
        flavor.buildConfigField "String", "AMAP_KEY", "\"${amap_key}\""
        flavor.buildConfigField "String", "ROUTER_SCHEME", "\"${scheme}\""
        flavor.buildConfigField "String", "UM_KEY", "\"${um_key}\""
        flavor.buildConfigField "String", "BUGLY_KEY", "\"${bugly_key}\""
}

這里需要注意的是杂腰,在將配置文件加載到Properties中時垃你,必須要明確定義charset_name,否則中文會出現(xiàn)亂碼喂很。

最后

經(jīng)過上面的一系列修改惜颇,最終得到的效果是,build.gradle內(nèi)容長度從500+降低到300-少辣,且后續(xù)有新馬甲需求的時候凌摄,該文件只會增加1行/馬甲包

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末漓帅,一起剝皮案震驚了整個濱河市锨亏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忙干,老刑警劉巖器予,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捐迫,居然都是意外死亡乾翔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門施戴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來反浓,“玉大人,你說我怎么就攤上這事赞哗±自颍” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵肪笋,是天一觀的道長月劈。 經(jīng)常有香客問我度迂,道長,這世上最難降的妖魔是什么艺栈? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任英岭,我火速辦了婚禮湾盒,結(jié)果婚禮上湿右,老公的妹妹穿的比我還像新娘。我一直安慰自己罚勾,他們只是感情好毅人,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尖殃,像睡著了一般丈莺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上送丰,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天缔俄,我揣著相機與錄音,去河邊找鬼器躏。 笑死俐载,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的登失。 我是一名探鬼主播遏佣,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼揽浙!你這毒婦竟也來了状婶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤馅巷,失蹤者是張志新(化名)和其女友劉穎膛虫,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钓猬,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡走敌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了逗噩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掉丽。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖异雁,靈堂內(nèi)的尸體忽然破棺而出捶障,到底是詐尸還是另有隱情,我是刑警寧澤纲刀,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布项炼,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锭部。R本人自食惡果不足惜暂论,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拌禾。 院中可真熱鬧取胎,春花似錦、人聲如沸湃窍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽您市。三九已至觉痛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茵休,已是汗流浹背薪棒。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留榕莺,地道東北人俐芯。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像帽撑,于是被迫代替她去往敵國和親泼各。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

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