Android ANT脚本打包及混淆文件

http://p.ymt360.com/w/app/wiki/tech/build_apk/

 

 

简介

Android支持使用ANT打包。
通过ANT脚本,可以对文件进行编译、打包、安装、联合SVN自动拉取等。
并且支持多种方式打包,如debug、release、批量打包等场景。
eclipse项目是通过调用SDK提供的ANT脚本build.xml文件进行打包的。

附件是AndroidSDK附带的打包脚本,超详细,可以参考学习下。build.xml
(建议使用JDK1.6环境,在之前ANT使用过程中被1.7环境坑过)

使用建议

Android studio 使用gradle 进行编译打包,
gradle是google推荐的打包方式,如果以后开发环境切换到Android studio 建议使用gradle

如果是在eclipse开发环境可以使用ANT或者gradle

YMT APP开发时 Android studio是测试版本阶段,gradle学习资料较少,基于目前的目录结构,采用ANT进行打包。

命令介绍

Android打包流程先介绍下:
1.用aapt命令生成R.java文件
2.用aidl命令生成相应java文件
3.用javac命令编译java源文件生成class文件
4.用dx.bat将class文件转换成classes.dex文件
5.用aapt命令生成资源包文件resources.ap_
6.用apkbuilder.bat打包资源和classes.dex文件,生成unsigned.apk
7.用jarsinger命令对apk认证,生成signed.apk

配合我们项目介绍在YMT项目中使用ANT的流程

 

 

1.clean清除temp文件
2.初始化各种temp目录
3.用aapt命令 打包项目的资源文件 生成R.java文件
4.生成buildconfig类 主要用于在项目中调用 BuildConfig.Debug判断是否DebugAPK的代码
5.用aidl命令生成相应java文件
6.用javac命令编译java源文件生成class文件
7.将class文件生成jar文件
8.对打包后的结果进行混淆
9.用dx.bat将class文件转换成classes.dex文件
10.用apkbuilder.bat打包资源和classes.dex文件,生成unsigned.apk
11.用jarsinger命令对apk认证,生成signed.apk
12.zipalign,对混淆的签名包做优化

脚本分析

我们详细介绍每一个步骤所使用到的命令:

打包过程不在代码基础上进行操作,全部在副本里面进行操作。

1.清除temp文件,删除之前复制代码(包括依赖库代码)到的temp文件夹

<target name="clean" > <echo> Start clean... </echo> <mkdir dir="${apk}" /> <delete dir="${temp}" /> <delete dir="${ymtBaseApp-temp}" /> <delete dir="${pulltofresh-project-temp}" /> <delete dir="${datetimepicker-library-temp}" /> <delete dir="${c3kDemo-lib-temp}" /> <echo> Finished clean... </echo> <echo> </echo> </target>
  1. 创建temp文件夹,复制依赖库文件,项目文件到temp文件夹中(src,gen,lib等)
<target name="init" > <echo> Start init... </echo> <echo> If not exist, then create the directories... </echo> <mkdir dir="${apk}" /> <mkdir dir="${temp}" /> <mkdir dir="${ymtBaseApp-temp}" /> <mkdir dir="${pulltofresh-project-temp}" /> <mkdir dir="${datetimepicker-library-temp}" /> <mkdir dir="${c3kDemo-lib-temp}" /> <mkdir dir="${classes}" /> <mkdir dir="${classes-obfs}" /> <mkdir dir="${gen}" /> <mkdir dir="${lib}" /> <echo> Copy files to temp directory... </echo> <copy filtering="true" todir="${temp}" > <fileset dir="${project_path}" > <exclude name="**/.svn/*" /> <exclude name="**/temp/" /> <exclude name="**/temp2/" /> <exclude name="**/bin/" /> <exclude name="**/gen/" /> </fileset> </copy> <echo> Copy files of xxx android library project to temp2 directory... </echo> <copy filtering="true" todir="${ymtBaseApp-temp}" > <fileset dir="${ymtBaseApp}" > <exclude name="**/.svn/*" /> <exclude name="**/bin/" /> <exclude name="**/gen/" /> </fileset> </copy> <copy filtering="true" todir="${pulltofresh-project-temp}" > <fileset dir="${pulltofresh-project}" > <exclude name="**/.svn/*" /> <exclude name="**/bin/" /> <exclude name="**/gen/" /> </fileset

转载于:https://www.cnblogs.com/sunzhuo1228/p/4411621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值