android ant build.xml实例

利用ant编译apk。

使用的时候仅仅须要改动SKD路径javahome路径和project路径就能够了。

<?xml version="1.0" encoding="UTF-8"?>
<project name="Scolview" default="zipalign" basedir=".">
	<property name="exe" value=".exe" />
	<property name="bat" value=".bat" />

	<!--用到的各个工具的本地路径,务必改动!-->
	<!--Android_Home 本机上androidsdk的安装文件夹-->
	<property name="android_home" value="F:/adt-bundle-windows-x86_64-20140624/sdk" />
		<!--相应工程的根文件夹-->
	<property name="root" value="F:/andoridADT/workspace/Scolview" />
	<!-- javahome 文件夹 -->
	 <property name="javahome" value="C:/Program Files/Java/jdk1.6.0_45"></property>

	<!-- android sdk的版本。18表示Android 4.3-->
	<property name="android_api_level" value="18"/>
	<!-- android_sdk文件夹下的android.jar包的位置-->
    <property name="androidjar" value="${android_home}/platforms/android-${android_api_level}/android.jar" />

	<!--本机上javac的文件夹-->
	<property name="javac" value="${javahome}/bin/javac.exe" />
	<!--aapt用于生产R.java和打包resource资源-->
	<property name="aapt" value="${android_home}/build-tools/18.0.1/aapt${exe}" />
	<!--dx用于将.class文件(加上第三方库和.class文件)打包成.dex文件-->
	<property name="dx" value="${android_home}/build-tools/18.1.1/dx.bat" />

	<!--apkbuilder用于将.dex文件和打包过的资源文件(aapt打包后的)以及其它资源文件打包成apk文件-->
	<property name="apkbuilder" value="${android_home}/tools/apkbuilder${bat}" />

	<!--zipalign用于对apk进行优化,非必须步骤-->
	<property name="zipalign" value="${android_home}/tools/zipalign${exe}" />

	<!--打包过程中涉及到的各个文件夹-->
	<!--bin文件存放apk打包所需文件(.dex,resource.ap_,.class,AndroidManifest.xml等)和生成后的apk-->
	<property name="out" value="${root}/dest" />

	<!--gen主要用于存放R.java,eclipse下为自己主动生成。ant下为aapt工具生成-->
	<property name="gen" value="gen" />

	<!--存放javac生成的class文件的文件夹-->
	<property name="classes" value="${out}/classes" />

	<!--存放.java源文件的文件夹-->
	<property name="src" value="src"/>

	<!--存放引用到的库文件夹-->
	<property name="lib" value="${out}/libs"/>

	<!--打包时候的编码格式-->
	<property name="encoding" value="UTF-8" />

	<!--生成APK的名字-->
	<property name="file_name" value="scollview" />

	 <!-- 签名仓库。由keytool生成 -->
	<property name="keystore" value="${root}/edsheng.keystore" />
	<!-- 须要设置签名名称-->
	<property name="key_name" value="edsheng" />
	<!-- 须要设置-->
	<property name="key_pass" value="a199210311" />
	<!-- 须要设置-->
	<property name="store_pass" value="a199210311" />
	<!-- 签名所用jar包的位置-->
	<property name="jarsigner" value="${javahome}/bin/jarsigner.exe" />
	<!--
	实际编译APK的步骤!
	1.清除输出路径的文件(覆盖掉原来的打包结果)
	2.创建须要输出的文件夹
	3.调用aapt工具生成R.java文件
	4.调用javac将java文件编译成java字节码(.class文件)
	5.调用dx.bat将.class文件和其它调用到的第三方库文件编译成.dex文件
	(.dex文件是能够在dalvik虚拟机上直接执行文件格式,能够理解为对java字节码做的针对嵌入式设备的优化)
	6.调用apkbuilder工具将.dex文件和bin文件夹下的资源文件(aapt生成,如resource.ap_)打包成APK
	7.调用jarsigner进行前面
	8.调用zipalign进行性能提升-->

	<!--以下是实际的打包过程-->
	<!--1.清除输出路径的文件(覆盖掉原来的打包结果)-->
	<target name="mkdir">
	    <echo>生成输出文件夹。。。</echo>
	    <mkdir dir="${out}"></mkdir>
	    <echo>生成完毕</echo>
	</target>

	<target name="clean" depends="mkdir">
		<echo>清理输出文件夹...</echo>
        <delete dir="${out}" />
		<delete dir="${gen}" />
        <echo>清理完毕</echo>
	</target>

	<target name="init" depends="clean">
		<echo>创建输出文件夹...</echo>
		<mkdir dir="${out}" />
		<mkdir dir="${gen}" />
		<mkdir dir="${classes}" />
		<mkdir dir="${lib}" />
		<echo>创建文件夹完毕</echo>
	</target>
	<!--aapt详细參数含义见:http://blog.csdn.net/liuhe688/article/details/6679879-->
	<!-- 为该项目资源生成R.java文件 -->
	<target name="gen" depends="init">
		<echo>从资源文件生成R.java ...</echo>
		<exec executable="${aapt}" failonerror="true">
			<arg value="package" />
			<arg value="-m" />
			<arg value="-J" />
			<arg value="${gen}" />
			<arg value="-M" />
			<arg value="AndroidManifest.xml" />
			<arg value="-S" />
			<arg value="res" />
			<arg value="-I" />
			<arg value="${androidjar}" />
		</exec>
		<echo>R.java文件生成成功</echo>
	</target>

	<!--javac的详细參数含义见:http://cyf0110.iteye.com/blog/1508991-->
	<target name="compile" depends="gen">
		<echo>開始编译.class文件...</echo>
		<javac fork="true" executable="${javac}" encoding="${encoding}" debug="true" extdirs="" source="1.5" target="1.5" destdir="${classes}"  bootclasspath="${androidjar}">
            <src path="${src}" />
            <src path="${gen}" />
            <classpath>
                <fileset dir="${root}/libs" includes="*.jar" />
            </classpath>
        </javac>
		<echo>.class文件编译完毕</echo>
	</target>

	<!--执行android的自带工具dx.bat用于将.class文件和第三方库打包成dex文件-->
	<!--apply标签能够见:https://ant.apache.org/manual/Tasks/apply.html-->
	<target name="dex" depends="compile">
		<echo>编译.dex文件...</echo>
		<apply executable="${dx}" failonerror="true" parallel="true">
		    <arg value="-JXms1024m" />
		    <arg value="-JXmx1536m" />
		    <arg value="-JXss1024k" />
			<arg value="--dex" />
			<arg value="--num-threads=4" />
			<arg value="--output=${out}/classes.dex" />
			<arg path="${classes}" />
		<fileset dir="${root}/libs" >
                  <include name="*.jar" />
            </fileset>
		</apply>
		<echo>编译.dex文件完毕</echo>
	</target>

	<!-- 打包项目的资源文件 -->
	<target name="package_res_with_assets">
		<echo>打包资源和资产文件...</echo>
		<exec executable="${aapt}" failonerror="true">
			<arg value="package" />
			<arg value="-f" />
			<arg value="-M" />
			<arg value="AndroidManifest.xml" />
			<arg value="-S" />
			<arg value="res" />
			<arg value="-A" />
			<arg value="assets" />
			<arg value="-I" />
			<arg value="${androidjar}" />
			<arg value="-F" />
			<arg value="${out}/${file_name}.ap_" />
		</exec>
		<echo>打包资源和资产文件完毕</echo>
	</target>

	<target name="apk" depends="dex, package_res_with_assets">
		<echo>開始打包apk...</echo>
		<exec executable="${apkbuilder}" failonerror="true">
			<arg value="${out}/${file_name}_unsigned.apk" />
			<arg value="-u" />
			<arg value="-z" />
			<arg value="${out}/${file_name}.ap_" />
			<arg value="-f" />
			<arg value="${out}/classes.dex" />
			<arg value="-rf" />
			<arg value="${root}/src" />
			<arg value="-rj" />
			<arg value="${root}/libs" />
			<arg value="-nf" />
			<arg value="${root}/libs" />
		</exec>
		<echo>成功打包apk</echo>
	</target>

	<!--调用jarsigner进行签名-->
	<target name="sign" depends="apk">
		<echo>開始签名...</echo>
		<exec executable="${jarsigner}" failonerror="true">
			<arg value="-verbose" />
			<arg value="-sigalg" />
			<arg value="MD5withRSA" />
			<arg value="-digestalg" />
			<arg value="SHA1" />
			<arg value="-keystore" />
			<arg value="${keystore}" />
			<arg value="-storepass" />
			<arg value="${store_pass}" />
			<arg value="-keypass" />
			<arg value="${key_pass}" />
			<arg value="-signedjar" />
			<arg value="${out}/${file_name}_signed_unzipalign.apk" />
			<arg value="${out}/${file_name}_unsigned.apk" />
			<arg value="${key_name}" />
		</exec>
		<echo>签名成功</echo>
	</target>

	<!-- 调用zipalign工具对签名后的包做优化 -->
	<!-- 主要是对资源做了字节对齐的优化,降低内存执行过程中的ram-->
	<!-- http://developer.android.com/tools/help/zipalign.html-->
	<target name="zipalign" depends="sign">
		<echo>開始优化...</echo>
		<exec executable="${zipalign}" failonerror="true">
			<arg value="-v" />
			<arg value="4" />
			<arg value="${out}/${file_name}_signed_unzipalign.apk" />
			<arg value="${out}/${file_name}_signed_zipaligned.apk" />
		</exec>
		<echo>结束优化</echo>
		<echo>清除编译过程中产生的数据。。。</echo>
		<delete dir="${out}/classes"> </delete>
		<echo>清除数据完毕。

。

。

</echo>
	</target>

</project>
				
时间: 2024-12-16 16:29:35

android ant build.xml实例的相关文章

转:Java eclipse下 Ant build.xml实例详解

在有eclipse集成环境下ant其实不是很重要,但有些项目需要用到,另外通过eclipse来学习和理解ant是个很好的途径,所以写他demo总结下要点,希望能够帮到大家. 一.本人测试环境eclipse3.6已自动集成了ant环境, 所以就不用单独下载配置ant环境了. 如果没有eclipse集成环境可以自己下载ant http://www.apache.org/ 下载最新的版本解压ant 后设置ANT_HOME, PATH中添加ANT_HOME目录下的bin目录(如:ANT_HOME:D:\

cocos2dx 编译错误 BUILD FAILEDG:\android\SDK\android-sdk-windows\tools\ant\build.xml:645: The following

BUILD FAILEDG:\android\SDK\android-sdk-windows\tools\ant\build.xml:645: The following erroroccurred while executing this line:G:\android\SDK\android-sdk-windows\tools\ant\build.xml:683: null returned: 1 解决办法: rd bin /S /Q cocos2dx 编译错误 BUILD FAILEDG:

ant打包出错 ant\build.xml:698: null returned: 1

1.ant编译时突然报错:E:\android-sdk\tools\ant\build.xml:657:  The following error occurred while executing this line: null returned: 1 2.直接修改了sdk里面的配置,个人觉得不太妥,那么可以在自己项目的根目录下build.xml文件中加入: <property name="aapt.ignore.assets" value="!.svn:!.git:\

Android ant build cannot find symbol

出现这种情况有两种原因: 1.     class 被exclude (ant 不会exclude ) 2.     import 内部类的内部类  比如 import IA.IIA; class A{ class IA { class IIA{ } } public void method(){ //会报 IA cannot find symbol IIA a = new IIA(); } } 解决办法: 问题1.     将exclude 的文件删除 问题2.     将import IA.

ANT build.xml 编译出错Error running javac.exe compiler

在运行ant脚本时,出现build.xml:97: Unable to find a javac compiler,意思是说java编译时出现了错误,但是我明明我eclipse都能运行啊,后来发现这个eclipse是google自己的eclipse,因此检查系统环境配置时并没有配置jdk的环境,因此首先配置jdk的环境配置,这个不多说,还有就是需要看看javac的路径,Window-->Preferences-->Java-->Installed JRES,如下图 发现只有jre环境,而

Ant build.xml详解

Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令.当编译Linux内核及一些软件的源程序时,经常要用这个命令.Make命令其实就是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷.最初Ant开发者在开发跨平台的应用时,用样也是基于这些缺陷对Ant做了更好的设计. Ant 与 makefile Makefile有一些不足之处,比如

Ant build.xml

Ant的概念可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令.当编译Linux内核及一些软件的源程序时,经常要用这个命令.Make命令其实就是一个项目管理工具,而Ant所实现功能与此类似.像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷.最初Ant开发者在开发跨平台的应用时,用样也是基于这些缺陷对Ant做了更好的设计. Ant 与 makefileMakefile有一些不足之处,比如很多

一个build.xml实例

<?xml version="1.0"?> <project name="ssh" basedir="." default="usage">      <property name="name" value="ssh"/> <property name="war.dir" value="war"/> 

build.xml实例:清目录、编译java、编译scala、打包

<?xml version="1.0" encoding="utf-8"?> <project basedir="src" default="jar"> <property name="web.dir" value="bing"/> <property name="src.dir" value="${basedir}