ant使用问题总结

工作中维护一个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即可

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值