`
yang_min
  • 浏览: 343996 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Ant脚本打包Android项目,并且通过Hudson构建进行管理

 
阅读更多

build.xml脚本代码如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<project name="android_target" default="package">
	<!-- 引用属性配置文件 -->
	<property file="build.properties">
	</property>
	<!-- ANT环境变量 -->
	<property environment="env" />
	<!-- 应用名称 -->
	<property name="appName" value="${ant.project.name}" />
	<!-- SDK目录(获取操作系统环境变量ANDROID_SDK_HOME的值) -->
	<property name="sdk-folder" value="${env.ANDROID_SDK_HOME}" />

	<!-- SDK指定平台目录 -->
	<property name="sdk-platform-folder" value="${sdk-folder}/platforms/android-8" />
	<!-- SDK中tools目录 -->
	<property name="sdk-tools" value="${sdk-folder}/tools" />
	<!-- SDK指定平台中tools目录 -->
	<!-- <property name="sdk-platform-tools" value="${sdk-platform-folder}/tools" /> 
	-->
	<property name="sdk-platform-tools" value="${sdk-folder}/platform-tools" />

	<!-- 使用到的命令(当前系统为windows,如果系统为linux,可将.bat文件替换成相对应的命令) -->
	<property name="aapt" value="${sdk-platform-tools}/aapt" />
	<property name="aidl" value="${sdk-platform-tools}/aidl" />
	<property name="dx" value="${sdk-platform-tools}/dx.bat" />
	<property name="apkbuilder" value="${sdk-tools}/apkbuilder.bat" />
	<property name="jarsigner" value="${env.JAVA_HOME}/bin/jarsigner" />

	<!-- 编译需要的jar; 如果项目使用到地图服务则需要maps.jar -->
	<property name="android-jar" value="${sdk-platform-folder}/android.jar" />
	<property name="android-maps-jar" value="${sdk-folder}/add-ons/addon_google_apis_google_inc_8/libs/maps.jar" />

	<!-- 编译aidl文件所需的预处理框架文件framework.aidl -->
	<property name="framework-aidl" value="${sdk-platform-folder}/framework.aidl" />

	<!-- 生成R文件的相对目录 -->
	<property name="outdir-gen" value="gen" />
	<!-- 编译后的文件放置目录 -->
	<property name="outdir-bin" value="bin" />

	<!-- 清单文件 -->
	<property name="manifest-xml" value="AndroidManifest.xml" />
	<!-- 源文件目录 -->
	<property name="resource-dir" value="res" />
	<property name="asset-dir" value="assets" />

	<!-- java源文件目录 -->
	<property name="srcdir" value="src" />
	<property name="srcdir-ospath" value="${basedir}/${srcdir}" />

	<!-- 外部类库所在目录 -->
	<property name="external-lib" value="lib" />
	<property name="external-lib-ospath" value="${basedir}/${external-lib}" />

	<!-- 生成class目录 -->
	<property name="outdir-classes" value="${outdir-bin}" />
	<property name="outdir-classes-ospath" value="${basedir}/${outdir-classes}" />

	<!-- classes.dex相关变量 -->
	<property name="dex-file" value="classes.dex" />
	<property name="dex-path" value="${outdir-bin}/${dex-file}" />
	<property name="dex-ospath" value="${basedir}/${dex-path}" />

	<!-- 经过aapt生成的资源包文件 -->
	<property name="resources-package" value="${outdir-bin}/resources.ap_" />
	<property name="resources-package-ospath" value="${basedir}/${resources-package}" />

	<!-- 未认证apk包 -->
	<property name="out-unsigned-package" value="${outdir-bin}/${appName}-unsigned.apk" />
	<property name="out-unsigned-package-ospath" value="${basedir}/${out-unsigned-package}" />

	<!-- 证书文件 -->
	<property name="keystore-file" value="${basedir}/release.keystore" />

	<!-- 已认证apk包 -->
	<property name="out-signed-package" value="${outdir-bin}/${appName}.apk" />
	<property name="out-signed-package-ospath" value="${basedir}/${out-signed-package}" />

	<!-- 初始化工作 -->
	<target name="init">
		<echo>Initializing all output directories...</echo>
		<delete dir="${outdir-bin}" />
		<delete dir="${basedir}/gen" />
		<delete file="${basedir}/resources-package" />
		<touch file="${basedir}/resources-package" />
		<mkdir dir="${outdir-bin}" />
		<mkdir dir="${outdir-classes}" />
		<mkdir dir="${basedir}/gen" />
	</target>

	<!-- 根据工程中的资源文件生成R.java文件  -->
	<target name="gen-R" depends="init">
		<echo>Generating R.java from the resources...</echo>
		<exec executable="${aapt}" failonerror="true">
			<arg value="package" />
			<arg value="-f" />
			<arg value="-m" />
			<arg value="-J" />
			<arg value="${outdir-gen}" />
			<arg value="-S" />
			<arg value="${resource-dir}" />
			<arg value="-M" />
			<arg value="${manifest-xml}" />
			<arg value="-I" />
			<arg value="${android-jar}" />
		</exec>

	</target>

	<!-- 编译aidl文件 -->
	<target name="aidl" depends="gen-R">
		<echo>Compiling .aidl into java files...</echo>
		<apply executable="${aidl}" failonerror="true">
			<!-- 指定预处理文件 -->
			<arg value="-p${framework-aidl}" />
			<!-- aidl声明的目录 -->
			<arg value="-I${srcdir}" />
			<!-- 目标文件目录 -->
			<arg value="-o${outdir-gen}" />
			<!-- 指定哪些文件需要编译 -->
			<fileset dir="${srcdir}">
				<include name="**/*.aidl" />
			</fileset>
		</apply>

	</target>

	<!-- 将工程中的java源文件编译成class文件 -->
	<target name="compile" depends="aidl">
		<echo>Compiling java source code...</echo>
		<javac encoding="utf-8" target="1.5" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}" includeantruntime="on">
			<classpath>
				<fileset dir="${external-lib}" includes="*.jar" />
				<!--  <filelist>
	                <file name="${android-maps-jar}"/>
	            </filelist>-->
			</classpath>
		</javac>
	</target>

	<!-- 将.class文件转化成.dex文件 -->
	<target name="dex" depends="compile">
		<echo>Converting compiled files and external libraries into a .dex file...</echo>
		<exec executable="${dx}" failonerror="true">
			<arg value="--dex" />
			<!-- 输出文件 -->
			<arg value="--output=${dex-ospath}" />
			<!-- 要生成.dex文件的源classes和libraries -->
			<arg value="${outdir-classes-ospath}" />
			<arg value="${external-lib-ospath}" />
		</exec>
	</target>

	<!-- 将资源文件放进输出目录 -->
	<target name="package-res-and-assets">
		<echo>Packaging resources and assets...</echo>
		<exec executable="${aapt}" failonerror="true">
			<arg value="package" />
			<arg value="-f" />
			<arg value="-M" />
			<arg value="${manifest-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>
	<!-- 打包成未签证的apk -->
	<target name="package" depends="dex, package-res-and-assets">
		<echo>Packaging unsigned apk for release...</echo>
		<exec executable="${apkbuilder}" failonerror="true">
			<arg value="${out-unsigned-package-ospath}" />
			<arg value="-u" />
			<arg value="-z" />
			<arg value="${resources-package-ospath}" />
			<arg value="-f" />
			<arg value="${dex-ospath}" />
			<arg value="-rf" />
			<arg value="${srcdir-ospath}" />
			<!-- libs目录下的so文件
			<arg value="-rj" />
			<arg value="${external-lib-ospaths}" />
			<arg value="-nf" />
			<arg value="${external-lib-ospaths}" />
			-->
		</exec>
		<echo>It will need to be signed with jarsigner before being published.</echo>
	</target>

	<!-- 对apk进行签证 -->
	<target name="jarsigner" depends="package">
		<echo>Packaging signed apk for release...</echo>
		<exec executable="${jarsigner}" failonerror="true">
			<arg value="-keystore" />
			<arg value="${keystore-file}" />
			<arg value="-storepass" />
			<arg value="123456" />
			<arg value="-keypass" />
			<arg value="123456" />
			<arg value="-signedjar" />
			<arg value="${out-signed-package-ospath}" />
			<arg value="${out-unsigned-package-ospath}" />
			<!-- 不要忘了证书的别名 -->
			<arg value="release" />
		</exec>
	</target>


	<!-- 发布 -->
	<target name="release" depends="jarsigner">
		<!-- 删除未签证apk -->
		<delete file="${out-unsigned-package-ospath}" />
		<echo>APK is released. path:${out-signed-package-ospath}</echo>
	</target>

	<!-- 调试 -->
	<target name="debug">
		<echo message="${apkbuilder}">
		</echo>
		<echo message="${out-unsigned-package-ospath}">
		</echo>
		<echo message="${resources-package-ospath}">
		</echo>
		<echo message="${dex-ospath}">
		</echo>
		<echo message="${srcdir-ospath}">
		</echo>
		<echo message="${resources-package}"></echo>
		<echo message="${dx}"></echo>
	</target>
</project>

 

 

将此脚本放在svn项目的根目录下,通过Hudson中ant的配置默认情况下回自动找到并且会自动执行这个脚本

分享到:
评论

相关推荐

    hudson自动构建文档

    通过深入学习和实践上述内容,你将能够熟练地使用Hudson进行自动构建,提升开发团队的效率,实现持续集成和持续交付的目标。在实际应用中,不断探索和优化Hudson的配置,将使你的CI/CD流程更加高效和可靠。

    Jenkins构建执行脚本

    Vue.js的构建可能涉及`npm install`来安装依赖,然后使用`npm run build`来编译和打包应用。Angular的构建可能涉及Angular CLI命令,如`ng build --prod`。Ionic,作为基于Angular的移动应用框架,同样使用Angular ...

    使用Ant进行java开发

    Ant(Another Neat Tool)是一个广泛用于Java项目管理的构建工具,尤其适用于那些需要执行诸如编译、测试、打包和部署等任务的项目。Ant的优势在于其灵活性和易用性,它使用XML(可扩展标记语言)来描述构建过程,...

    持续集成工具Hudson入门介绍(结合Ant)

    3. **Hudson与Ant的结合**:Hudson可以通过配置Ant构建脚本来执行自动化构建。首先,你需要在Hudson的“新建任务”页面选择“自由风格的软件项目”,然后配置项目的源代码管理(如Git或SVN),并指定Ant构建文件...

    打包工具 Ant 学习指南

    在实际项目中,Ant脚本常常结合持续集成工具如Jenkins或Hudson使用,实现自动化构建和部署。同时,Ant也可以与其他Java工具如Eclipse、IntelliJ IDEA等IDE集成,提供便捷的构建环境。 总结起来,Ant是Java开发中不...

    Hudson快速启动和停止脚本

    "Hudson快速启动和停止脚本"是针对Hudson服务进行管理的实用工具,通过这些脚本,我们可以更加便捷地控制Hudson服务的运行状态。 `start.sh`和`stop.sh`是两个常见的Linux shell脚本,它们分别用于启动和停止Hudson...

    hudson每日构建

    Hudson,作为一个基于Java的开源持续集成工具,是开发者进行自动化构建、测试和部署的重要选择。它的核心理念是通过频繁的构建来确保软件的质量,尤其在大型项目中,这种频繁的集成能有效避免代码冲突,及时发现并...

    演示ANT工具的Eclipse项目AntAdvanceDemo

    总的来说,"AntAdvanceDemo"项目提供了一个学习和实践ANT工具的实例,通过这个项目,开发者可以了解到ANT在Eclipse环境下的具体使用方式,以及如何通过ANT脚本来管理和构建复杂的Java项目。通过深入研究此项目,将有...

    hudson使用演示

    - 构建过程中,Hudson会执行指定的构建脚本,如Maven的`mvn clean install`命令,进行编译、测试和打包。 4. **测试与质量报告**: - Hudson支持集成各种测试框架,如JUnit,可以生成测试报告,并展示测试覆盖率...

    hudson+ant配置详细教程PPT

    - 使用Ant进行项目构建时,需要在项目根目录下创建`build.xml`文件。 - 该文件用于定义构建过程中的各个阶段及其依赖关系。 - **构建文件结构**: - `build.xml`文件的基本结构由`&lt;project&gt;`元素组成,其中包含...

    hudson学习教程Hudson安装与使用,Hudson配置,Hudson插件

    - 配置项目源代码仓库(如Git、SVN)、构建触发器(定时、提交触发等)、构建脚本(如Ant、Maven)。 4. **构建与测试** - 设置构建步骤,包括编译源码、执行单元测试、打包等。 - 配置邮件通知,当构建失败时...

    Hudson+Ant+SVN+Tomcat实现快速构建(一)

    标题 "Hudson+Ant+SVN+Tomcat实现快速构建(一)" 涉及的是在软件开发中使用一系列工具进行自动化构建的过程。这个过程是持续集成的一部分,旨在提高开发效率,确保代码质量,并减少错误。以下是这些工具在构建流程...

    hudson使用及插件介绍

    13. **构建脚本**:你可以添加Ant、Maven或其他构建脚本来定义具体的构建过程,如编译、测试、打包等。 通过上述配置,你可以充分利用Hudson的功能,构建出高效、可靠的持续集成流程。同时,Hudson丰富的插件生态...

    hudson svn maven 自动构建

    【标题】"Hudson SVN Maven 自动构建"指的是在持续集成环境中使用Hudson(现在称为Jenkins)作为工具,结合Subversion(SVN)作为版本控制系统,Maven作为项目管理和构建工具,实现代码的自动构建过程。这个流程的...

    java用ant打包

    本篇文章将深入探讨如何使用Ant对Java项目进行打包,以及Ant的基本概念和应用。 首先,让我们理解什么是Ant。Ant是一个由Apache软件基金会开发的Java库和命令行工具,其任务是驱动构建过程。它使用XML来描述构建...

    hudson使用说明

    它支持多种版本控制系统(如Subversion、ClearCase等)和构建工具(如Maven、Ant等),并且可以通过插件扩展其功能。 【Hudson的使用】 在Hudson中,设置持续集成的过程通常包括以下步骤: 1. **安装与配置**:根据...

    ant1.7使用手册指南

    通过深入学习"ant1.7使用手册指南",开发者不仅可以熟练掌握Ant的使用,还能优化构建流程,提升项目开发的效率。对于Java开发者而言,Ant是必备的工具之一,尤其在处理复杂的构建逻辑时,其灵活性和可扩展性显得尤为...

    使用Hudson进行持续集成.doc

    安装Hudson通常涉及到在服务器上部署Hudson war文件或通过包管理器进行安装。例如,在Ubuntu Linux 8.04 (Hardy Heron)上,可以使用apt-get或者手动下载war文件,将其部署到一个运行的Tomcat服务器上。同时,为了...

Global site tag (gtag.js) - Google Analytics