android studio导入第三方依赖库遇到的问题

来源:互联网 发布:床帘 淘宝 可爱 编辑:程序博客网 时间:2024/04/25 16:24

主要是遇到了两个异常

1、

Error:Execution failed for task ':app:transformClassesWithJarMergingForHezongDebug'.

> com.android.build.api.transform.TransformException: java.util.zip.ZipException:duplicate entry: com/tencent/mm/sdk/a/a$a.class

一般出现“duplicate entry”字样的,多为jar包冲突,需要根据后面的 "com/tencent/mm/sdk/a/..."等信息,确定是哪个jar包引起了冲突(实际原因是jar包重复,即第三方依赖库包含了和当前module一样的jar包),解决冲突即可(确认一下,删除多余的就成了)。


2.

java.lang.UnsatisfiedLinkError:Couldn't load qalcodecwrapperfrom loader dalvik.system.PathClassLoader[dexPath=/data/app/com.fanxing.hezong-2.apk,libraryPath=/data/app-lib/......]: findLibrary returned null

解决jar包冲突之后,又报了这个错误,意思是说 qalcodewrapper 这个东西找不到,开始的时候,我还真不知道我的工程里面有这个东西。上网一查,发现这个应该是个.so文件,但是我的libs文件夹中(或者是/src/jniLib/armeabi文件夹)有这个文件啊,怎么会找不到。解决方法是:在libs(或者是jniLibs   看你的so文件放在哪里了)文件夹下新建一个armeabi-v7a文件夹,将armeabi里面的so文件全部复制过来。


除此之外,还遇到了一个警告

注:某些输入文件还使用或覆盖了已过时的API。

注:某些输入文件还使用了未经检查或不安全的操作。

这个警告可以无视,如果你只想让程序成功运行起来的话。一般产生这个警告的原因是引用了具有相同功能的jar包,一个比较久远,另外一个可能是新出来的。我这边是引用了okhttp-2.0.0-rc1.jar和org.apache.http.legacy.jart(asynhttpclint,历史比较早)两个jar包,而这两个都是负责联网用的第三方框架。如果你想仔细确定是哪个位置引用了过时的方法,可以在工程的build.gradle中增加如下标红的信息(记住,位置是工程的build.gradle):

allprojects {    gradle.projectsEvaluated {        tasks.withType(JavaCompile) {            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"        }    }    repositories {        jcenter()    }}
重新编译,你将会在message界面看到引用过时代码的位置

0 0