前奏
? ? ? ?多渠道打包壤靶,很多是為了在各渠道上線使用的。而我主要是為了方便測(cè)試版使用的舌界。最近做項(xiàng)目由于出現(xiàn)過(guò)內(nèi)存泄漏需要分析九妈,使用Android Studio+MAT分析工具分析比較繁瑣,也很耗時(shí)猎拨,使用Leakcanary框架集成到項(xiàng)目中可以很方便在運(yùn)行的時(shí)候在手機(jī)上看出來(lái)膀藐,效率高很多了。加之自己剛換MAC2016版需用轉(zhuǎn)接口連接手機(jī)红省,連接經(jīng)常不穩(wěn)定看Log日志不方便额各,便想在測(cè)試的時(shí)候輸出Toast而發(fā)布版不用Toast,如果代碼都在一起只有一兩行像原來(lái)注釋反注釋的方法分別打出不同的APK還比較方便吧恃,但是如果代碼比較多且在不同的類(lèi)里面就比較繁瑣或容易忘記了虾啦。使用多渠道打包正合適。本文不講那么簡(jiǎn)單的痕寓,介紹簡(jiǎn)單的使用方法傲醉。
使用
#郭德綱
說(shuō)了不是那么多,那么如何簡(jiǎn)單的使用呢厂抽,搜過(guò)很多教程需频,接下來(lái)就總結(jié)下自己覺(jué)得比較方便的方式了。修改Modoule中的build.gradle筷凤,在android閉包中加入如下代碼:
productFlavors {
production {}//正式發(fā)布版本
dev {}//開(kāi)發(fā)測(cè)試版本
}
build后點(diǎn)擊左側(cè)面板的Build Variants昭殉,就可以看到可以選擇dev或production來(lái)打包了。
那么如何能實(shí)現(xiàn)方便測(cè)試的那種需求呢藐守?莫慌挪丢,接下來(lái)就來(lái)就是見(jiàn)證奇跡的時(shí)刻。
我們?cè)贛odule的src目錄下新建dev和production文件夾卢厂,并創(chuàng)建與main文件夾下Java文件同樣的包名乾蓬。新建相同的類(lèi),類(lèi)里面方法名一樣慎恒,方法里面的代碼不一樣任内。可以看到當(dāng)選中一個(gè)渠道時(shí)對(duì)應(yīng)下代碼是正常的融柬,另外一個(gè)渠道對(duì)應(yīng)下代碼標(biāo)紅死嗦,這樣就可以使用同樣的方法名在不同的渠道下執(zhí)行不同的代碼塊了。
比如我的dev下的AppInit代碼:
public class AppInit {
public void init(){
if (LeakCanary.isInAnalyzerProcess(AppApplication.getAppContext())) {
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}
LeakCanary.install(AppApplication.getInstance());
}
}
production下的AppInit代碼:
public class AppInit {
public void init(){
}
}
在自己的Application類(lèi)里面調(diào)用init方法粒氧,分別運(yùn)行兩種渠道可以看到開(kāi)發(fā)版多了Leaks圖標(biāo)越除,正式版沒(méi)有Leaks圖標(biāo),這樣就達(dá)到了想要的效果了。
其他還有可以更改應(yīng)用名摘盆,應(yīng)用包名等功能……