本文简要介绍如何通过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
分享到:
相关推荐
8. **打包APK** - 最后,所有编译后的文件(包括Dex、资源、证书等)会被合并成一个APK文件。使用`apkbuilder`或`zipalign`工具完成这一步。 - `<exec>`任务调用这些工具,并指定输出APK的路径和名称。 9. **签名...
本篇文章将详细介绍如何使用Ant来打包Android应用,以及涉及到的相关知识点。 首先,理解Ant的基本概念是必要的。Ant基于XML,通过构建文件(通常命名为build.xml)来定义构建任务。这些任务可以包括编译源代码、...
本教程将详细介绍如何使用Ant来发布Android应用到手机上,包括设置环境、编写build.xml脚本以及执行编译和安装的过程。 首先,我们需要了解Ant。Ant是Apache软件基金会的一个项目,它是一个基于Java的构建工具,...
在Android开发过程中,构建应用程序APK文件是必不可少的步骤,而`Ant`是一...虽然现代Android开发更多地转向了Gradle作为构建系统,但了解和掌握`Ant`打包APK的方法,对于理解Android构建过程和历史发展仍然很有价值。
然后,我们需要创建一个`package`任务,该任务会调用`apkbuilder`,将编译后的类文件、资源文件以及manifest文件打包成APK。在`package`任务中,可以设置`signed`属性为`true`,表示需要对APK进行签名。如果需要,还...
3. Apache Ant:从官方网站下载并解压Apache Ant的RAR文件,配置ANT_HOME环境变量,并将bin目录添加到PATH环境变量中。 接下来,我们需要创建一个Ant构建脚本(build.xml)。这个脚本定义了构建过程的各个步骤,...
通过Ant,我们可以创建一个脚本来动态替换APK中的特定字符串,实现快速打包多个渠道的APK。 1. 创建渠道配置文件:为每个渠道创建一个XML文件,包含需要替换的字符串及其值。 2. 编写Ant脚本:在build.xml文件中...
本文将详细介绍如何使用Xcode工具开发的Cocos2dx游戏项目打包成Android APK。 #### 二、环境准备与配置 1. **安装Java JDK**:确保安装了最新版本的Java JDK,这是Android开发的基本要求。 2. **安装Android SDK**...
总结来说,Android SDK结合Ant进行多渠道批量打包是通过创建一个Ant构建脚本,遍历渠道列表,为每个渠道生成包含特定标识的APK,然后使用Android SDK的`apksigner`和`zipalign`工具进行签名和优化。这种方法虽然相对...
"android ant 多渠道批量打包Demo"就是一个解决此类问题的实践案例,它展示了如何通过Apache Ant工具进行自动化构建,以快速生成多个定制化的APK。 Apache Ant是一个Java库和命令行工具,它的任务是驱动构建过程。...
- 其中`java home path`为JDK安装路径,`key.pass`为证书密码,`key.store`为证书文件路径,`apk.outpath`为目标签名APK路径,`${out-folder}/${ant.project.name}-unsigned.apk`为待签名APK路径。 3. **创建`...
eclipse虽然用的比较少,但是在一些古老的项目上还会用到滴,其中最麻烦的事情就是打带签名包的问题,不太方便,下面通过本文给大家记录下配置ant,自动打包带签名apk的过程,作为备份。(PC环境为MAC) 1,第一步得安...
对于Android项目,Ant同样可以用来构建和打包APK。 1. **配置Ant的build.xml文件**:在项目根目录下创建一个`build.xml`文件,该文件定义了打包过程的具体步骤。例如: ```xml <project name="BuildTest" ...
运行Ant的打包命令,如`ant all-channels`,这将会根据`channels.properties`文件中的每个渠道生成对应的混淆打包APK。 总结来说,通过Ant工具结合多渠道打包和ProGuard混淆,开发者能够高效地管理并发布多个定制化...
在Android平台上,为了将Unity项目转化为可安装的APK应用,开发者通常会使用Unity的内置构建功能或者第三方工具,如Ant。Ant是Apache项目下的一个Java库和命令行工具,用于构建和管理Java项目,但它同样可以应用于...
1. **War 文件部署**: 下载 Jenkins 的最新 war 文件 (`jenkins.war`),将其部署到 Servlet 容器如 Tomcat 中,并通过启动容器的方式通过浏览器访问 Jenkins。 2. **独立运行**: 将 `jenkins.war` 文件放置到指定...
- **打包**:将编译后的文件和资源打包成 APK。 - **签名**:使用预先准备好的密钥库对 APK 进行签名。 - **优化**:对 APK 文件进行压缩、优化处理。 - **上传**:将最终的 APK 文件上传至指定服务器或应用商店...
7. **测试与发布**:打包完成后,将APK安装到Android设备上进行测试,确认无误后,可以提交到Google Play或其他应用市场进行发布。 总结,Cocos安卓打包涉及到多个步骤,包括ANT工具的安装、项目配置、签名、编译和...
在Android开发过程中,"安卓自动打包ant"是一个关键步骤,它涉及到如何利用Apache Ant工具自动化构建和打包Android应用(APK)。Apache Ant是一种基于Java的构建工具,它允许开发者通过XML配置文件定义任务来编译、...