`
ericbaner
  • 浏览: 177456 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】Android使用ant对项目进行编译签名优化打包

 
阅读更多

Android本身是支持ant打包项目的,并且SDK中自带一个build.xml文件。
通过该文件,可以对文件进行编译、打包、安装等。并且支持多种方式打包,如debug或者release。
一般的,可以按照如下方法进行操作:

首先创建一个Android工程。
工程创建好后,需要为工程添加ant支持,即创建相应的build.xml文件。
这个文件不需要用户自己创建,只需要执行如下命令即可:
<sdk>/tools/android update project -p <project> -t <target>

其中:
sdk为sdk的安装目录,其下的tools/android是我们要使用的命令。
project为项目目录。
target为项目所使用的android的target id,也就是项目对应的android的版本。

可以将sdk的tools目录添加到环境变量 ~/.bashrc 文件中,重启后生效,以后可以直接使用命令了。
可以通过执行以下命令查看当前sdk中所包含的target以及相应id:
android list targets

执行完android update project命令后,会在项目的根目录下生成相应的ant文件。
主要有build.xml、ant.properties、local.properties三个文件。
如果没有ant.properties文件,可以自己手动添加。

其中,build.xml文件是进行ant build的主要文件,它引用了其它的文件。
在local.properties文件中定义了sdk.dir属性,也就是当前使用的sdk的目录。
在ant.properties文件中,可以定义自己的一些属性,或者重定义一些属性。
当然,这两个属性文件可有可无,直接定义到build.xml中也没有关系。

在build.xml中的最后,引用了sdk目录下的tools/ant/build.xml文件。
这个是sdk默认的build文件,可以将其内容直接拷贝过来,也可以保持当前的引用方式。
项目下的build.xml默认执行的target是help,运行后可以看到相关的帮助信息。
通过帮助信息,可以看到其它可用的target。
一般的,我们需要修改为debug或者release。
修改好之后,再运行build.xml文件,就会执行我们需要的编译过程了。
build.xml文件的执行方法为:右键->Run As->Ant Build。

如果是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为私钥的密码。

两个密码相关的属性也可以不添加,而只添加私钥库及私钥。
这样的话,执行时会依次弹出相应的输入框,提示用户输入相应的密码。
这样虽然相对繁琐,但是由于没有明文指定密码,对私钥库的保护会更好一些。

如果项目引用了第三方库的话,只需要在项目根目录创建libs文件夹并将其放入即可。
如果是jar库,直接放到libs目录下;如果是so库,需要放到libs的名为armeabi的子目录下。
也可以通过设定相应的属性来指定第三方库的位置,其默认都是libs文件夹。
jar.libs.dir为jar类型库所在的目录。
native.libs.absolute.dir为so类型库所在的目录,即armeabi的父目录。

如果项目包含了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目录下。

使用默认的build.xml打包apk时,已经包含了混淆、签名、对齐优化等相关过程。
如果是使用release的方式,最后生成的apk文件已经可以直接发布了。

遗留问题:
目前采用这种方法生成的APK,虽然已经被签名了,但是,安装时错误,提示未签名。
查看APK包中的签名文件,不是默认的CERT.*,而是<key>.*。
然后,即使将名称修改成CERT.*,程序仍然不能正常安装。
如果导出debug版本,则不会有这个问题。
用ADT插件导出签名APK,也不会有这个问题。

解决方法:
产生此问题的根本原因是JDK1.7造成的,只有运行Ant使用jre1.7的版本时,才会发生该问题。
可以通过设置运行build.xml文件时使用的jre版本来解决,具体方法是:
选中build.xml->右键->Run As->External Tools Configurations,
在右侧区域选中JRE标签页,可以看到对jre设定有三个选项:
Run in the same JRE as the workspace使用与workspace相同版本的jre。
Execution environment根据相关环境选择一个jre版本。
Separate JRE使用一个已经安装的jre的当前版本。
一般项目的jre都会设定为1.7以下的版本,所以建议选择第一个,使其与项目设定保持一致即可。

分享到:
评论

相关推荐

    ANDROID_ANT自动编译打包签名教程

    本文将详细介绍如何利用ANT实现Android项目的自动编译、打包以及签名过程。 #### 二、准备工作 1. **下载并安装ANT**: - 访问ANT官网下载最新稳定版。 - 安装并配置环境变量,确保命令行下可执行`ant`命令。 2...

    mac下ant打包android

    总之,Mac下使用Ant对Android App进行多渠道打包是一种常见的做法,它允许开发者灵活地定制APK,以满足不同市场的特定需求。通过理解和配置Ant脚本,你可以有效地管理和自动化整个打包过程,提高开发效率。

    使用ant编译、签名、优化打包apk文件

    使用ant编译、签名、优化打包apk文件 附件为一个build.properties文件和一个build.xml文件。 执行的前提是需要配置好ANT_HOME、ANDROID_HOME、JAVA_HOME环境变量。

    使用ant打包android

    总结,使用Ant打包Android应用涉及到了Java和Android开发的基础知识,包括环境配置、构建脚本、编译过程、资源处理、APK打包和签名。虽然现代的Android项目多采用Gradle,但了解Ant可以帮助开发者更好地理解和控制...

    Ant编译打包android工程流程

    ### Ant编译打包Android工程流程详解 #### 一、Ant编译打包步骤 在深入了解Ant如何帮助我们构建Android项目之前,我们先来了解整个编译打包的过程。 1. **使用aapt为项目资源生成R.java文件** - **工具介绍**:...

    Ant多渠道 多项目引用 打包Android项目

    本主题将深入探讨如何利用Ant进行多渠道打包和管理多个项目引用,这对于大型复杂项目或者需要针对不同市场发布不同版本的应用至关重要。 首先,Ant是Apache组织开源的一款Java构建工具,它基于XML文件定义构建过程...

    使用Ant批量多渠道打包Android

    本资源将详细介绍如何使用Ant进行批量多渠道打包Android应用。 首先,你需要在你的项目中集成Ant。这通常意味着在项目根目录下创建一个名为`build.xml`的Ant构建文件。这个文件是Ant的配置中心,它定义了构建过程中...

    App自动化之使用Ant编译项目多渠道打包

    例如,运行`ant release`命令将执行release模式的编译并生成未签名的APK,然后使用`jarsigner`工具对APK进行签名。为了实现多渠道打包,你可能需要创建一个循环,遍历所有渠道,每次迭代时替换渠道标识并重新编译APK...

    Android中使用Ant方式友盟多渠道打包

    总结来说,Android项目中使用Ant进行友盟多渠道打包,主要涉及以下步骤: 1. 安装并配置Java JDK和Apache Ant。 2. 创建`build.xml`构建脚本,定义项目属性,引入Android SDK的Ant任务。 3. 编写`clean`、`compile`...

    android 使用ant自动打包apk

    使用` jarsigner`工具对APK进行签名,确保其来源的合法性。 - `zipalign`工具用于优化APK的文件对齐,提高加载速度。 10. **运行构建脚本** - 有了完整的`build.xml`文件后,可以通过命令行运行`ant release`或`...

    AntTest演示工程,演示如何使用Ant编译Android工程

    学习Ant编译Android工程有助于开发者理解构建过程的底层细节,对优化构建效率、理解和调试构建问题有一定的帮助。同时,这也是一种对历史技术的回顾,对于资深开发者来说,了解和掌握不同构建工具的优缺点是十分...

    Android自动打包、签名、优化、上传ANT脚本

    其中,利用ANT脚本来实现Android项目的自动打包、签名、优化以及上传等流程是一种常见且高效的手段。本文将基于提供的文件信息,详细介绍如何使用ANT脚本完成这一系列操作。 #### 二、关键概念解析 **1. ANT ...

    使用ant构建android自动化打包实例源码

    - 签名与优化:如果需要发布,Ant还需要对APK进行签名和优化,确保其能在Android设备上安装和运行。 6. **使用博客资源** - 提供的博客地址(http://blog.csdn.net/javazejian)可能包含了更详细的步骤和示例,...

    unity3d android 使用ant打包批处理.

    标题"unity3d android 使用ant打包批处理"指的是使用Ant工具进行Unity3D Android项目的批量打包流程。这个流程旨在提高效率,尤其是在持续集成或频繁发布更新时,可以避免手动操作的繁琐和错误。 首先,你需要确保...

    App自动化之使用Ant编译项目多渠道打包[定义].pdf

    在使用Ant编译Android项目时,我们需要熟悉以下几个关键点: 1. **Android的命令行编译**:在命令行中,可以使用`adb build`或`gradle build`命令来编译项目。但在这个案例中,我们将使用最原始的Ant编译方式,而...

    android使用ant自动构建示例

    7. **优化和zipalign**:为了提高APK的性能和兼容性,可以使用ProGuard进行代码混淆和优化,然后使用zipalign工具对APK进行对齐处理,以确保内存读取效率。 8. **执行Ant脚本**:在命令行中,进入项目根目录并运行`...

    使用ant编译之签名问题1

    签名问题是使用Ant编译过程中常见的一个问题,特别是当涉及到APK文件的生成和签名时。签名的重要性在于确保应用的来源可信且版本一致。 ##### 4.1 手动签名流程 手动签名通常包括以下几个步骤: 1. **生成APK**:...

    Ant批量打包Android应用

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

    最新的Android Sdk 使用Ant多渠道批量打包的实现工程

    总结来说,Android SDK结合Ant进行多渠道批量打包是通过创建一个Ant构建脚本,遍历渠道列表,为每个渠道生成包含特定标识的APK,然后使用Android SDK的`apksigner`和`zipalign`工具进行签名和优化。这种方法虽然相对...

    Android ANT批量打包教程及所有资源文件

    本文将详细介绍如何使用ANT进行Android应用的批量打包,并涵盖如何替换渠道号,以及所需的所有资源文件。 1. **ANT工具介绍** ANT是一个基于Java的构建工具,它可以读取XML格式的构建文件(build.xml),执行编译...

Global site tag (gtag.js) - Google Analytics