`
handsomeliuyang
  • 浏览: 314918 次
  • 性别: Icon_minigender_1
  • 来自: 益阳
社区版块
存档分类
最新评论

Ant自动打包2(打特殊厂商的包)

 
阅读更多

  由于公司内置的需要,我们的程序要针对不同的厂商打不同的apk,而且不同厂商之间还有一些差别,所以我在原来打包的基础上进行了扩展,支持不同厂商。

  为了便于扩展和维护,我把特殊厂商的代码与原来正常打包的代码进行分离,同时让打包者可以自动选择当前要打包的厂商。

 

改动的几个地方:

  1. 把不同厂商要改动的地方写在宏(就相当于java里的方法)里面,而这些所有的宏,都放在一个当独的special_company.xml文件里:

<?xml version="1.0" encoding="gbk"?>

<project>
	<!-- 宏:打A厂商的包 -->
	<macrodef name="aPack">
	   <sequential>
			<!-- 改manifest文件里的包名(直接改) -->
			<echo>改manifest文件里的包名(直接改)</echo>
			<replaceregexp file="${project.58Client}/AndroidManifest.xml"
				encoding="utf-8"
				match="package=&quot;(.*?)&quot;"
				replace=" package=&quot;xxxx&quot; "
				byline="true"/>
				
			<!-- 隐式意思的action字符串(要用搜索来改) -->
			<echo>隐式意思的action字符串(要用搜索来改)</echo>
			<replaceregexp encoding="utf-8" flags="g"
				match="xxxx.intent.action.DOWNAPK"
				replace="xxxx.intent.action.DOWNAPK">
				<fileset dir="${project.58Client}">
					<include name="**/*.java"/>
					<include name="**/*.xml"/>
				</fileset>
			</replaceregexp>
			
			<!-- 改xml文件里使用自定义属性的命名空间(搜索http://schemas.android.com/apk/res/xxxx来改) -->
			<echo>改xml文件里使用自定义属性的命名空间(搜索http://schemas.android.com/apk/res/xxxx来改)</echo>
			<replaceregexp encoding="utf-8" flags="g"
				match="http://schemas.android.com/apk/res/xxxx"
				replace="http://schemas.android.com/apk/res/xxxx">
				<fileset dir="${project.58Client}">
					<include name="**/*.xml"/>
				</fileset>
			</replaceregexp>
			
			<!-- 改java文件里的import xxxx.R的引用(搜索import xxxx.R来改,不要搜索import xxxx.R;来改,还有import xxxx.R.color等等)-->
			<echo>改java文件里的import xxxx.R的引用(搜索import xxxx.R来改,不要搜索import xxxx.R;来改,还有import xxxx.R.color等等)</echo>
			<replaceregexp encoding="utf-8" flags="g"
				match="import xxxx.R"
				replace="import xxxx.R">
				<fileset dir="${project.58Client}">
					<include name="**/*.java"/>
				</fileset>
			</replaceregexp>
			
			<!-- 给在xxxx包下的java文件添加import xxxx.R;-->
			<echo>给在xxxx包下的java文件添加import xxxx.R;</echo>
			<replaceregexp file="${project.58Client}/src/xxxx/AppHttpApiV1.java"
				encoding="utf-8"
				match="package xxxx;"
				replace="package xxxx;import xxxx.R;"
				byline="true"/>
	   </sequential>
	</macrodef>
	
	<!-- 宏:打B厂商的包 -->
	<macrodef name="bPack">
	   <sequential>
			<!-- 换图标 -->
			<copyfile src="resource/b/icon.png" dest="${project.58Client}/res/drawable/icon.png" forceoverwrite="true"/>
	   </sequential>
	</macrodef>
</project>

在这个文件里,有几个要注意的地方:

  *. 在这个独立的文件里,一定不要忘了加<project>标签,这个是必需的

  *. 在使用ant替换命令replaceregexp时,在我们的查找范围里有很多要进行替换时,默认情况下,只会给我们替换其中的一部分,不会是我们想的那样,把所有查找到的都进行替换,解决办法是:加上属性flags="g",这个属性的意思就是把查找到的,都时行替换。

  *. 替换后的文件的编码,默认情况下,是与运行ant命令的系统有关,如果为windows系统,则为gbk编码,如果为linux系统,则为utf-8编码。所以如果你的代码的编码原来就是utf-8,如果还想在windows里运行ant命令,在替换的命令里要加上encoding="utf-8"

  2. 把宏写好后,就要把代码链接到原来的build.xml文件上,这个厂商的改动,是在代码从svn上下载下来后,就要执行的。

    *. 在build.xml文件里使用这些宏之前,要先引入这个文件:

<!--引用特殊包的宏-->
	<import file="special_company.xml" />

    *. 其次就根据当前的厂商,来选择执行不同的宏,这段代码是在svn标签后

<!-- 打特殊包 -->
		<switch value="${which_company}">
			<case value="a">
				<echo message="a特殊渠道" />
				<aPack />
			</case>
			<case value="b">
				<echo message="b特殊渠道" />
				<bPack />
			</case>
</switch>

    *. 最后就是在build.properties文件里进行选择

#是哪个特殊厂商 a, b
which_company=a

    *. 同时为把打好后的包,便于区分,我就把生成的文件夹的后面加上了which_company后缀。

 

其他的打包流程和以前的一样,没有变化。

 

分享到:
评论
1 楼 luzhengdong 2011-12-26  
兄弟,我最近也有这方面的需求,可否将你的xml及相应的.properties文件共享一下
联系方式:tiankong860906@126.com 非常感谢!

相关推荐

    Ant自动打包用的.

    标题中的"Ant自动打包用的"表明我们将讨论的是Ant在软件打包过程中的应用。在Java开发中,打包通常指的是将源代码、资源文件、配置文件等编译成JAR(Java Archive)或WAR(Web Application Archive)文件,以便于...

    ant自动打包完整例子

    ant自动打包流程: 1.生成keystore, 签名时要用到. 可参考http://www.cnblogs.com/feisky/archive/2010/01/17/1650076.html 2.更改localproperties中的sdk.dir, 为你机器上环境的安装路径 3.更改ant下的路径, 可参考...

    Ant自动打包SDK脚本

    Ant自动打包SDK脚本是Java开发中常用的一种自动化构建工具,它基于Apache Ant,一个用Java编写的构建工具,能够帮助开发者实现项目的编译、测试、打包和部署等一系列任务的自动化。这个脚本专为SDK开发者设计,可以...

    mac下ant打包android

    在Android应用开发中,构建和打包过程是必不可少的环节,特别是在多渠道发布时,需要针对不同的市场或平台生成定制的APK。...通过理解和配置Ant脚本,你可以有效地管理和自动化整个打包过程,提高开发效率。

    ant批量打包工具

    2. **自动化构建**:通过编写XML格式的构建脚本(build.xml),Ant可以自动化处理编译、资源处理、签名、优化和打包等一系列过程。这大大提高了工作效率,减少了人为错误。 3. **灵活的配置**:Ant脚本允许开发者...

    android 使用ant自动打包apk

    本文将详细介绍如何利用Ant来自动化打包Android应用(APK)。 首先,你需要在Android项目中设置Ant环境。确保你已经安装了Java Development Kit (JDK) 和Apache Ant。Ant的配置文件通常位于项目的根目录下,名为`...

    Ant批量打包Android应用

    Ant是一个基于Java的构建工具,它使用XML来描述项目构建过程,能够自动化执行编译、测试、打包等任务。下面将详细介绍如何使用Ant来批量打包Android应用。 首先,确保你已经安装了以下基本环境: 1. Java ...

    ant 多渠道自动打包

    本篇文章将详细介绍如何使用Ant进行多渠道自动打包,以及解决"appt没找到"的问题。 首先,`Ant`通过构建脚本(通常是`build.xml`)来定义项目的构建过程。在Android应用开发中,这个脚本会包含编译源代码、生成APK...

    ant 涉及第三方包问题 打包第三方包 或者添加第三方包

    ant 涉及第三方包问题 打包第三方包 或者添加第三方包 ant 涉及第三方包问题 打包第三方包 或者添加第三方包 ant 涉及第三方包问题 打包第三方包 或者添加第三方包 ant 涉及第三方包问题 打包第三方包 或者添加第三...

    ANT批量打包工具及教程

    在IT行业中,自动化是提升效率的关键,而"ANT批量打包工具及教程"正是为了实现这一目标。Apache Ant是一个由Java编写的开源构建工具,它基于XML来定义项目构建过程,可以执行编译、测试、打包等多种任务。在这个教程...

    java项目ant打包脚本

    Java项目中的Ant打包脚本是开发过程中的一个重要环节,它使得开发者能够自动化构建、测试和部署应用程序。Ant是一个基于XML的构建工具,由Apache软件基金会开发,它在Java社区广泛使用,替代了早期的Makefile,因为...

    使用Ant编译打包

    **Ant编译打包详解** Ant 是 Apache 软件基金会的一个开源项目,它是一个基于Java的构建工具,类似于Make,但更为现代且专为Java设计。Ant使用XML来描述构建过程,包括编译、测试、打包和部署等任务,使得开发者...

    ant打包Web工程

    3. **定义任务(Tasks)**:Ant通过任务来执行具体的操作,例如`javac`用于编译Java源代码,`copy`用于复制文件,`jar`用于创建JAR包,`war`则用于打包Web应用。 4. **Web应用结构**:在打包Web应用时,理解标准的...

    ant批量打包脚本

    标题中的“ant批量打包脚本”指的是使用Apache Ant工具编写的一段自定义脚本,该脚本能够自动化处理一系列打包操作,而不是手动一个接一个地进行。这种脚本通常会根据不同的配置参数(如渠道标识、版本号等)生成...

    ant打包的build.xml文件

    一个普通java程序用ant打包的列子,完整的,里面采用的是eclipse自带的编译插件进行的打包,需要结合eclipse中的插件一起使用

    安卓自动打包ant

    在Android开发过程中,"安卓自动打包ant"是一个关键步骤,它涉及到如何利用Apache Ant工具自动化构建和打包Android应用(APK)。Apache Ant是一种基于Java的构建工具,它允许开发者通过XML配置文件定义任务来编译、...

    Ant脚本打包Android程序的demo 多渠道及第三方JAR打包

    build是在build_with_bat的基础上实现的,主要是在compile和dex部分增加了第三jar的打包。 build_mulity_channel是多渠道打包脚本。该脚本需要ant-contrib-1.0b3.jar的支持。包中已包含,需要将其放到ant的lib...

    ant打包

    标题中的“ant打包”指的是使用Apache Ant工具进行软件构建的过程。Apache Ant是一个Java库和命令行工具,其任务是驱动构建过程,它基于XML来定义项目任务,使得构建过程可配置且可重复执行。 在软件开发中,打包是...

    ant 打包 java project 为ant

    Ant是Java开发中的一个构建工具,它以XML格式定义任务,可以自动化编译、测试、打包等流程。在这个过程中,开发者通常会创建一个名为build.xml的配置文件,该文件包含了构建过程的详细步骤。 以下是一些关于Ant和...

Global site tag (gtag.js) - Google Analytics