android 使用ant打包或者生成jar

一、生成build.xml文件

Eclipse 中使用Ant为Android打包并且签名

Android Sdk中自带文件,在{sdkpath}tools/ant目录下的3个文件


其中build.xml和unbuild.xml中定义了大量基础构建方法和构建策略。我们只需要构建我们自己的build.xml并且存放在项目的根目录下,然后引用{sdk}tools/ant即可。

在命令行窗口输入一下命令就可以生成一个build.xml文件。

<sdk>tools\android update project -p <project> - t <target>  --subprojects

说明:

<sdk>  为sdk的安装目录,其下tools\android是我们使用的命令。

project 为项目目录。

target为项目所使用的Android的target id ,就是项目对应的Android版本。

如:D:\tools\android-sdk_22\tools\android update project -p . -t android-18 --subprojects

执行上述命令将生成3个文件:

build.xml  local.properties,  proguard-project.txt

其中,build.xml文件是进行ant build的主要文件,它引用了其它文件。这些被引用的文件有local.properties,ant.properties两个属性文件,以及在build.xml中的最后,引用了sdk目录下的tools/ant/build.xml文件。

  local.properties文件中定义了sdk.dir属性,也就是当前使用的sdk的目录。

  ant.properties可根据构建需要进行相关配置。

  项目下的build.xml默认执行的target是help,运行后可以看到相关的帮助信息。如果需要的话,我们可将其修改为debug或者release。

  通过查看相关的帮助信息,可以看到其它可用的target。然后运行ant时,可指定target。例如,ant debug, ant help, ant relaese等等。

二、配置ant.properties 

  ant.properties文件是不会自动生成的,需在项目根目录下新建一个ant.properties文件。

      然后根据构建的实际需要进行相关配置。在ant.properties文件中,可以定义自己的一些属性,或者重定义一些属性。

1、设定私钥库

  ant构建时,如果是debug版的话,默认会使用debug方式签名。
  如果是release版的话,需指定相应的keystore以及私钥。否则,最后只能生成一个没有签名的apk文件。

  设定私钥库的方法如下:

  在ant.properties文件中,添加如下内容:
    key.store=<keystore>
    key.alias=<key>
    key.store.password=<keystore pwd>
    key.alias.password=<key pwd>

    其中:
      keystore为私钥库文件。
      key为签名需要使用的私钥。
      key.store.password为私钥库的密码。
      key.alias.password为私钥的密码。

2、如果项目引用了第三方库的话,只需要在项目根目录创建libs文件夹并将其放入即可。

  如果是jar库,直接放到libs目录下;

  如果是so库,需要放到libs的名为armeabi的子目录下。

  也可以通过设定相应的属性来指定第三方库的位置,其默认都是libs文件夹。
  jar.libs.dir为jar类型库所在的目录。
  native.libs.absolute.dir为so类型库所在的目录,即armeabi的父目录。

3、如果项目包含了jni代码,希望在打包时自动重新编译so库,可以修改build.xml文件。
  修改方法为,在引用sdk的build.xml文件之前添加如下target:
  <target name="-pre-build" depends="-ndk-build">
  </target>
  <target name="-ndk-build">
      <exec executable="ndk-build" failonerror="true">
          <arg value="clean" />
      </exec>
      <exec executable="ndk-build" failonerror="true" />
  </target>

  ndk-build为ndk提供的命令,需要将ndk安装目录添加到环境变量中,添加方法同sdk/tools。
生成的so默认会放到libs/armeabi目录下。

三、实现自动打包签名apk

  有两种方式可实现。

1、一种方式在elispe中执行ant.

右键点击项目中的build.xml->run as... 先查看下有多少种任务,当然这些任务都是来自<sdk>\tools\ant\build.xml,项目里的只是引用了它

 

 

  窗口打开

默认的选择在help上。打签名包的时候执行release这个任务即可。

按照以上的步骤配置好之后就能生成签名apk。

最后在项目跟目录\bin下生成apk包。

2、第二种方式通过命令行执行。

生成debug版本:ant debug

生成release版本:ant release

 

大家可以通过学习<sdk>\tools\ant\build.xml来理解ant的基本奥妙。

Ant是非常强大的。可以实现以下功能。

例如:

1.在生成apk的文件名里加上日期。

2.把apk文件自动通过邮件发给其他人。

3.apk文件上传服务器


注意事项:

如果要打成jar的项目依赖有别的jar,并且依赖的jar不会被打包进jar。这时候两个项目的target id一样,如果使用android-18,在生成build.xml文件的时候,两个项目都使用Android-18

2、在使用ant release 生成jar是,有时候会不成功,项目中bin下的一下文件可能影响正常生成jar,所以使用ant release命令前,执行一下ant clean命令。



猜你喜欢

转载自blog.csdn.net/lebsharing/article/details/76096061