鑒于Android市場眾多,基于各種利益考慮,以及未來app能夠更有針對性的投放市場,肯定是要監(jiān)測每個渠道的數(shù)據(jù)的。
如果通過eclipse每次修改下渠道名,然后再導(dǎo)出包,如果有十多個渠道要分發(fā),那就得打十多個包,這無疑是很費(fèi)力的,程序員的精力不應(yīng)該過多的耗費(fèi)在這些瑣碎重復(fù)的事情上。這些瑣碎重復(fù)的事情能用機(jī)器來做最好就讓機(jī)器來做。
我是一個比較懶的人,不樂意做瑣碎重復(fù)的事情。幾個月前,在網(wǎng)上找了好久,也沒發(fā)現(xiàn)有能夠進(jìn)行批量多渠道打包的工具,就想著琢磨自己寫一個。以前在外包公司做測試的時候?qū)W過一些批處理命令和perl腳本,不過忘得差不多了,但是網(wǎng)上搜了下立馬就能回憶起怎么用。經(jīng)過了三四個晚上的奮戰(zhàn),總算是把多渠道打包的工具給寫出來了。
功能:
該工具能夠?qū)ndroid工程進(jìn)行編譯,混淆,優(yōu)化,打包,Ant據(jù)說也可以,但是不會用也懶得學(xué)。我廠用的是Umeng的渠道統(tǒng)計,在AndroidManifest.xml文件里添加如下此句
<meta-data android:value="{qudao_tag}" android:name="UMENG_CHANNEL"></meta-data>
即可,把{qudao_tag}填寫在配置文件里,工具打包時會自動替換{qudao_tag}為相應(yīng)的渠道名。
說明:
已經(jīng)用了好幾個月了,基本上是穩(wěn)定了,現(xiàn)在決定把它開源出來下載地址,我想還是有很多人需要的。整個工具每個腳本的執(zhí)行過程如下圖所示(clickMeToStartCompile是需要用戶點(diǎn)擊的,當(dāng)然點(diǎn)擊clickMeToCompile效果也一樣):
混淆主要用的是eclipse自動生成的混淆腳本proguard.cfg,但發(fā)現(xiàn)自己做的項(xiàng)目用到了webview以及js調(diào)用,混淆之后js根本找不到相應(yīng)的方法,于是最后加了如下這句才好了
-keep public class * extends android.app.Activity
{
public protected *;
}
,這句其實(shí)就是聲明所有activity里面的public,protected方法都不要混淆;煜,反饋的錯誤信息室無法準(zhǔn)確定位的,但可以根據(jù)錯誤反饋的方法通過混淆時生成的map找到對應(yīng)源碼的方法。
用命令行編譯的方式對認(rèn)識整個編譯的過程是很有幫助的,有興趣的可以看看下,其中還有不完善的地方,有興趣有能力的可以幫忙改善下。