工作中维护一个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使用详细总结,讲解的很细,值得收藏夹
1 Ant是什么? 2下载、安装Ant 3编写build.xml Ant 命令行参考 Apache Ant 是一个基于 Java的生成工具。 生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像...
里面详细说明什么是Ant,以及Ant在实战中详细配置内容,精简、实用!
ant入门及技术总结
包含文档和项目实例。 用Ant实现Java项目的自动构建和部署。 JAVA_Ant详细介绍与应用。...2.使用Ant的java任务运行Java程序 3.使用Ant的jar任务生成jar文件 4.使用Ant的war任务打包J2EE Web项目 五.总结
本文档是通过大量的总结,编写的ppt,通俗易懂
作为apache下的一个编译工具,可以用来编译一些较大的java web项目,简单实用方便!
ANT基本命令的总结,介绍了什么是ANT,ANT的配置,以及ant的常用命令
NULL 博文链接:https://liudaoru.iteye.com/blog/265705
1.10 Ant使用入门 1.11 Maven Ant之间的比较 1.12 详解MANIFEST.MF文件 1.13 Maven入门--概念与实例 1.14 Subversion 1.15 jar war ear区别 1.16 如何在Eclipse中调试JBoss应用 1.17 JBoss 5.0 安装与配置...
Ant Design 源自蚂蚁金服...Ant的设计师和前端工程师经过大量的项目实践和总结,沉淀出一套企业级的交互视觉规范,统一中后台项目的前端 UI 设计,屏蔽各种不必要的设计差异和前端实现成本,解放设计和前端开发资源。
NULL 博文链接:https://yushan.iteye.com/blog/389436
ant总结,让你很容易了解ant技术sssssssssssssssssssssss
Ant可以代替使用javac、java和jar等命令来执行java操作,从而达到轻松的构建和部署Java工程的目的。下面来看几个知识点。 1. 利用Ant的javac任务来编译java程序 Ant的javac任务用于实现编译Java程序的功能。下面来...
ANT学习资料,我在学习ANT查找的一些资料,进行汇总
本文档主要是本人对Vue和Ant Design Vue学习后总结的经验,方便其它同事能够通过该文档对该技术有所了解 , 同时方便产品团队对前后分离的技术有增加知识储备。 目录如下 2.Vue经验分享 2.1 Vue介绍 2.2 Vue的MVVM...
该资源内含几十个资源是我多年收集总结所得,涵盖java的方方面面,有struts,ant使用、cvs、eclipse使用,设计模式,分页大全、配置说明、正则表达式等等内容,希望能帮助到大家
本文档中的内容多是从实际开发中总结出来的。 ANT 最佳实践 http://www.ossez.com/forum.php?mod=viewthread&tid=13460&fromuid=426
本人自学ant时的总结,对于初学者很有用。里面有ant调用运行bat的例子哟!!!
本书不但从 Ant 技术上进行了详细、本质的讲解,同时结合作者经历过的各种项目经验,对项目结构控制也进行了总结性、归纳性的描述。对一个程序员从方法编写者升级到整个项目构建者,有非常多的帮助。最后,本书还是...