本文简要介绍如何通过Ant脚本Android project编译打包成APK文件并安装到手机。
主要步骤:
1生成R.java类文件:利用ant和命令行使用android SDK提供的aapt.ext程序生成R.java。
2将.aidl文件生成.java类文件:利用ant和命令行使用android SDK提供的aidl.exe生成.java文件。
3第三步 编译.java类文件生成class文件:利用ant和命令行使用jdk的javac编译java类文件生成class文件。
4第四步 将class文件打包生成classes.dex文件:利用ant命令行使用android SDK提供的dx.bat命令行脚本生成classes.dex文件。
5第五步 打包资源文件(包括res、assets、androidmanifest.xml等):ant命令行使用Android SDK提供的aapt.exe生成资源包文件。
6第六步 生成未签名的apk安装文件:ant和命令行使用android SDK提供的apkbuilder.bat命令脚本生成未签名的apk安装文件。
7第七步 对未签名的apk进行签名生成签名后的android文件:ant和命令行使用jdk的jarsigner对未签名的包进行apk签名。
8第八步 安装和卸载APK文件,利用ant命令行使用Android SDK提供的adb.exe。
下面贴出build脚本和property文件:具体例子可以从http://download.csdn.net/source/3505789 下载。
<?xml version="1.0" encoding="UTF-8"?>
<project name="AntTest" default="help">
<property file="build.properties" />
<path id="android.antlibs">
<pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
<pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
<pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
</path>
<path id="project.classpath">
<pathelement location="${android-jar}" />
</path>
<taskdef name="setup" classname="com.android.ant.SetupTask" classpathref="android.antlibs" />
<setup/>
<target name="copy">
<copy todir="${outdir-gen}">
<fileset dir="${srcdir}" />
</copy>
</target>
<target name="GenRJAVA">
<echo>Generating R.java from the resources...</echo>
<mkdir dir="${outdir-gen}" />
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-m" />
<arg value="-J" />
<arg value="${outdir-gen}" />
<arg value="-M" />
<arg value="${projecthomedir}/AndroidManifest.xml" />
<arg value="-S" />
<arg value="${resource-dir}" />
<arg value="-I" />
<arg value="${android-jar}" />
</exec>
</target>
<target name="aidl" depends="copy">
<echo>Compiling aidl files into Java classes...</echo>
<apply executable="${aidl}" failonerror="true">
<arg value="-p${sdk.dir}" />
<arg value="-I${srcdir}" />
<fileset dir="${srcdir}">
<include name="**/*.aidl" />
</fileset>
</apply>
</target>
<!-- Compile this project's .java files into .class files. -->
<target name="compile" depends="copy, GenRJAVA, aidl">
<mkdir dir="${outdir-classes}" />
<javac encoding="UTF-8" target="1.5" debug="true" extdirs="" srcdir="${outdir-gen}" destdir="${outdir-classes}" bootclasspath="${android-jar}">
<classpath refid="project.classpath" />
</javac>
</target>
<!-- Convert this project's .class files into .dex files. -->
<target name="dex" depends="compile">
<echo>Converting compiled files and external libraries into ${outdir-dx}/test.dex...</echo>
<mkdir dir="${outdir-dx}" />
<apply executable="${dx}" failonerror="true" parallel="true">
<arg value="--dex" />
<arg value="--output=${outdir-dx}/test.dex" />
<arg path="${outdir-classes}" />
<fileset dir="${projecthomedir}" includes="*.jar" />
</apply>
</target>
<!-- Put the project's resources into the output package file. -->
<target name="package-res">
<echo>Packaging resources and assets...</echo>
<mkdir dir="${apkdir}" />
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-f" />
<arg value="-M" />
<arg value="${projecthomedir}/AndroidManifest.xml" />
<arg value="-S" />
<arg value="${resource-dir}" />
<arg value="-A" />
<arg value="${asset-dir}" />
<arg value="-I" />
<arg value="${android-jar}" />
<arg value="-F" />
<arg value="${resources-package}" />
</exec>
</target>
<target name="packageAPK" depends="dex, package-res">
<echo>Packaging apk for release...</echo>
<exec executable="${apkbuilder}" failonerror="true">
<arg value="${apkdir}/${unsignedapkname}" />
<arg value="-u" />
<arg value="-z" />
<arg value="${resources-package}" />
<arg value="-f" />
<arg value="${outdir-dx}/test.dex" />
<arg value="-rf" />
<arg value="${srcdir}" />
<arg value="-rj" />
<arg value="${outdir-gen}" />
</exec>
<echo>It will need to be signed with jarsigner before being published.</echo>
</target>
<target name="signAPK" depends="packageAPK">
<echo>signAPK ${apkdir}/${apkname}</echo>
<signjar
jar="${apkdir}/${unsignedapkname}"
signedjar="${apkdir}/${apkname}"
keystore="keystore"
storepass="123456"
alias="alias"
keypass="123456"
verbose="-verbose" />
<!--
<exec executable="${jarsigner}" failonerror="true">
<arg value="-verbose" />
<arg value="-storepass" />
<arg value="test" />
<arg value="-keypass" />
<arg value="test" />
<arg value="-keystore" />
<arg value="bbyread.keystore" />
<arg value="-signedjar" />
<arg value="${apkdir}/${apkname}" />
<arg value="${apkdir}/${unsignedapkname}" />
<arg value="byread" />
</exec>-->
</target>
<target name="installAPK" depends="signAPK">
<echo>Install APK...</echo>
<exec executable="adb" failonerror="true">
<arg value="install" />
<arg value="${apkdir}/${apkname}" />
</exec>
</target>
<target name="uninstallAPK">
<echo>uninstall APK..</echo>
<exec executable="adb" failonerror="true">
<arg value="uninstall" />
<arg value="com.anttest" />
</exec>
</target>
<target name="help" />
</project>
property文件内容:
target=android-8
sdk.dir=D:\\Android\\android-sdk-windows
apkbuilder=${sdk.dir}\\tools\\apkbuilder.bat
android-jar=${sdk.dir}\\platforms\\android-8\\android.jar
projecthomedir=D:\\Android\\AndriodWK\\AntTest
builddir=${projecthomedir}\\build
resource-dir=${projecthomedir}\\res
asset-dir=${projecthomedir}\\assets
srcdir=${projecthomedir}\\src
outdir-gen=${builddir}\\src
outdir-classes=${builddir}\\classes
outdir-dx=${builddir}\\dx
resources-package=${builddir}\\respak
apkdir=${builddir}\\apk
unsignedapkname=unsigntest.apk
apkname=test.apk
分享到:
相关推荐
Gradle编译打包Android apk详细介绍 理解Gradle构建过程,解读Android Gradle插件的配置 阅读本文一定是要使用过Gradle生成apk,文中不会讲如何安装运行Gradle,如有需要可先看文末的参考文章。 APK包是一个ZIP...
使用ant编译、签名、优化打包apk文件 附件为一个build.properties文件和一个build.xml文件。 执行的前提是需要配置好ANT_HOME、ANDROID_HOME、JAVA_HOME环境变量。
mac下是用ant对android App的多渠道打包工具。
通过ant脚本,编译打包android工程。 编译打包android工程的ant脚本,Android官方提供的打包脚本。 有注释
ant打包android工程,手动打包apk文件
通过Ant发布Android到手机的例子,包含了编译,打包成APK文件,安装等ant脚本
当你要将多个应用发布到多个推广渠道的时候,你会针对每一个渠道为android应用添加相应的渠道号,这样工作量会很大。这时你会想:如果有某种工具能针对不同的渠道批量生成apk就好了。这个时候就要求你去写个打包工具...
通过ant脚本,编译打包android工程, 编译打包android工程的ant脚本。
本资源详细的描述了如何使用Ant批量多渠道导报Android应用。运营是需要上传应用到20几个市场上去,这个时候需要批量打不通tag的包,以便友盟能够统计得到各通道下载量
Ant编译打包android工程,签名,多渠道
因为项目的需要必须写一个ANDROID_ANT自动编译打包签名的脚本,终于奋斗了几天写完了,和大家分享一下
使用Ant编译打包
使用ant打包android,使用ant打包android
Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件 详见:http://www.cnblogs.com/ycxyyzw/p/4535459.html
当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的,当然不会用平台...本文介绍了android编译和ant打包原理
NULL 博文链接:https://wenzongliang.iteye.com/blog/2179121
SVN+ant 服务器代码打包编译流程详解,内含详细安装以及操作说明build.xml+build.properties详解,可以直接修改路径后打包编译SVN代码。
ant脚本打包apk
ant 编译、打包、部署项目的build文件
使用ant批量打包,替换渠道号,文件中包含所用到的所有资源。