开发中会遇到,引入一个jar包,只想编译的时候能通过,打包APK时不需要把该jar一起打包进去,因为可能在别的地方也有这个jar包,比如在插件开发过程中。宿主工程host里面使用了这个jar包,插件工程里面也需要用到这个jar包,而插件最终需要在宿主中使用,那么如果插件打包apk的时候把这个jar包打进去了,那么宿主运行插件apk的时候就会在内存中同时存在重复的类的情况,这样就会发生类链接错误。
所以在插件打包成apk的时候就去掉了相同的jar包。
在eclipse中取消jar打包:
只需要在插件工程中创建一个目录,比如external-jars,然后把dl-lib.jar和support-v4.jar放进去,同时在.classpath中追加如下两句即可:
<classpathentry kind="lib" path="external-jars/dl-lib.jar"/>
<classpathentry kind="lib" path="external-jars/android-support-v4.jar"/>
这样,编译的时候就能够正常进行,但是打包的时候,就不会把上面两个jar包打入到插件apk中。
在android studio中打包:
原文地址:http://blog.csdn.net/wangjia55/article/details/31750419
1. 在Android studio 下打开Prject Structure ,选中自己项目中的Module ,选择“Dependencies” 栏目,就可以看到项目中所有依赖的jar包。
2. 在jar包后面有一个Scope的选项,将默认的“Compile” 选择为 “Provided” 即可,
3.这个时候你会发现项目中的build.gradle 文件,也会变为: provided files('libs/osgi1.6.9.jar') 。
注意:如果build.gradle 下面默认的编译jar包的指令没有注释的,请注释掉 ( compile fileTree(dir: 'libs', include: ['*.jar']))
上图: