eclispse项目导入Android项目 java.lang.UnsatisfiedLinkError: Native method not found:
2016-04-28 23:00
357 查看
下面几篇博客将会讲到,eclipse项目导入Android项目出现的一些问题,及解决方案。
首先,如何将eclipse项目转换成Android 项目不再多说,需要在eclipse中“Gradle”一下,并且还要将所依赖的库文件都“勾选上”。
那么问题来了,android studio的so库导入方法和eclipse是不一致的。而发生一下报错:
Process: hkhz.zhhb, PID: 28716
java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I
at com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create(Native Method)
at com.baidu.platform.comjni.map.commonmemcache.a.a(Unknown Source)
at com.baidu.platform.comapi.c.c.b(Unknown Source)
at com.baidu.mapapi.a.c(Unknown Source)
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
at hkhz.zhhb.BaiduMap.onCreate(BaiduMap.java:61)
at android.app.Activity.performCreate(Activity.java:5277)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at com.qihoo360.mobilesafe.loader.b.callActivityOnCreate(SourceFile:81)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2415)
at android.app.ActivityThread.access$800(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1336)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5353)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646)
at dalvik.system.NativeStart.main(Native Method)
解决方法不只一种:
这里只提供亲测可行的方案:
第一种:
出现以上提示是因为JNI找不到方法。
崩溃的原因是:android studio的so库导入方法和eclipse是不一致的,eclipse只要直接把所有的so丢到libs里去。但是androidstudio是不行的。
弄一个文件夹so/armeabi,把所有的so全部放进去。结构就是so/armeabi/a.so,b.so,c.so
然后压缩这个文件夹成为so.jar,你应该知道的jar其实就是zip格式。
然后把so.jar放到libs目录下。sync gradle,然后build就行了。
还不可以试试第二种方案:
很简单,在用AndroidStudio的话 .so 文件要放在src/main/jniLibs/[b]armeabi-v7a下面,然后把那个so文件重新复制一份进去.......
[/b]
补充:当导入项目时,可能会出现“拷斤拷斤拷斤拷斤拷斤”,多数是由于项目中的文件编码问题,根据提示找到文件使用EditPlus更改编码格式“UTF-8”就ok了.....
总结:写博客要认真......被自己绊了一跤!!!
首先,如何将eclipse项目转换成Android 项目不再多说,需要在eclipse中“Gradle”一下,并且还要将所依赖的库文件都“勾选上”。
那么问题来了,android studio的so库导入方法和eclipse是不一致的。而发生一下报错:
Process: hkhz.zhhb, PID: 28716
java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I
at com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create(Native Method)
at com.baidu.platform.comjni.map.commonmemcache.a.a(Unknown Source)
at com.baidu.platform.comapi.c.c.b(Unknown Source)
at com.baidu.mapapi.a.c(Unknown Source)
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
at hkhz.zhhb.BaiduMap.onCreate(BaiduMap.java:61)
at android.app.Activity.performCreate(Activity.java:5277)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at com.qihoo360.mobilesafe.loader.b.callActivityOnCreate(SourceFile:81)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2415)
at android.app.ActivityThread.access$800(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1336)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5353)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646)
at dalvik.system.NativeStart.main(Native Method)
解决方法不只一种:
这里只提供亲测可行的方案:
第一种:
出现以上提示是因为JNI找不到方法。
崩溃的原因是:android studio的so库导入方法和eclipse是不一致的,eclipse只要直接把所有的so丢到libs里去。但是androidstudio是不行的。
弄一个文件夹so/armeabi,把所有的so全部放进去。结构就是so/armeabi/a.so,b.so,c.so
然后压缩这个文件夹成为so.jar,你应该知道的jar其实就是zip格式。
然后把so.jar放到libs目录下。sync gradle,然后build就行了。
还不可以试试第二种方案:
很简单,在用AndroidStudio的话 .so 文件要放在src/main/jniLibs/[b]armeabi-v7a下面,然后把那个so文件重新复制一份进去.......
[/b]
补充:当导入项目时,可能会出现“拷斤拷斤拷斤拷斤拷斤”,多数是由于项目中的文件编码问题,根据提示找到文件使用EditPlus更改编码格式“UTF-8”就ok了.....
总结:写博客要认真......被自己绊了一跤!!!
相关文章推荐
- 解决Mysql服务器启动时报错问题的方法
- android @override 报错解决方案
- 编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
- flash 报错捕获(Catch All Exception in Flash)
- Eclipse引入jquery报错如何解决
- javascript在myeclipse中报错的解决方法
- Android启动模拟器报错解决方法
- 基于jni调用时,jvm报错问题的深入分析
- innerHTML在IE中报错解决方案
- mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法
- mysql登录报错提示:ERROR 1045 (28000)的解决方法
- thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
- PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
- 解决eclipse启动时报错Failed to create the Java Virtural Machine.问题的方法
- Android Studio注释模板介绍
- Android开发中Eclipse报错及对应处理方法总结
- php5.4传引用时报错问题分析
- 解决MyEclipse10.7部署报错抛空指针异常问题的方法
- 为Android Studio编写自定义Gradle插件的教程
- 解决Android Studio更新错误