Android通过ant脚本打包带Library project的方法

前部分是转载,此文帮了我的大忙,转此以备后用,之前一直用第一种方法,能打出来包也能成功安装,但启动就会报错,原因是找不到library project的资源,根据此贴修改成使用第二种方法,解决问题~棒

下方我会贴出我的完整build.xml

<转----

     对于Android程序打包,一般可以通过Eclipse进行打包.但如果一个程序需要发布到多个不同渠道的时候,就需要用到Ant脚本辅助打包了.

     但网上很多的android程序(app project)ant脚本一般都只针对一个项目,对于引用了library project的没有什么有用的资料.

     如果直接按照一个项目的方式去打包,要不会不能成功打进去资源文件,要不不能成功的生成R.java文件,从而导致引用资源报错抛异常.

     经过查找国外网站和有个cp技术的提醒,可以有两种方式实现.

     (1)cp技术的方法,对于app project 和 library project,各执行一次aapt命令,但各指向不同的manifest文件,让其能读取manifest中的package信息,并生成对应的package下的R.java文件.这样的问题是两个R.java会生成app project和 library project的所有的资源id.

 

            
                        
            
            
            
            
            
            
            
            
                      
            
            
            
            
        
 
 
            
                        
            
            
            
            
            
            
            
            
                      
            
            
            
            
        

 (2)通过使用aapt的参数  --extra-packages. 其参数的说明如下:generate R.java for libraries. Separate libraries with ':'.

所以可以将上面的ant命令合并成一个:

 
 
            
                        
            
            
            
            
            
            
            
            
            
            
                        
            
            
            
            
        

----结束转>

完整打包的xml,我这里有4个library project


	
    
    
    
    
    
    
    
	
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
	
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
		
	
	
	
		
	
    
    
        Initializing all output directories...
        
         
        
        
        
        
         
        
        
        
         
          
        
        
        
        
        
        
        
        
        
        
        
        
     
    
     
        Generating R.java / Manifest.java from the resources...

        
        

            
            
            
            
            
            
            
            
            
             
            
             
            
            
            
            
            
                      
            
            
             


        
    
    
    
    
        Compiling java source code...
        
            
            
            
                
             
        
        
            
            
            
                 
            
        
        
            
            
            
                 
            
        
        
            
            
            
                 
            
         
 		
                        
            
            
            
				
			
        
          
    
    
    
        Converting compiled files and external libraries into ${outdir-dx}test.dex...
        
            
            
            
             
        
    
    
    
        Packaging resources and assets...
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    
     
		
		
		
	
    
    
        Packaging unsigned apk for release...
        
            
            
            
            
            
            
            
			
            
            
        
        It will need to be signed with jarsigner before being published.
    
    
   
    	
	
		
		
			
			
			
			
			
			
			
			
		
		
	
    
    
       optimizing the application...
      
        
        
        
        
        
     
    
    
    
        
        
        APK is released. path:${out-signed-package-ospath}
        
        APK is copy to path:${outdir-package}
    
 
    
 
   

你可能感兴趣的:(Android,android,ant,脚本,发布,library)