0

我正在尝试运行一个应用程序,但我得到了一件奇怪的事情:该应用程序使用了一个库项目,并且我以这种方式将它加载到 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

为什么?

4

3 回答 3

0

在某些情况下,由于依赖于其他应用程序(即 Play Store 应用程序和其他一些原因),某些应用程序(使用 Play 商店库)只能在不在谷歌默认 android 模拟器上的设备上运行。

所以尝试使用新的genymotion android 模拟器,它的功能比默认模拟器少。

于 2013-09-03T13:39:11.937 回答
0

首先是

System.loadLibrary("freerdp_android");

而且,正如Esparver 所写,回答了一个类似的问题:

在 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");
}
于 2013-08-27T20:31:22.353 回答
0

APP_ABI如果您使用GradleApplication.mk的.abiFiltersexternalNativeBuild

通常你需要有x86x86_64在你的列表中。

请参阅NDK 指南

于 2020-10-18T13:31:53.050 回答