Ant自动打包(可动态修改包名、资源等)生成不同签名不同包名的APP

上一篇我们介绍了Ant自动生成APK的例子:http://blog.csdn.net/up1up2up3/article/details/19558699

由于公司项目需要,需要实现Ant自动打包(可动态修改包名、资源等)生成不同签名不同包名的APP。

当然是先搜搜网上有木有相关的实现,发现复制来复制去都是同一个,但是不够详细,基本上就是说几句,然后贴了个build.xml(叫我们这些新手、很少搞脚本的人情何以堪 = =!),我主要参考了这个:http://www.zdyc.net/html/diary/newWrite/showlog_vm/sid=1/cat_id=-1/log_id=283,要了解的就是利用ant执行编写的脚本程序

脚本实现的主要步骤如下:

1、拷贝当前项目到临时目录

2、修改 AndroidManifest.xml包名以及java文件涉及到的包名(import、package等)


3、生成新的R文件(androidSDK/platform-tools\aapt.exe)

4、项目编译

5、生成dex文件(androidSDK\platform-tools\dx.bat)


6、打包资源文件(打包资源文件 androidSDK\platform-tools\aapt.exe)


7、APK打包(androidSDK\apkbuilder.bat)

PS:建议先行去了解下Ant脚本执行

先看下下面的build.xml(各个步骤都有进行说明):






    
    

    
    

    
    
    
        
    

    
    

    
    

    
    

    
    
    




 
 
 
  
 
 
 



 
 
 ZWTH
 
 


 
  
 
 
 
 
 
 
 

 
     
     
     
     

	  
         
     


     
  
      
         
            
     

  
      
         
            
     
    


  
    
        
            
            
            
            
            
            
            
            
            
            
        
    
    
    
        
            
                
                
            
        
    

    
        
            
            
            
            
        
    

 
    
        
            
            
            
            
            
            
            
            
            
            
            
            
        
    

 
    
        
        
            
            
            
            
            
            
            
            
            
            
        
        
        
       
     
    
   




接下来说下编译过程中的出现的一些问题:

1、Ant编译utf-8非法字符

    

   这个问题可以百度下,很多人出现,也有各式各样的解决方法,不过这只是广告,一般不会有什么问题,我这边是忽略掉了

2、value for 'keystore' is not valid,这个百度下了,没有出现啊!!!坑爹了,搞了我很久

    
   后来发现这根本就是个sb的错误啊!!TM的,原来我在引用local.properties(或ant.properties)的时候,其中的keystore的path写错了

   key.store=D:/test/BPUBLIC/android.keystore写成key.store=D\:/test/BPUBLIC/android.keystore(刚开始转义了下,忘记去掉了)

  

3、编译的时候我执行 ant release发现总是生成原项目的apk,根本就没有修改完后的新包名的apk,甚至临时目录都木有啊!!!

    后来查询了这篇文章《Ant Buildfile中project标签的default属性作用》才发现中default以及子标签标签的含义我没注意到,可以由命令行进行显示的调用,也可以在内部使用如可以直接调用ant init、ant compile等。如果不写参数,则默认的build文件是build.xml,默认的目标是的default属性定义的目标。

  我们执行的时候可以一步步执行,也可以一次性执行目标,如:ant ZWTH

  根据上面的ant文件及步骤,可以一步步编译生成:

  Ant自动打包(可动态修改包名、资源等)生成不同签名不同包名的APP_第1张图片

 Ant自动打包(可动态修改包名、资源等)生成不同签名不同包名的APP_第2张图片

其余的就不再一一列举了。

一次性编译是用如下命令(根据的依赖关系):

 

Ant自动打包(可动态修改包名、资源等)生成不同签名不同包名的APP_第3张图片

Ant自动打包(可动态修改包名、资源等)生成不同签名不同包名的APP_第4张图片

build success!!!

米糊软件开发室:http://shop62437931.taobao.com/?spm=0.0.0.0

你可能感兴趣的:(Android培训教程)