【问题标题】:Getting "findLibrary returned null" error in Android-NDK project在 Android-NDK 项目中出现“findLibrary returned null”错误
【发布时间】:2014-06-06 10:17:25
【问题描述】:

我放弃解决我的Android-NDK 项目中的findLibrary returned null 错误。这是项目结构:

|_JNI
  |_libsample.so     (pre-compiled)
  |_libsample2.so     (pre-compiled)
  |_Application.mk
  |_Android.mk

|_libs
  |_X86
    |_libsample.so
    |_libsample2.so

Android.mk的来源:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := libsample
LOCAL_SRC_FILES := libsample.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := libsample2
LOCAL_SRC_FILES := libsample2.so
include $(PREBUILT_SHARED_LIBRARY)

Application.mk的来源:

APP_ABI := x86

bashrc 文件中的环境变量已正确设置。 ndk path 在 Eclipse 中的位置是正确的。

每当我尝试加载 Shared_library 时,都会出现以下错误:

06-06 09:33:36.088: E/AndroidRuntime(1100): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load fona from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.fona-1.apk,libraryPath=/data/app-lib/com.example.fona-1]: findLibrary returned null

MainActivity.java中加载共享库的来源:

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    System.loadLibrary("libsample");
            ..
            ....
            .....

我在这里做错了什么?我在这里发现了几个类似的问题,但尝试了一切。什么都没有工作:(

编辑

MainActivity.java中加载共享库的来源:

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    System.loadLibrary("sample");
            ..
            ....
            .....

【问题讨论】:

    标签: android eclipse android-ndk shared-libraries


    【解决方案1】:

    你应该加载“sample”而不是 libsample...

    我也不确定,您应该使用 x86 作为架构,除非这是针对 android-x86(例如在 virutablbox 上...)

    此外,您可以检查您的库是否包含在您的 apk 中!

    【讨论】:

    • @AmitPal - 然后不要发布与您测试的不同的代码。 此答案指出了您发布的代码中的一个致命错误。如果该代码不是您正在测试的代码,那么您需要更正您的帖子。
    • @ChrisStratton 谁说代码不同?请检查尼古拉斯的回答和我的评论。
    • 这个答案指出了一个问题,指出您声称已经尝试过的代码有问题。如果您的问题与代码的当前状态不匹配,您将无法获得有意义的帮助。
    【解决方案2】:

    确保您生成的库已安装在您的 apk 中。为此,您右键单击您的 Eclipse 项目名称,然后进入 Build Path - Configure Build Path,在左侧菜单中,选择 Java Build Path,然后单击右侧面板上的 Order and Export 选项卡,选中前面的复选框您的库名称并单击确定,然后清理、重建并运行您的项目。 正如 Nicolas 指出的那样,加载 Sample 而不是 libsample。创建 AVD 时选择 x86 作为 TARGET。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多