



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】關(guān)于ADT中的BuildConfig.DEBUG
前言在Android應(yīng)用程序開發(fā)中,不可避免地會常常輸出各種調(diào)試信息,通常我們會使用android.util.Log類輸出該類日志信息(這是推薦使用的方式)。然而,在項目發(fā)布的時候,我們常常需要關(guān)閉這些冗余的Log信息,手工關(guān)閉Log相當(dāng)不方便,而且容易出現(xiàn)遺漏。一種解決方案packageorg.flyingcat.util;
importandroid.util.Log;
/**
*@authorFlyingcat
*@create2014-4-23
*@version1.0
*/
publicclassAppLog{
privatestaticfinalbooleanLOG_DEBUG=true;
publicvoidd(Stringtag,Stringmsg){
if(LOG_DEBUG){
Log.i(tag,msg);
}
}
//省略重載方法……
}這里展示了一種解決方案。這實際上是對標(biāo)準(zhǔn)Log的一個簡單包裝,在正式發(fā)布之前仍然需要手工將LOG_DEBUG變量的值設(shè)置為false,頻繁發(fā)布的時候比較麻煩。ADT的新特性ADT17.0.0以上版本在Build之后,會在R.java的相同路徑下生成一個叫做BuildConfig.java的文件,內(nèi)容非常簡單:/**Automaticallygeneratedfile.DONOTMODIFY*/
packageorg.flyingcat.androidcodelib;
publicfinalclassBuildConfig{
publicfinalstaticbooleanDEBUG=true;
}在ADT的更新說明中是這樣寫的:Addedafeaturethatallowsyoutorunsomecodeonlyindebugmode.
BuildsnowgenerateaclasscalledBuildConfigcontainingaDEBUG
constantthatisautomaticallysetaccordingtoyourbuildtype.
Youcancheckthe(BuildConfig.DEBUG)constantinyourcodetorundebug-onlyfunctions.大意是:ADT17添加了一個新的特性,允許開發(fā)者僅在debug模式運行某些代碼。每次Build的時候會新生成一個BuildConfig類,包含一個DEBUG常量,這個常量會在Build的時候根據(jù)Build類型自動生成。你可以在代碼中測試(BuildConfig.DEBUG)常量來執(zhí)行僅應(yīng)在debug模式執(zhí)行的代碼。但實際上,有些時候并不能達(dá)到效果,為什么呢?很顯然,我們可能使用方法不對。如何確保關(guān)閉Log既然Build的時候根據(jù)Build類型自動生成BuildConfig類,從Eclipse的Project的菜單中可以看出來,分為手動和自動兩種類型:
默認(rèn)情況下,使用Eclipse生成的項目中bin目錄下的.apk文件,無論Build模式為哪種,DEBUG字段始終為true。這主要是由于Eclipse使用的是默認(rèn)的android調(diào)試簽名debug.keystore,這個簽名被限制為debugmode,因此和releasemode的簽名略有不同。但是,這并不是說使用AndroidTools->ExportSignedApplicationPackage生成的.apk就是releasemode!之前我記得我看的某些博客中講,只要使用AndroidTools導(dǎo)出的,DEBUG常量的值都是false,這是非常不正確和不負(fù)責(zé)任的,為此我還在客戶面前鬧過笑話::>_<::。【好吧你們知道我為什么要寫這個了】經(jīng)過多次測試,如果使用的是自動build,在簽名導(dǎo)出的時候生成的.apk很可能仍然是debugmode,即使是手動Build,偶爾也會出現(xiàn)這種情形【我使用的ADT版本為22.3.0】。為了確保自己的.apk是releasemode,建議每次發(fā)布的時候按照下列步驟執(zhí)行:取消自動Build;Clean(會丟棄所有編譯好的狀態(tài));ExportSignedApplicationPackage.有人說第三步應(yīng)該是Build,之后才是Export,但導(dǎo)出的時候?qū)嶋H上會重新Build一次。一個明顯的例子是在Clean之后gen包變空了,但是執(zhí)行Export之后它的內(nèi)容又回來了。因此我認(rèn)為可以略去這一步。可以使用一個簡單的App測試發(fā)布方式是否為debug模式,其主要代碼如下。由于篇幅所限,這里不貼出運行截圖,有需要的同學(xué)可以在文末地址免費下載任意調(diào)戲,別玩壞了:-)。//省略包聲明、導(dǎo)入語句
publicclassMainActivityextendsActivity{
privatestaticfinalStringLOG_TAG="MainActivity";
privateTextViewtextview;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(LOG_TAG,"Hello,Flyingcat.");
textview=(TextView)findViewById(R.id.textView1);
if(BuildConfig.DEBUG){
textview.setText("Thisreleaseisdebug
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝店裝修發(fā)包合同
- 2025年度養(yǎng)豬場生物安全防控體系建設(shè)合同
- 2025年度勞動合同到期解除協(xié)議書及離職員工離職證明及離職手續(xù)辦理指南
- 2025年度建筑勞務(wù)施工節(jié)能減排合作協(xié)議
- 2025年度分紅股收益分配與權(quán)益變更協(xié)議
- 2025年度數(shù)據(jù)保密審計與保密合同
- 2025年度公司免責(zé)的旅游服務(wù)合作協(xié)議
- 2025年度創(chuàng)業(yè)公司股權(quán)激勵及轉(zhuǎn)讓協(xié)議
- 2025年網(wǎng)絡(luò)游戲行業(yè)發(fā)展現(xiàn)狀分析:網(wǎng)絡(luò)游戲國內(nèi)用戶規(guī)模不斷擴大
- 崗位晉升申請書
- 2025年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 小學(xué)生拗九節(jié)課件
- 2023湖南文藝出版社五年級音樂下冊全冊教案
- Q∕GDW 11612.41-2018 低壓電力線高速載波通信互聯(lián)互通技術(shù)規(guī)范 第4-1部分:物理層通信協(xié)議
- 2006 年全國高校俄語專業(yè)四級水平測試試卷
- 新人教版數(shù)學(xué)四年級下冊全冊表格式教案
- 疫情期間離市外出審批表
- (完整版)全身體格檢查評分標(biāo)準(zhǔn)(表)
- 裝飾裝修工程施工合理化建議和降低成本措施提要:完整
- (改)提高地下室側(cè)墻剛性防水施工合格率_圖文
- 電芯品質(zhì)協(xié)議版本(標(biāo)準(zhǔn)版)
評論
0/150
提交評論