最近在做项目的时候遇到如下的需求:
我们为A方,需要引用B方的jar包。我们开发sdk,之后将sdk以lib工程的形式提供给C方使用。
出现问题如下:
1、 Unable to execute dex: Multiple dex files define Lcn/sdk/Manifest$permission;
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcn/kuwo/sms_pay_sdk/Manifest$permission;
之后便在网上查找问题的解决方法(查找前并没有仔细看log的真正含义)
进过查找找到了一个方法,可以正确运行了。找到的方法如下:
在C工程中java build path ----》 order and export 将android private libraries前面的对号取消
之后便运行C工程,此时出现一个问题 ,noclassfound
此时在又查找资料
查到找如下:android Dependency里面存放的是直接支持的类库,比如导入的第三方支持的源码生成的jar包,而private Libraries里面存放的是android私有的库(libs目录下的)还有第三方支持库中的lib
没用找到类就是jar包没用正确引入,后来找到资料java build path中的order and export要选中private libraries,但是这样的话就回到以前了。这要怎么办呢,只有再找资料了,
http://www.mythroad.net/2013/11/05/%E5%B7%B2%E8%A7%A3%E5%86%B3unable-to-execute-dex-multiple-dex-files-define/
这时候又回到前面,看输出的log,应该是permission重复了,之后把A工程中的权限全部删除,之后就可以了
android Dependency里面存放的是直接支持的类库,比如导入的第三方支持的源码生成的jar包,而private Libraries里面存放的是android私有的库(libs目录下的)还有第三方支持库中的lib
以前自己总结了一个将自己的工程作为lib工程被引用的方法
现在又找打一种方式(当然大同小异了)
需求描述和实现:
A工程要要作为Jar被引用,在A工程开发完毕后选为 is library。之后建立B工程B工程的包名和A要一样。将B中的src删除,将A中除了src外的其他都拷贝到B中,A中引用的jar和A作为lib生成的jar都要放到B的libs目录下。之后就可以引用B了。