android Ant 批量多渠道打包 总结!

最近研究android里用ant打多个渠道的apk包,终于搞出头绪!!走了很多错路,希望大家不要这样子!!下面就是个人的几点总结,希望对大家有帮助:

 

     首先说的是我用的ant不是eclipse和android SDk里面自带的ant,而是从这里下载的 -- Ant官网http://ant.apache.org/ , 下载Ant,当然第一步就是安装ant了,步骤如下:

 第一步:安装 ant ,解压并配置环境变量

1)         解压Ant,比如解压到D:\ant

2)         我的电脑->属性->高级->环境变量

3)         系统变量新建ANT_HOME,变量值为d:\ant

4)         系统变量新建或修改path,变量值为%ANT_HOME%\bin

大家一定要把ant配置好,否则下面的都是扯淡了,无法顺利完成,测试ant是否成功,你可以在控制台输入Cmd 回车, ant 回车

如果出现

Buildfile: build.xml does not exist!

Build failed

恭喜你已经ant安装完毕了!!

第二步:简单了解Android打包步骤就行了,其他的都是扯淡,咱们直奔主题,打包前的准备

利用Ant批量打包的基本思想是,每次打包后自动替换渠道号,然后再次打包

从而实现多渠道打包的目的

这样带来了一个问题:Ant不支持循环,怎样循环打包?

扩展包Ant-contrib能轻松解决这个问题

可以的同学可以到http://ant-contrib.sourceforge.net/自行下载,或者去我的blog里的资源里下载,

另外Ant-contrib的标签使用也比原来的变量方便

从而达到仅使用build.xml来实现批量打包

安装方法:直接把ant-contrib-1.0b3.jar放到Ant的lib文件夹即可

第三步:编写build.xml,直接上代码!!


	
	
	
	
		
			
		
	
	
	
	
	
	
	
	
	
	
	

	
	
	
	
	
	
	

	
	
	

	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	

	
	
	
	
		
			
			
		
		
			
			
			
			
			
			
				
				
				
			
			
		
	
	
	
		目录初始化....
		
		
		
		
		
		
		

		
		
		
		

		
		
		

		
		
		

		
		

		
		
		
		
		
		
	

	
	
		生成R.java文件....
		
			
			
			
			
			
			
			
			
			
			
			
		
	

	
	
		编译aidl文件....
		
			
			
			
			
			
			
			
			
				
			
		
	

	
	
		java源文件编译成class文件....
		
			
			
				
			
		
	


	
	
		将.class文件转化成.dex文件....
		
			
			
			
			
			
			
		
	

	
	
		将资源文件放进输出目录....
		
			
			
			
			
			
			
			
			
			
			
			
			
		
	

	
	
		打包成未签证的apk....
		
			
			
			
			
			
			
			
			
		
	

	
	
		Packaging signed apk for release...
		
			
			
			
			
			
			
			
			
			
			
			
		
	

	
	
		
		
		APK is released. path:${out-signed-package-ospath}
	
	
	
	
		
			
			
			
			
		
	


具体操作:

首先,定义渠道名字和号码的固定格式为 渠道名字:渠道号 这样可以利用:做一个正则匹配分别获取渠道名字和渠道号,好处是最后能根据渠道名字来修改打出来的jar包名字 然后利用正则替换来替换渠道号为上面获取的渠道号,再执行一次打包动作。

根据以上的build.xml 读者只需要进行以下修改即可:

1.第一行的    name换成你自己的工程名字

2.SDK目录(获取操作系统环境变量ANDROID_SDK_HOME的值),这里的ANDROID_SDK_HOME是你的android SDK的环境变量 因为env.ANT_HOME 调用的就是你配置好的系统的环境变量,我的 ANDROID_SDK_HOME 为:E:\android\android-sdk-windows-1.5_r11\android-sdk-windows-1.5_r11 记住这里的目录一直到你的 android  SDK 里很多子目录为止!因为,举个例子说吧 ,你也看到了在build.xml中用到了 ${sdk-folder}/platforms/android-8 这个就是指 在你定义的ANDROID_SDK_HOME对应的目录下去找 platforms 文件夹,所以这个目录层次很重要!!

3. 这句话 相信大家都知道了吧,因为 android 编译需要 java编译器支持,所以 JAVA_HOME 是定义的java的环境变量 ,我的电脑右键--属性 ---高级里的环境变量---新建环境变量---变量名:JAVA_HOME ,变量值:E:\Program Files\Java\jdk1.6.0_02

4.  我例子是:友盟和百度的两个渠道的 

5. 版本号

6.重点来了 循环打包:它是怎么循环的呢? 这句话:
   
   

  

就是循环了,将 ${key}对应的值(也就是前面定义的) 按照delimiter="," 来分隔,进行分别打包,在modify_manifest里,这样做的:


   
   
   
   
   
   
    
    
    
   

   
  

注意:我们还得需要在 AndroidManifest.xml 中默认顶一个meta节点,因为咱们再ant中是不断去替换AndroidManifest.xml中的渠道号来,达到打很多包的,所以我们还必须这样在AndroidManifest.xml中  写一个默认的渠道,注意 app_key 这里是渠道号,一般无关紧要不需要改,只要改value="bbbb"值就可以了。

7.到这里 差不多了就,但是呢很多人打包呢,感觉不对啊,呵呵因为很多时候咱们直接运行build.xml是第一个默认运行的target不是咱们需要的,你可以仔细看看这个 build.xml的依赖关系,你就能知道了,咱们这个build.xml需要第一个运行的是 deploy的这个target,所以 需要这么做: build.xml右键,run as , 这时候不是选择运行 而是 最后那个选项: external tools configurations ,然后进去一个界面

 

然后接着如下图操作:

 

 

 

 

最后一下:run 搞定!!

 

 

最后还要说的就是:不同的渠道生成不同的目录,在同一渠道你会发现有两个apk ,例如:一个是Test-BAI-3.0.apk , Test-BAI-3.0.apk-zipaligned.apk ,我个人认为一个是 没有优化的,另一个是优化过的!!用优化过的吧 也就是Test-BAI-3.0.apk-zipaligned.apk 吧!

 

就写到这里吧!!希望对大家有些帮助!!谢谢!!

 

不明白的随时留言!!!祝好!

 

PS:对于apk的混淆,这里附加加介绍!--->点这里跳转

 

 

 

 

 

你可能感兴趣的:(android Ant 批量多渠道打包 总结!)