android sdk R17后混淆第三方jars问题解决


自从google升级了sdk到R17或者以后。proguard规则修改了,使用第三方jar导出后会有各种问题。

  未配置是导出包会提示-libraryjars  然后加入jar,试了无数次,导出包就减小了,反编译后发现jar文件并未被打包进去。

一次添加jar,习惯还是新建lib目录,当然可能存在第三方project,不过没有什么影响。

-injars  /lib/zxing_core.jar
-libraryjars /lib/zxing_core.jar


在配置文件中添加 -injars 然后加入包在打包就行了。

但是这样个以前的sdk可能不兼容,所以在项目下最好有两套proguard文件。不同的sdk选择不同的配置文件就好了。


R18一下导出包会报错,不知道是不是JDK的问题,我的是jdk7 64位。


突然发现release模式没问题了,可是发现了一个严重的问题,debug模式打包第三方jar无法打进去

找到解决方案了

Build path,
java build path,选择libraries
在右边的按钮中点击“Add Library”
选择“User library”,点击“下一步”
点击“User librarys”按钮
在出现的界面中点击“New..”按钮
在弹出的界面中随便起一个名字,点击“确定”
点击“Add jars”按钮选择第三方jar包,点击“确定”完成。

后面的步骤很重要,如果不进行后面的操作。在Eclipse里显示编译通过,不会有错误,但在模拟器或真机上运行的时候可能就会出现java.lang.noclassdeffounderror之类的错误:

1、在Android项目根目录下新建一个libs文件夹;

2、把你需要的导入的第三方Jar包复制进这个目录;

3、在libs目录上点右键,选Bulid path  –> Use as source folder。

这样就搞定了。很简单。

,其实新版的sdk还是不错的,有问题就要解决问题,毕竟新的肯定有好东西,虽然有些东西抛弃了,总不能一直用旧版本,研究了好久,总算好了现在。



纠正一下:发现debug模式下会有jar包,release也会有jar包,做jni的都知道有个libs文件夹



发现这个就好了,上面的可以忽略不看了,现在就是直接把jar拷贝到libs目录下就好了,混淆文件也不需要-injars了,至于为什么放在,libs文件夹可以搞定,可以认为libs是系统文件夹,编译的时候sdk会扫描这个文件夹




你可能感兴趣的:(eclipse,android,jar,Build,Path,library)