[Android] 利用 ant 脚本修改项目包名在开发android应用项目的时候,经常会有这样的需求,一个应用项目,要

房价上半年下行 下半年或回暖

在不同的OEM下有不同的包名,不同的资源,不同的功能点什么的。尽管可以利用eclipse adt自带的功能来做这件事,但是,当按照这样的需求来定制的越来越多的时候,手动去修改就开始变得力不从心起来。这个时候,一个良好的自动化脚本呼之欲出,你完全可以利用perl/python/Makefile来做,不过这里如果直接使用ant来做的话,似乎很多事情变得简单起来。毕竟,ant提供给我们良好的接口,而隐藏那些实现细节。

废话少说,先搭建一个这样的环境吧。 首先还是简述一下我的工作环境Windows 7 1. 下载安装jdk, 一定是jdk, 如果只安装jre的话,在运行ant时会报错,说找不到tools.jar这个文件。 安装完毕后在系统环境变量下设置JAVA_HOME=C:\Program Files\Java\jdk1.6.0_25(这个换成自己的安装路径) 2. 下载安装ant 其实就是解压到某目录下,解压完毕后在系统环境变量下设置ANT_HOME=D:\apache-ant-1.8.2(这个换成自己的安装路径) 并添加运行路径Path=%Path%;%ANT_HOME%\bin 3. 更新project android.bat update project --path . 4. 使用ant ant release (或者是debug) 5. 定制自己的脚本来完成修改项目包名等内容
    1. 准备config.xml
      <?xml version="1.0"
      encoding="UTF-8"?>
      <!-- www.Ulrich-Scheller.de - use this
      script/project for whatever you want on your own risk -->

      <project
      name="myproject" default="myproject" basedir=".">
      <description>
      Build project for different partner </description>


      <!--partner.dir, pkg.name, ver.code, ver.name are input from command line
      when execute 'ant' -->

      <!-- set global properties for this
      build -->
      <property name="build.bin" location="bin"/>

      <property name="build.gen" location="gen"/>
      <property name="src"
      location="src"/>
      <property name="res"
      location="res"/>

      <target name="preparefiles"
      description="Prepare files for different partner" >
      <delete
      dir="${build.bin}" />
      <delete dir="${build.gen}"
      />

      <copy todir="${res}" overwrite="true" />

      <fileset dir="${partner.dir}/res" />

      </copy>

      <!-- change the import in all Java source files
      -->
      <replaceregexp file="AndroidManifest.xml"

      match='android.versionCode="(.*)"'

      replace='android.versionCode="${ver.code}"'

      byline="false">

      <replaceregexp
      file="AndroidManifest.xml"

      match='android.versionName="(.*)"'

      replace='android.versionName="${ver.name}"'

      byline="false">

      <replaceregexp
      file="AndroidManifest.xml"
      match='package="(.*)"'

      replace='package="${pkg.name}"'
      byline="false">


      <!-- change the package name in AndroidManifest -->

      <replaceregexp flags="g" byline="false">
      <regexp
      pattern="import(.*)com.myproject.com.R;" />
      <substitution
      expression="import com.${pkg.name}.R;" />
      <fileset
      dir="${src}" includes="***.java" />

      </replaceregexp>
      </target>

      </project>
    2. 运行定制脚本
      $ ant -f config.xml -Dpartner.dir="xxx" -Dpkg.name="xxx"
      -Dver.code="xxx" -Dver.name="xxx" preparefiles
    3. 编译
      $ ant debug
      或者
      $ ant release
    具体www.hc3600.comwww.dgdaming.com的定制细节可以参考上面的脚本和如下链接里提到的内容
http://blogold.chinaunix.net/u/9577/showart_1828754.html http://www.ulrich-scheller.de/?p=4 http://java.dzone.com/articles/building-two-versions-same

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  3. 直接拿来用!最火的Android开源项目
  4. 项目在android studio 中出现 .9.png问题的解决方案
  5. android studio项目打包无法勾选v1 、v2 引出的解决项目中gradle
  6. android 把activity和资源文件打包成jar包给其他项目使用
  7. 直接拿来用!最火的Android开源项目(三部完整版)
  8. Android自动测试之通过命令行启动应用程序
  9. 【Android(安卓)NDK 开发】Android.mk 配置动态库 ( Android(安

随机推荐

  1. 有关ASP.NET中Config文件的读写讲解
  2. C#中foreach与yield的实例详解
  3. asp.net实现生成缩略图及加水印的方法示
  4. asp.net mvc中实现Forms身份验证身份验证
  5. C#中强制转换与尝试转换的实现方法
  6. C#中实现复制与删除文件的方法
  7. ASP.NET如何实现Hadoop增删改查
  8. C#通过KD树进行距离最近点的查找的实例分
  9. C#实现操作字符串的方法总结
  10. ASP.NET Core应用程序运行Vue并且部署在I