android模拟器找不到库

时间:2013-08-27 20:22:41

标签: android exception android-emulator

我正在尝试运行一个应用程序,我得到一个奇怪的事情: 该应用程序使用一个库项目,我已经以这种方式将它加载到MainActivity中:

static{    
 System.loadLibrary("freerdp-android");
 }

现在,如果我使用智能手机启动应用程序,则没有任何问题,而如果我使用模拟器启动它,我会得到这个:

08-27 20:10:51.637: E/AndroidRuntime(388): FATAL EXCEPTION: main
08-27 20:10:51.637: E/AndroidRuntime(388): java.lang.ExceptionInInitializerError
08-27 20:10:51.637: E/AndroidRuntime(388):  at java.lang.Class.newInstanceImpl(Native Method)
08-27 20:10:51.637: E/AndroidRuntime(388):  at java.lang.Class.newInstance(Class.java:1424)
08-27 20:10:51.637: E/AndroidRuntime(388):  at android.app.Instrumentation.newActivity(Instrumentation.java:1022)
...
08-27 20:10:51.637: E/AndroidRuntime(388): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load freerdp-android: findLibrary returned null
08-27 20:10:51.637: E/AndroidRuntime(388):  at java.lang.Runtime.loadLibrary(Runtime.java:425)
08-27 20:10:51.637: E/AndroidRuntime(388):  at java.lang.System.loadLibrary(System.java:554)
08-27 20:10:51.637: E/AndroidRuntime(388):  ... 15 more

为什么?

3 个答案:

答案 0 :(得分:0)

首先是

System.loadLibrary("freerdp_android");

并且,正如Esparver wrote,回答类似的问题:

  

在Java方面,看起来你应该加载其他库   好吧,按照适当的顺序:

static {
    System.loadLibrary("freerdp-utils");
    System.loadLibrary("freerdp-codec");
    System.loadLibrary("freerdp-gdi");
    System.loadLibrary("freerdp-core");
    System.loadLibrary("freerdp-rail");
    System.loadLibrary("freerdp-chche");
    System.loadLibrary("freerdp-crypto");
    System.loadLibrary("freerdp-sspi");
    System.loadLibrary("freerdp-channels");
    System.loadLibrary("rdpsnd_alsa");
    System.loadLibrary("cliprdr");
    System.loadLibrary("rdpsnd");
    System.loadLibrary("freerdp_android");
    System.loadLibrary("freerdp");
}

答案 1 :(得分:0)

有些应用程序(使用Play商店库)只能在谷歌默认的Android模拟器上运行,因为依赖于其他应用程序,即播放商店应用程序和其他一些原因。

因此尝试使用新的genymotion android模拟器,它比默认模拟器具有更多功能。

答案 2 :(得分:0)

如果使用Gradle的APP_ABI,则必须将仿真设备ABI添加到Application.mk文件中的abiFilters变量或Gradle中的externalNativeBuild块中。

通常,您的列表中需要包含x86x86_64

请参见NDK Guide