android studio导入第三方依赖库遇到的问题
2016-05-25 15:22
453 查看
主要是遇到了两个异常
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):
重新编译,你将会在message界面看到引用过时代码的位置
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界面看到引用过时代码的位置
相关文章推荐
- Android——手机内部文件存储(作业)
- Android组件TabHost实现页面中多个选项卡切换效果
- Android NDK开发Crash错误定位
- Android 调用系统通讯录
- Android Dev Intro - Binary File Read Write
- 安卓日记——下拉刷新
- android input进程(模拟按键)
- Android中四中声音设置
- android设备休眠
- android中listview的item点击切换实现效果(选择器selector)
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- Android Fragment总结
- Android 带你从源码的角度解析Scroller的滚动实现原理
- Android巧用ActionBar实现tab导航效果
- Android studio利用GsonFormat和fastjson快速解析JSON!
- Android 从相机/相册更改头像
- Android Studio怎么查看程序安全码获取SHA1值,MD5值?
- Android是什么?
- Android stdio 字体设置及快捷键
- 如何在Android源码中加入Java层系统服务。