精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android 技巧-Debug 判斷不再用 BuildConfig

企業(yè)動(dòng)態(tài)
Android 開(kāi)發(fā)中一般會(huì)通過(guò) BuildConfig.DEBUG 判斷是否是 Debug 模式,從而做一些在 Debug 模式才開(kāi)啟的特殊操作,比如打印日志。這樣好處是不用在發(fā)布前去主動(dòng)修改,因?yàn)檫@個(gè)值在 Debug 模式下為 true,Release 模式下為 false。

Android 開(kāi)發(fā)中一般會(huì)通過(guò) BuildConfig.DEBUG 判斷是否是 Debug 模式,從而做一些在 Debug 模式才開(kāi)啟的特殊操作,比如打印日志。這樣好處是不用在發(fā)布前去主動(dòng)修改,因?yàn)檫@個(gè)值在 Debug 模式下為 true,Release 模式下為 false。

1. 問(wèn)題

如果應(yīng)用只有一個(gè) Module 沒(méi)有問(wèn)題,Debug 模式下 BuildConfig.DEBUG 會(huì)始終為 false。如果現(xiàn)在有兩個(gè) Module,分別為 App 和 Lib,且 App 依賴 Lib,在 Lib 內(nèi)有工具類 LogUtils,代碼如下:

當(dāng)我們?cè)?App Module 內(nèi)調(diào)用 LogUtils 時(shí)我們會(huì)發(fā)現(xiàn)始終無(wú)法打印日志,因?yàn)樯厦娴?BuildConfig.DEBUG 會(huì)始終為 false。為什么呢?

2. 原因

BuildConfig.java 是編譯時(shí)自動(dòng)生成的,并且每個(gè) Module 都會(huì)生成一份,以該 Module 的 packageName 為 BuildConfig.java 的 packageName。所以如果你的應(yīng)用有多個(gè) Module 就會(huì)有多個(gè) BuildConfig.java 生成,而上面的 Lib Module import 的是自己的 BuildConfig.java,編譯時(shí)被依賴的 Module 默認(rèn)會(huì)提供 Release 版給其他 Module 或工程使用,這就導(dǎo)致該 BuildConfig.DEBUG 會(huì)始終為 true。

3. 解決方案

根據(jù)上面分析的原因,目前我們有兩個(gè)思路:

(1) 始終調(diào)用最終運(yùn)行的 Module 的 BuildConfig,因?yàn)樗鼪](méi)有被任何其他 Module 依賴,所以 BuildConfig.DEBUG 值會(huì)準(zhǔn)確。

(2) 讓被依賴的 Module 提供除 Release 版以外的其他版本。

3.1 解決方案一:使用其他的 BuildConfig.java

如果 Lib Module 中能夠 import 到外層真正運(yùn)行 App 的 BuildConfig 就 ok 了,如下:

通過(guò)反射得到真正執(zhí)行的 Module 的 BuildConfig,在自己的 Application 內(nèi)調(diào)用:

AppUtils.syncIsDebug(getApplicationContext());

這樣看起來(lái)達(dá)到目的了。

但仔細(xì)看看會(huì)發(fā)現(xiàn)這種解決方案還是有問(wèn)題,因?yàn)?BuildConfig.java 的 packageName 是 Module 的 Package Name,即 AndroidManifest.xml 中的 package 屬性,而 context.getPackageName() 得到的是應(yīng)用的 applicationId,這個(gè) applicationId 通過(guò) build.gradle 是可以修改的。所以當(dāng) build.gradle 中的 applicationId 與 AndroidManifest.xml 中的 package 屬性不一致時(shí),上面的反射查找類路徑便會(huì)出錯(cuò)。

PS:這種方案還有個(gè)變種就是通過(guò) android.app.ActivityThread.currentPackageName 得到包名,從而省去傳遞 Context 初始化的步驟,但依然有 applicationId 被修改后類查找不到類似的問(wèn)題。

3.2 解決方案二:Lib publishNonDefault

讓被依賴的 Module 提供除 Release 版以外的其他版本,這種方案需要將所有被依賴 library 中添加:

  1. android {  
  2. publishNonDefault true  

表示該 Module 不使用默認(rèn)配置,這樣會(huì)同時(shí)打包其他版本,包括 Debug 版。另外需要在 App Module 中將其依賴的 library 如下逐個(gè)添加:

  1. dependencies { 
  2. releaseCompile project(path: ':library', configuration: 'release'
  3. debugCompile project(path: ':library', configuration: 'debug'

表示依賴不同版本的依賴 Module。

然而這種方式所有 Module 配置都需要修改,侵入性太強(qiáng)。

3.3 最終解決方案:使用 ApplicationInfo.FLAG_DEBUGGABLE

既然 BuildConfig 的方式行不通,我們反編譯 Debug 包和 Release 包對(duì)比看看有沒(méi)有其他的區(qū)別,會(huì)發(fā)現(xiàn)他們 AndroidManifest.xml 中 application 節(jié)點(diǎn)的 android:debuggable 值是不同的。Debug 包值為 false,Release 包值為 true,這是編譯自動(dòng)修改的。所以我們考慮通過(guò) ApplicationInfo 的這個(gè)屬性去判斷是否是 Debug 版本,如下:

在自己的 Application 內(nèi)調(diào)用進(jìn)行初始化,

AppUtils.syncIsDebug(getApplicationContext());

這樣以后調(diào)用 AppUtils.isDebug() 即可判斷是否是 Debug 版本,比如在上面的 LogUtils 中。同時(shí)適用于 Module 是 Lib 和 applicationId 被修改的情況,比 BuildConfig.DEBUG 靠譜的多。

這個(gè)方案有個(gè)注意事項(xiàng)就是自己 App Module 中不能主動(dòng)設(shè)置 android:debuggable,否則無(wú)論 Debug 還是 Release 版會(huì)始終是設(shè)置的值。當(dāng)然本身就沒(méi)有自動(dòng)設(shè)置的必要。

【本文是51CTO專欄作者Trinea的原創(chuàng)文章,轉(zhuǎn)載聯(lián)系作者本人獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專欄
相關(guān)推薦

2014-07-09 10:56:44

.NET框架

2022-12-05 11:44:49

PrintDebugIceCream

2018-04-26 11:37:47

蘋(píng)果iPhone命名

2025-06-03 06:00:00

margin-topCSS開(kāi)發(fā)

2016-03-01 14:37:38

iOSLLDB調(diào)試技巧

2014-08-07 10:03:31

debug技巧原則

2013-07-31 13:36:07

Windows PhoVS調(diào)試技巧Windows Pho

2019-08-16 09:22:38

技術(shù)調(diào)試互聯(lián)網(wǎng)

2014-08-07 10:49:20

debugdebug技巧

2017-07-19 16:34:44

筆記本拆解技巧

2009-09-17 17:20:21

Android Deb

2025-04-03 08:00:51

2024-11-26 14:18:44

Python代碼技巧

2021-08-09 19:01:36

并行場(chǎng)景程序

2022-10-08 00:03:00

Debug技巧調(diào)試

2023-09-14 12:03:30

空指針判空

2025-11-03 04:00:00

2011-04-15 13:24:27

Android 3.0Android蜂巢

2015-03-04 14:11:43

GoogleAndroid5.0

2015-03-04 10:31:16

GoogleAndroid5.0
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文字幕亚洲一区二区av在线| 国产欧美日韩一区二区三区在线| 欧美日韩亚洲丝袜制服| 亚洲午夜精品久久久中文影院av| 国产原创中文av| 亚洲一级一区| 中文字幕日韩av| 无码人妻久久一区二区三区蜜桃| 最新中文字幕在线播放| 国产精品传媒入口麻豆| 成人午夜影院在线观看| 波多野结衣av无码| 欧美视频福利| 日日骚av一区| 可以直接看的无码av| av在线国产精品| 一本一道波多野结衣一区二区| 手机在线视频你懂的| 少妇激情av一区二区| 国产精品一卡二| 国产精品高潮视频| 黄网站免费在线| 99久久精品费精品国产风间由美| 亚洲精品v天堂中文字幕| 亚洲精品视频三区| 樱桃视频成人在线观看| 亚洲在线免费播放| 免费在线观看污污视频| 成a人片在线观看www视频| 国产不卡在线视频| 91久久国产精品| 国产成人精品亚洲| 国产人成精品一区二区三| 欧美精品免费在线| 久久精品色妇熟妇丰满人妻| 亚洲午夜久久| 日韩大片免费观看视频播放| 麻豆av免费看| 欧美经典一区| 在线综合视频播放| 视频在线观看免费高清| 日韩欧美少妇| 色呦呦网站一区| 欧美成人一区二区在线观看| sm在线播放| 亚洲动漫第一页| 免费cad大片在线观看| 日本中文字幕伦在线观看| 国产人久久人人人人爽| 欧洲一区二区日韩在线视频观看免费 | 国产精品青草久久| 天堂精品一区二区三区| 国产永久免费高清在线观看视频| 91蝌蚪porny| 另类视频在线观看+1080p| 天天综合天天色| av亚洲精华国产精华精| 国产综合18久久久久久| 午夜一区在线观看| xnxx国产精品| 欧美在线一区二区三区四区| 国产在线一二三| 欧美经典一区二区| 在线精品亚洲一区二区| 国产婷婷视频在线| 一区二区三区四区av| 久久艹国产精品| 日本在线啊啊| 日本精品一级二级| 爱爱爱爱免费视频| 日韩av综合| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 奇米精品在线| 成人精品一区二区三区免费| 国产精品久久久久久久久果冻传媒| 亚洲欧洲三级| 26uuu亚洲电影在线观看| 亚洲一区二区三区三| 奇米精品一区二区三区| 欧美暴力调教| 666欧美在线视频| 老司机免费视频| 精品国产一区二区三区香蕉沈先生| 国产小视频国产精品| 麻豆网址在线观看| 亚洲国产第一| 国产精品久久久久久久久久久久久久| 夜夜爽8888| 成人亚洲一区二区一| 欧美性色黄大片人与善| 超碰免费在线播放| 精品久久久久人成| 亚洲精品久久久中文字幕| 久久视频社区| 亚洲亚裔videos黑人hd| 青青草原在线免费观看| 久久久精品五月天| 亚洲一区国产精品| 精品视频一二三| 亚洲精品国产a久久久久久| 妺妺窝人体色www在线小说| 亚洲国产91视频| 日韩久久午夜影院| 欧美黑人性猛交xxx| 噜噜噜在线观看免费视频日韩| 91精品久久久久久久久久入口| 好吊视频一区二区三区| 国产精品国产精品国产专区不片| 日本中文字幕网址| 欧美日韩黄网站| 一区二区在线免费视频| 国产网站在线看| 久久精品国产一区二区| 欧美一区二区三区在线免费观看| 国产精品久久久久久福利| 欧美性高潮在线| 在线观看亚洲免费视频| 999视频精品| 全亚洲最色的网站在线观看| 亚洲欧美激情另类| 中文字幕在线不卡| 亚洲精品一二三四五区| 欧美91在线| 欧美国产亚洲精品久久久8v| 亚洲系列第一页| 国产欧美精品在线观看| 成熟丰满熟妇高潮xxxxx视频| 嫩呦国产一区二区三区av| 色爱av美腿丝袜综合粉嫩av| 国产嫩bbwbbw高潮| gogo大胆日本视频一区| 老司机激情视频| 国产成人免费av一区二区午夜| 国产一区二区日韩| 欧美激情黑白配| 97久久精品人人做人人爽| www.国产在线视频| 亚洲乱码一区| 欧美激情视频给我| www.精品久久| 一区二区三区鲁丝不卡| 久久综合桃花网| 一本到12不卡视频在线dvd| 国产免费一区视频观看免费 | 日韩av综合| 萌白酱国产一区二区| 精品国自产在线观看| 亚洲男人的天堂av| 在线成人免费av| 国产精品a久久久久| 99久久国产免费免费| 日本一本在线免费福利| 精品国产精品一区二区夜夜嗨| 麻豆一区二区三区精品视频| 成人av在线资源网站| 免费看黄在线看| 天堂日韩电影| 国产成人精品视频| 亚洲xxxxxx| 日韩小视频在线观看专区| 日本妇女毛茸茸| 成人爱爱电影网址| 久久久一本二本三本| 中文字幕亚洲影视| 国产精品久久久久久搜索| 第一视频专区在线| 91精品国产综合久久香蕉麻豆| 欧美日韩在线视频免费| 不卡av电影在线播放| 激情网站五月天| 日韩久久综合| 亚洲伊人久久大香线蕉av| 黄色影院在线看| 日韩精品在线观看视频| 国产偷人爽久久久久久老妇app| 国产精品久久久久影视| 欧美人与性动交α欧美精品| 亚洲另类自拍| 亚洲一区二区三区涩| av不卡一区二区| 国产ts人妖一区二区三区| 毛片av在线| 亚洲精品乱码久久久久久金桔影视 | 欧美bbbbb性bbbbb视频| 美女看a上一区| 国产毛片久久久久久国产毛片| 亚洲丁香日韩| 亚洲自拍偷拍福利| 韩国成人二区| 久久精品视频在线观看| 无码国产精品高潮久久99| 欧美日韩一区二区三区四区五区| 免费毛片在线播放免费| 欧美激情中文字幕| 国产av一区二区三区传媒| 水野朝阳av一区二区三区| 国产大尺度在线观看| 亚洲精品无吗| av一区二区三区四区电影| 国产一区二区精品调教| 国语自产精品视频在线看| 中文字幕日本在线观看| 亚洲精品美女在线| www.国产黄色| 欧美色电影在线| 日本一区二区三区免费视频| 中文字幕一区二区三中文字幕 | 国产日本亚洲高清| 怡红院一区二区| 精品一区二区免费视频| 中文字幕乱码人妻综合二区三区| 亚洲五月综合| 色噜噜色狠狠狠狠狠综合色一| 国产福利一区二区精品秒拍| 成人动漫网站在线观看| 综合久久2023| 性欧美亚洲xxxx乳在线观看| 国产网站在线免费观看| 色系列之999| 四虎在线视频免费观看| 欧美一区二区三区视频免费播放 | 亚洲大尺度美女在线| 一本一道人人妻人人妻αv| 欧美性xxxx极品hd欧美风情| 久久精品国产av一区二区三区| 日韩理论片在线| 黑人と日本人の交わりビデオ| 久久综合色一综合色88| 第四色在线视频| 国产成人免费高清| 亚洲图片 自拍偷拍| 久久精品国内一区二区三区| 99热这里只有精品在线播放| 久久国产欧美| 情侣黄网站免费看| 亚洲欧美高清| 免费成人在线视频网站| 99精品国产在热久久下载| 久草免费福利在线| 亚洲黄色影院| 欧美一区二区中文字幕| 在线观看亚洲| 青娱乐自拍偷拍| 亚洲韩日在线| 国产精品沙发午睡系列| 国产日韩欧美一区在线 | 成人在线观看高清| 亚洲人成在线播放网站岛国| 国产精品国产精品88| 亚洲欧美激情插 | 欧美激情亚洲| 美女av免费观看| 国色天香一区二区| 又大又硬又爽免费视频| 亚洲深夜激情| 欧美综合在线观看视频| 日韩成人午夜电影| 国产又黄又猛的视频| 国产一区二区三区免费播放| 男人的天堂免费| 99久久er热在这里只有精品66| 亚洲精品理论片| 国产欧美日韩亚州综合| 极品色av影院| 亚洲中国最大av网站| 欧美精品亚洲精品日韩精品| 色综合久久久久综合99| 一区二区视频播放| 欧美一区二区三区思思人| 人妻无码中文字幕免费视频蜜桃| 国产偷亚洲偷欧美偷精品| av天在线观看| 欧美久久精品午夜青青大伊人| 999精品网| 国产精品激情av在线播放| 电影一区中文字幕| 国产精品 日韩| 国内成人精品| 一本二本三本亚洲码| 一本一道久久综合狠狠老精东影业| 久久久久久久久久久久久国产精品| 免费高清成人在线| 日韩成人av影院| 欧美国产丝袜视频| 免费无遮挡无码永久在线观看视频| 欧美视频在线观看免费| 亚洲视频一区在线播放| 精品sm捆绑视频| 1769在线观看| 久久久免费精品视频| 欧美日韩女优| 国产偷久久久精品专区| 大胆日韩av| 黄页网站大全在线观看| 久久99精品国产麻豆婷婷| 亚洲天堂2024| 亚洲人精品一区| 国产精华7777777| 精品对白一区国产伦| 91在线品视觉盛宴免费| 97在线视频免费观看| av在线成人| 亚洲精品高清视频| 一本一本久久| 中文字幕视频观看| 中文字幕一区免费在线观看| 天天干天天操天天爱| 精品日产卡一卡二卡麻豆| av在线播放网站| 97不卡在线视频| 欧美日本三级| 自拍另类欧美| 日韩av不卡在线观看| 亚洲 欧美 日韩在线| 一区二区三区四区视频精品免费 | 久久久久亚洲av片无码| 一本色道亚洲精品aⅴ| 欧洲av在线播放| 欧美成人国产va精品日本一级| 一区二区视频免费完整版观看| 精品国产_亚洲人成在线| 欧美一区在线看| 91丨九色丨蝌蚪| 国产精品视频一二| jizz国产在线观看| 精品视频在线播放色网色视频| 三级网站视频在在线播放| 91久久久久久久久久| 久久中文字幕二区| www.色就是色| 欧美激情一区二区三区在线| 日韩不卡视频在线| 亚洲国产欧美一区二区三区同亚洲| 亚洲小说区图片区都市| 亚洲a级在线观看| 婷婷精品进入| 国内自拍第二页| 中文字幕一区二区三区四区不卡 | 欧美精品一区二区三区高清aⅴ | 亚洲在线视频福利| 国产精品传媒精东影业在线| 日本肉体xxxx裸体xxx免费| 国产欧美一区二区精品性色 | 精品粉嫩aⅴ一区二区三区四区| 日韩影视在线| 岛国视频一区免费观看| 在线看片欧美| 亚洲成人av免费在线观看| 五月婷婷久久综合| 婷婷国产在线| 日韩av日韩在线观看| 成人av国产| 91网址在线观看精品| 亚洲主播在线观看| 偷拍精品一区二区三区| 青青a在线精品免费观看| 国产精品三级| 看看黄色一级片| 亚洲精品视频自拍| 高潮毛片7777777毛片| 77777亚洲午夜久久多人| 最新亚洲精品| 亚洲精品午夜在线观看| 亚洲摸摸操操av| 国产 日韩 欧美 综合| 国产91精品青草社区| 区一区二视频| 污视频在线观看免费网站| 午夜伊人狠狠久久| 成年网站在线| 91精品综合久久| 99国产精品| 战狼4完整免费观看在线播放版| 日韩欧美在线网站| 男人av在线播放| 天堂av一区二区| 国产成人av电影在线观看| 国产成人精品777777| 久久精品电影网| 美女视频亚洲色图| 日韩精品你懂的| 亚洲成人黄色影院| 风间由美一区| 国产精品久久7| 午夜一区二区三区不卡视频| 美女视频久久久| 亚洲久久久久久久久久| 日韩国产一二三区| 亚洲人精品午夜射精日韩| 中文字幕在线播放不卡一区| 午夜国产在线观看| 成人午夜黄色影院| 久久精品一区二区三区中文字幕| 乱h高h女3p含苞待放| 亚洲精品之草原avav久久| 国产日韩中文在线中文字幕| 亚洲中文字幕久久精品无码喷水| 亚洲欧美日韩国产一区二区三区| 青青草超碰在线| 99热国产免费|