博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用Ant自动构建Android版本
阅读量:5739 次
发布时间:2019-06-18

本文共 1956 字,大约阅读时间需要 6 分钟。

hot3.png

  Ant是一个很好的跨平台构建工具,特别是对于Java项目,这里使用它对Android工程进行自动化构建可以得到非常大的便利。一般来说对Android工程进行构建主要有以下几个步骤:

  使用aapt来编译工程生成R.java;

  使用aapt来对工程所需用的资源进行打包;

  转换并编译AIDL文件;

  编译Java源文件并生成.class;

  转换并压缩.class文件成.dex文件;

  使用aapt打包生成未签名的apk包;

  使用jarsigner对apk包签名并得到最终的发布包。

  关于这些步骤所需要的实现细节就不再详述了(网格上各种版本,大多都能使用),这里主要说一下对于多个渠道情况下的apk打包。所谓的多个渠道一般来说就需要对每个要发布的渠道版本进行一次上述系列操作,而这多个渠道的差异通常是可以公共出来的一些配置信息,比如渠道的编号,推出的免费APP渠道信息管理平台,服务包括渠道数据的监测,盗版APP的识别和分析,开发者通过使用爱加密渠道监测服务可以方便的管理APP所有推广渠道,一站掌握所有信息。渠道监测平台还可以帮助开发者第一时间发现盗版APP,保护公司合法权益。

    如此一来就可以将其统一组织到一个配置文件里边,在进行流程前使用ant的功能对其进行具体的渠道设置就可以了,比如:

 

[html] 

  1. <replace file="${pathsettingfile}" token="Ant_PathID" value="${_PathID}"/>  

  2. <replace file="${pathsettingfile}" token="Ant_PathName" value="${_PathName}"/>  

   其中的_PathID,_PathName均为在ant环境中定义的变量,其可以是直接从cmd传入或通过其它方式来赋值。这样在进行后续的编译时就可以直接得到该渠道下的版本。

   此外,还可以将所有渠道的信息统一配置于一xml之中,在进行构建时直接从其中读入各个渠道的信息并赋值到如上的_PathID、_PathName中即可,可以用如下代码方便实现(其中涉及xmltask在ant中的使用,这个可以参考ant的相关资料):

 

[html] 

  1. <target name="main">     

  2.     <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>   

  3.         <echo>Starting....</echo>     

  4.         <xmltask source="Paths.xml">     

  5.         <call path="/PathList/PathDetail[@enabled='true']" target="build">  

  6.             <param name="_PathID" path="ID/text()"/>     

  7.             <param name="_PathName" path="Name/text()"/>  

  8.         </call>     

  9.     </xmltask>     

  10. </target>   

  对应的渠道配置xml则基本上如下所示(当然其中可以置入更多的信息)

 

[html]

  1. <?xml version="1.0" encoding="UTF-8"?>  

  2. <PathList>     

  3.     <PathDetail name="" enabled="true">     

  4.     <ID>11111</ID>  

  5.     <Name>Path_0</Name>  

  6.    </PathDetail>  

  7.    <PathDetail name="" enabled="true">     

  8.     <ID>22222</ID>  

  9.     <Name>Path_1</Name>  

  10.    </PathDetail>  

  11. </PathList>  

   此外,使用Ant的自动化构建还可以实现另外一个重要用途,对asset中的涉密文件进行保护。这里有一个简单的例子,比如asset中有一些文件对用户可视,但却不希望被用户修改,这种情况下就可以在构建中加入一个文件校验的阶段,首先将要保护的文件计算出对应的MD5签名,之后再将此签名写入到程序代码中并进行编译构建,在程序运行时使用此签名进行校验,如果该签名不匹配那就意味着被用户修改后进行了重新的打包,此时程序就可以有相应的操作,这样就可以在一定程序上防止用户对发布的Apk包进行重新pack并运行。

    对于Android app,dex源码文件安全性是最重要的,因此,这个dex源码加密保护其实很有必要,在这个方面,可以做到的有爱加密这个平台,不同类型的应用也有不同的加密保护方案,

转载于:https://my.oschina.net/1590538xiaokai/blog/338367

你可能感兴趣的文章
Android之Activity系列总结(一)--Activity概览
查看>>
java中线程的停止以及LockSupport工具类
查看>>
CPU上电时序详细分析
查看>>
java中的static关键字解析
查看>>
Java编程的逻辑 (69) - 线程的中断
查看>>
Gitlab利用Webhook实现Push代码后的jenkins自动构建
查看>>
Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试
查看>>
常用yum命令小结
查看>>
win10系统80端口被占用怎么办?
查看>>
Paxos 实现日志复制同步
查看>>
SQL Case when 的使用方法 (转)
查看>>
Java String.split()用法小结
查看>>
Windows路径操作API函数学习
查看>>
Win10系列:C#应用控件基础18
查看>>
(网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
查看>>
R语言与机器学习学习笔记
查看>>
Mysql 用户和权限管理
查看>>
观察者设计模式( Observable类Observer接口)
查看>>
ACM进阶计划
查看>>
配置resin支持maven项目
查看>>