编译过程中,.so文件被删除,不见了,运行报错 UnsatisfiedLinkError: Couldn't load anysdk

当遇到UnsatisfiedLinkError,找不到anysdk库时,可能是因为.so文件缺失。通过创建library项目引用.so动态库可以解决。首先,将Android工程设为library项目,接着在主工程中引用该library。同时要注意,在manifest.xml中声明lib工程的组件,并处理资源冲突和版本问题。确保library工程的SDK版本不超过主工程,以避免编译错误。


运行报错:java.lang.UnsatisfiedLinkError: Couldn't load anysdk: findLibrary returned null

由于游戏搭建框架的选择,这样的情况可以通过,library项目来完成这个.so动态库的引用。

转载:搭建library项目:

http://blog.sina.com.cn/s/blog_a3b9b9040101lco3.html


1、如何将一个android工程作为库工程(library project

library project是作为jar包被其它android工程使用的,首先它也是普通的android工程。然后:

1)在eclipse Package Explorer, 右键android工程选择Properties

2)选择Android,下拉右边的滚动条到最下面,选中Is Library

3)点击Apply,点击OK

这个android工程就成为了library工程。

注意:作为library工程可以引用外部jar包,但不能引用其它library工程,在library工程中不能使用aidl文件,不能引用rawassets下资源

另外当试图运行一个library工程时,eclipse将报错:

2、主工程如何引用库工程

当引用lib工程后,主工程就可以调用library工程的相关类和方法。android工程引用其它library工程步骤:

1)在Package Explorer, 右键android工程选择Properties

2)选择Android,下拉右边的滚动条到最下面

3)点击Add按钮打开lib工程选择对话框

4)从选择对话框中选择工程,点击OK

5)点击Apply按钮,点击OK按钮

3、在主工程manifest.xml文件中声明lib工程的组件

主工程manifest.xml中必须添加library工程的所有ActivityServicereceiverprovider,还要添加library工程的permissionuses-library等属性,注意引用的组件要使用完全的包名,否则将报对应的NotFoundException

4、库工程与主工程资源冲突问题

当运行有引用library工程的android工程时,android工具将会合并library工程与主工程的所有资源。如果一个资源ID将有可能在library工程之间或library工程、主工程之间都有定义,这时候优先级别高的资源ID将覆盖优先级别低的,使用资源时将使用有线级别最高的工程的资源。工程之间优先级别如何判定,请看下一条。

5、库工程之间以及主工程的资源使用上的优先级问题

上图显示一个android工程引用了四个library工程,这四个library工程和主工程之间是有优先级之分的。android主工程的优先级别最高,四个library工程科举上图排序有上到下优先级别依次降低。library工程之间也可以手动排序,选择其中一个,点击up(提高优先级)或者down(降低优先级)。

6、库工程和主工程使用不同的android platform version问题

主工程打包时,android sdk版本使用的是主工程。所以library工程使用的android sdk版本要不高于主工程的sdk版本。如果library工程sdk版本高于主工程,将不能通过编译。


11-11 18:01:46.028218 31958 31958 W System.err: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so 11-11 18:01:46.028252 31958 31958 W System.err: SoSource 0: com.facebook.soloader.ApkSoSource[root = /data/data/tech.shouxun.sod/lib-main flags = 1] 11-11 18:01:46.028263 31958 31958 W System.err: SoSource 1: com.facebook.soloader.DirectorySoSource[root = /data/app/~~0GxqC7w5e3R7SKHRvMG_Dg==/tech.shouxun.sod-4XC6Qdr8XyV2QDyuuoLXxg==/lib/arm flags = 0] 11-11 18:01:46.028270 31958 31958 W System.err: SoSource 2: com.facebook.soloader.DirectorySoSource[root = /vendor/lib flags = 2] 11-11 18:01:46.028279 31958 31958 W System.err: SoSource 3: com.facebook.soloader.DirectorySoSource[root = /system/lib flags = 2] 11-11 18:01:46.028287 31958 31958 W System.err: Native lib dir: /data/app/~~0GxqC7w5e3R7SKHRvMG_Dg==/tech.shouxun.sod-4XC6Qdr8XyV2QDyuuoLXxg==/lib/arm 11-11 18:01:46.028296 31958 31958 W System.err: result: 0 11-11 18:01:46.029427 31958 31958 W System.err: at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:918) 11-11 18:01:46.029492 31958 31958 W System.err: at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:740) 11-11 18:01:46.029527 31958 31958 W System.err: at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:654) 11-11 18:01:46.029563 31958 31958 W System.err: at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:634) 11-11 18:01:46.029591 31958 31958 W System.err: at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:582) 11-11 18:01:46.029620 31958 31958 W System.err: at com.facebook.hermes.reactexecutor.HermesExecutor.loadLibrary(HermesExecutor.java:25) 11-11 18:01:46.029653 31958 31958 W System.err: at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:19) 11-11 18:01:46.029683 31958 31958 W System.err: at com.facebook.react.ReactInstanceManagerBuilder.getDefaultJSExecutorFactory(ReactInstanceManagerBuilder.java:370) 11-11 18:01:46.029714 31958 31958 W System.err: at com.facebook.react.ReactInstanceManagerBuilder.build(ReactInstanceManagerBuilder.java:319) 11-11 18:01:46.029744 31958 31958 W System.err: at com.facebook.react.ReactNativeHost.createReactInstanceManager(ReactNativeHost.java:95) 11-11 18:01:46.029777 31958 31958 W System.err: at com.facebook.react.ReactNativeHost.getReactInstanceManager(ReactNativeHost.java:42) 11-11 18:01:46.029804 31958 31958 W System.err: at tech.shouxun.sod.MainApplication.onCreate(MainApplication.java:53) 11-11 18:01:46.029835 31958 31958 W System.err: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1401) 11-11 18:01:46.029874 31958 31958 W System.err: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:8633) 11-11 18:01:46.029905 31958 31958 W System.err: at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) 11-11 18:01:46.029934 31958 31958 W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2798) 11-11 18:01:46.029984 31958 31958 W System.err: at android.os.Handler.dispatchMessage(Handler.java:115) 11-11 18:01:46.030013 31958 31958 W System.err: at android.os.Looper.loopOnce(Looper.java:298) 11-11 18:01:46.030040 31958 31958 W System.err: at android.os.Looper.loop(Looper.java:408) 11-11 18:01:46.030068 31958 31958 W System.err: at android.app.ActivityThread.main(ActivityThread.java:9964) 11-11 18:01:46.030119 31958 31958 W System.err: at java.lang.reflect.Method.invoke(Native Method) 11-11 18:01:46.030168 31958 31958 W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:613) 11-11 18:01:46.030204 31958 31958 W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1074) 11-11 18:01:46.030686 31958 31958 D AndroidRuntime: Shutting down VM
最新发布
11-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值