工作中维护一个android项目,之前使用bat脚本打包。最近机器换硬盘后使用新的sdk,发现原有bat脚本无法正常打包,发现原因如下:
1、新版本sdk中,dx.bat路径发生变化,apkbuilder.bat脚本被删除
2、原有的bat脚本不规范,比如使用rm删除文件(未安装cygwin时rm命令不能使用)
另外,bat脚本还存在其他一些问题:比如,打包时不能区分debug版本和release版本。所以决定换成ant打包。使用ant时遇到几个问题,总结记录下来,备忘。
1、duplicate class definitions
混淆时出现重复的类定义错误。项目依赖两个jar包(不同版本的com.android.location.provider.jar),其中有几个类的完全限定名相同。但为了保证项目可以编译通过,必须同时使用这两个jar。
解决办法:com.android.location.provider.jar为android系统库,我们只保证build path中包含这两个jar包即可,但要注意打包时不要导出这些jar中的类,避免proguard混淆出错。一般而言, android项目中libs目录下的jar包会ant自动添加到build path并导出。 所以修改如下:
1)将这两个jar包放到新建一个lib目录中,避免被自动export
2)在ant中添加一个property,将这两个jar包添加到classpath
<property name="java.compiler.classpath" value="lib/classes-full-debug1.jar;lib/location.jar;lib/location1.jar" />
2、unresolved reference
找不到类定义。第三方库中的某些类引用了一些其他类,proguard找不到这些类,认为是错误。
对相应的类使下dontwarn指令, 取消proguard的警告, ant打包通过
-dontwarn com.android.location.** -dontwarn com.android.internal.location.**
3、不能自动签名
新建一个ant.properties文件指定keystore的名字和密码。文件内容如下
key.store=xx key.store.password=xx key.alias=xx key.alias.password=xxx
4、提示无法正确 import build.xml
一般是sdk路径不正确引起的,修改local.properites中的sdk.dir,指定正确的路径
5、提示target不正确
一般是缺少对应version的sdk, 修改 project.properties中的target,指定正确的target
6、javac报错,提示字符编码引起的问题
java源码文件字符编码与javac使用的字符编码不匹配引起的问题,使用以下property,保持字符编码一致即可
<property name="java.compilerargs" value="-encoding <正确的字符编码>" />
或者在local.properties文件中增加 java.compilerargs=-encoding <正确的字符编码>
java.compilerargs=-encoding <正确的字符编码>
7、未开启混淆
一般在 project.properties中指定proguard.config=proguard.cfg即可
相关推荐
"Ant十五大最佳实践.doc"则可能总结了经验丰富的开发者在使用Ant时总结的一些技巧和建议,比如合理组织构建文件,使用变量和属性来减少重复,保持构建文件的简洁性,以及利用Ant的条件和循环结构来优化构建过程。...
总结来说,Ant是一个强大的Java构建工具,通过XML配置文件实现构建过程的自动化。了解并熟练掌握Ant的使用,能极大地提升Java开发者的项目管理和构建效率。这份“Ant使用指南”将深入浅出地讲解Ant的各种特性和用法...
"Ant ant ant antant ant ant antant ant ant ant" 这个描述可能是在强调Ant在项目构建过程中的重复性和不可或缺性,暗示着它在工程中的频繁使用和核心地位。 Ant的设计理念是“一切都是XML”,它通过XML格式的构建...
### ant使用手册ANT使用指南 #### 一、引言 Ant是一种流行的开源构建工具,用于自动化软件项目的构建过程。尤其适用于Java项目,但它也可以用于非Java项目。由于Ant的灵活性和易用性,它在Java开发者社区中迅速...
### ANT使用指南详解 #### 一、导言 Apache Ant 是一款开源的Java构建工具,类似于传统的Unix Make工具。Ant采用XML格式来定义构建过程,提供了丰富的任务(task)集合,适用于自动化编译、测试和部署Java应用程序。...
Apache Ant 编译命令总结 Apache Ant 是一个基于 Java 的生成工具,主要用来将源代码和其他输入文件转换为可执行文件的形式,或者转换为可安装的产品映像形式。Ant 在软件开发中扮演着重要角色,确保在每次生成期间...
总结,Ant作为Java开发中的构建工具,其强大在于灵活性和可扩展性。通过理解并掌握Ant的基本概念和常用任务,开发者可以自定义构建流程,提高开发效率。无论是小型项目还是大型企业级应用,Ant都能提供有力的支持。...
《ANT使用详细总结与心得》 ANT,全称Apache Ant,是一个Java库和命令行工具,其任务是驱动构建过程。它的设计目标是推动软件项目的构建过程自动化,尤其是在Java环境中。ANT以其灵活性和可扩展性著称,通过XML格式...
总结,Ant是Java开发者的重要工具,掌握Ant的使用能够提高开发效率,简化项目管理。通过了解Ant的基本结构、任务和属性,初学者可以快速上手,并根据项目的具体需求进行定制。同时,理解Ant与其他构建工具(如Maven...
总结来说,Ant结合JavaScript脚本提供了一种强大的方式来定制和扩展构建过程,尤其适合处理项目中的特殊需求。通过熟练掌握这一技巧,开发者能够更有效地管理和自动化他们的Java项目,提高开发效率,减少手动操作...
### Ant详细配置总结 #### 一、Ant简介与特点 Ant是Apache旗下的一款强大的构建工具,主要用于Java项目的自动化构建过程,如编译、测试、打包、部署等操作。它的核心优势在于其高度的可定制性和灵活性,使得开发者...
总结起来,Apache Ant 1.6.5是一个为Java项目提供构建功能的工具,尤其适用于Windows平台。通过解压缩此ZIP文件并配置环境变量,用户可以利用Ant执行各种项目构建任务。详细的使用方法和特性可通过提供的readme.txt...
总结一下,Ant是一个强大的Java项目构建工具,其核心在于XML格式的构建文件,它定义了项目的构建步骤和依赖。这个最简单的实例展示了如何用Ant编译源代码、创建JAR文件以及清理构建产物。掌握Ant的基本使用,能帮助...
在Java开发过程中,测试是...总结,集成JUnit和JaCoCo到Ant项目中,可以有效地进行自动化测试并获取代码覆盖率报告,这对于持续集成和代码质量管理至关重要。正确配置和使用这些工具,有助于提升项目的质量和可维护性。
这个任务可能使用Ant的内置`<echoproperties>`任务显示当前项目的属性,或者自定义脚本输出帮助文本。 3. `jar`任务:Ant提供了强大的打包功能,`<jar>`任务就是其中之一。它用于将编译后的类文件打包成JAR(Java ...
### Apache Ant 学习与总结 #### 一、Ant 是什么? Apache Ant 是一款基于 Java 的构建工具,用于将源代码和其他输入文件转换为可执行文件或安装包等形式。随着软件项目的复杂度增加,确保每次构建都能使用相同的...