Android自动化构建之Ant多渠道打包实践(下)

前言

上一篇(Android自动化构建之Ant多渠道打包实践(上))已经介绍了Android的apk是如何构建的,本篇博客继续Ant打包的实践过程。

集成友盟统计SDK

这里以友盟统计为例,对各个渠道进行统计,我们需要先集成它的SDK

配置权限

    
    
    
    
    
    
    
    

渠道配置

 
        
        
        

使用Ant打包的时候替换的渠道号就是 将Umeng替换为具体的渠道,比如将Umeng替换为xiaomi。

定义build.properties文件

这个文件定义了Ant脚本要用到的一些参数值,我们的渠道也是定义在这里,具体看代码:


#project name and version
    project.name=AntBuild
    project.version=4.1.4

#android platform version
    android-platform=android-19

#keysore file  
    ketstore.file=release.keystore
    key.alias=release.keystore
    key.alias.password=123456
    key.store.password=123456

#publish channel
    channelname=Umeng
    channelkey=360,QQ,xiaomi,liangxiang
    key=360,QQ,xiaomi,liangxiang
    
#library project
    library-dir=../Library
    library-dir2=../Library2
# generate R.java for libraries. Separate libraries with ':'.
    extra-library-packages=

#filnal out dir
    out.dir=publish
    

完整的Ant脚本



    
    
    
    
     
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

      
    
    
    

    
    
    
    
    
    
    


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
        
            
        
    
    
    
    
    
    
    
    
    
    
    
        
        
    
        
        
    
        
        
        
        
        
        
            
            
            
        
        
    
    
    
    
        目录初始化....
        
        
        
        
        
        
        
        
        
        


        
        
        
        


        
        
        


        
        
        


        
        
        
        
        
        

        
        
        
        
        
        
    


    
    
        生成R.java文件....
        
            
            
              
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
          
            
            
            
            
            
            
        
    


    
    
        编译aidl文件....
        
            
            
            
            
            
            
            
            
                
            
        
    


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

    
    


    
    
        将.class文件转化成.dex文件....
        
            
            
            
            
            
            
                    
            
        
        
     
    
    
    
    
        将资源文件放进输出目录....
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    
    
    
    
        打包成未签证的apk....
          
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    


    
    
        Packaging signed apk for release...
        
            
            
            
            
            
            
            
            
            
            
            
        
    


    
    
        
        
        APK is released. path:${out-signed-package-ospath}
         删除其他文件,最后只保留apk  
        
        
        
        生成apk完成
    
    
    
    
        
            
            
            
            
        
    
     

上面就是完整的Ant脚本,实现了自动化构建和多渠道的打包,笔者在实践的过程踩过不少坑才最终把apk包成功打出。

这里总结下可能遇到的坑:

  • 生成R.java文件,一定要注意先后顺序,主项目之后才到关联项目
  • 编译生成class文件,可能会遇到找不到类,一定要按照添加库的顺序来编译class文件
  • 替换渠道号的时候,Ant中pattern里的内容要与mainfest文件的内容一致,包括顺序,空格),笔者试过格式化后代码之后就不能写入成功

build.bat脚本


@echo off
call ant -buildfile "build.xml" deploy
echo done
pause
exit

测试结果

我们可以在项目中的publish目录下生成不同渠道的apk文件:

Android自动化构建之Ant多渠道打包实践(下)_第1张图片
这里写图片描述

安装apk到设备,启动之后在友盟后台集成测试,看app发布的渠道:


Android自动化构建之Ant多渠道打包实践(下)_第2张图片
历史纪录

Demo例子欢迎大家star

https://github.com/devilWwj/Android-Tech/tree/master/AntBuildTest

总结

实现Ant多渠道打包整个过程还是比较繁琐的,主要在Ant脚本上,比较容易出错,需要对命令比较了解,但确实能够缩短我们打渠道包的时间,基于本次实践是基于Eclipse,目前Android Studio使用gradle来实现多渠道打包,以后会把gradle进行多渠道打包的实现分享给大家,大家可以对比下这两种打包方式的区别,主要目的是更加深入的了解apk的构建过程。


欢迎关注我的公众号:wwjblog

Android自动化构建之Ant多渠道打包实践(下)_第3张图片
wwjblog

你可能感兴趣的:(Android自动化构建之Ant多渠道打包实践(下))