鉴于Android市场众多,基于各种利益考虑,以及未来app能够更有针对性的投放市场,肯定是要监测每个渠道的数据的。

如果通过eclipse每次修改下渠道名,然后再导出包,如果有十多个渠道要分发,那就得打十多个包,这无疑是很费力的,程序员的精力不应该过多的耗费在这些琐碎重复的事情上。这些琐碎重复的事情能用机器来做最好就让机器来做。

我是一个比较懒的人,不乐意做琐碎重复的事情。几个月前,在网上找了好久,也没发现有能够进行批量多渠道打包的工具,就想着琢磨自己写一个。以前在外包公司做测试的时候学过一些批处理命令和perl脚本,不过忘得差不多了,但是网上搜了下立马就能回忆起怎么用。经过了三四个晚上的奋战,总算是把多渠道打包的工具给写出来了。

该工具能够对Android工程进行编译,混淆,优化,打包,Ant据说也可以,但是不会用也懒得学。我厂用的是Umeng的渠道统计,在AndroidManifest.xml文件里添加如下此句

<meta-data android:value="{qudao_tag}" android:name="UMENG_CHANNEL"></meta-data>

即可,把{qudao_tag}填写在配置文件里,工具打包时会自动替换{qudao_tag}为相应的渠道名。

已经用了好几个月了,基本上是稳定了,现在决定把它开源出来下载地址,我想还是有很多人需要的。整个工具每个脚本的执行过程如下图所示(clickMeToStartCompile是需要用户点击的,当然点击clickMeToCompile效果也一样):

混淆主要用的是eclipse自动生成的混淆脚本proguard.cfg,但发现自己做的项目用到了webview以及js调用,混淆之后js根本找不到相应的方法,于是最后加了如下这句才好了

-keep public class * extends android.app.Activity
{
public protected *;
}

,这句其实就是声明所有activity里面的public,protected方法都不要混淆。混淆之后,反馈的错误信息室无法准确定位的,但可以根据错误反馈的方法通过混淆时生成的map找到对应源码的方法。

用命令行编译的方式对认识整个编译的过程是很有帮助的,有兴趣的可以看看下,其中还有不完善的地方,有兴趣有能力的可以帮忙改善下。

有不能使用或是不明白的可以留言问我。

如有转载,请注明出处:http://www.cnblogs.com/huangtianhui/archive/2012/07/14/2591382.html

更多相关文章

  1. Android(安卓)内存泄露与优化,以及MAT工具
  2. 配置整理——如何在Android(安卓)studio里配置JPush推送
  3. Android数据与界面绑定工具简述
  4. apk反编译和重新打包
  5. Android(安卓)性能监测工具,优化内存、卡顿、耗电、APK的方法
  6. Android开发-从硬件到APP(一) : 单独编内核驱动模块
  7. Android(安卓)自动化测试工具初探
  8. [置顶] Android学习之Build环境初探
  9. Android高效率编码-细节,控件,架包,功能,工具,开源汇总,你想要的这里

随机推荐

  1. Android源码下载断线
  2. Android应用程序添加自定义的property属
  3. Android(安卓)Studio引入.so文件的正确姿
  4. Activity的四种启动模式和onNewIntent()
  5. [置顶] Android(安卓)上如何移植live555
  6. Android刷Recovery
  7. Android(安卓)Material Design 使用TabLa
  8. android音频hal层简介
  9. 重新解压打包android 根文件系统 ramdisk
  10. Android(安卓)内核源代码交叉编译