Android的 - “无法加载富:findLibrary返回null” [英] Android - 'Couldn't load Foo: findLibrary returned null'

查看:222
本文介绍了Android的 - “无法加载富:findLibrary返回null”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道已经有大约围绕堆栈溢出此错误的职位,但是从我在这里发现了SO和谷歌不与我的问题排队。

我试图运行我的应用程序,但每当一个本地函数被调用我的程序崩溃,我也得到了以下 LogCat中 ...

 九月八日至一号:15:57.448:E / AndroidRuntime(16966):致命异常:主要
9月8号至一日:15:57.448:E / AndroidRuntime(16966):java.lang.ExceptionInInitializerError
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在my.eti.commander.MainMenu.initMain(MainMenu.java:241)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在my.eti.commander.MainMenu.onCreate(MainMenu.java:81)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在android.os.Handler.dispatchMessage(Handler.java:99)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在android.os.Looper.loop(Looper.java:130)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在android.app.ActivityThread.main(ActivityThread.java:3683)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在java.lang.reflect.Method.invokeNative(本机方法)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在java.lang.reflect.Method.invoke(Method.java:507)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在dalvik.system.NativeStart.main(本机方法)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):致:java.lang.UnsatisfiedLinkError中:无法加载RelayAPI:findLibrary返回null
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在java.lang.Runtime.loadLibrary(Runtime.java:429)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在java.lang.System.loadLibrary(System.java:554)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):在my.eti.commander.RelayAPIModel $ NativeCalls< clinit>(RelayAPIModel.java:432)
9月8号至一日:15:57.448:E / AndroidRuntime(16966):15 ...更多
 

下面是我的 Android.mk 文件:

  LOCAL_PATH:= $(叫我-DIR)

包括$(CLEAR_VARS)
EXTRA_CFLAGS:= -DANDROID
LOCAL_MODULE:= RelayAPI
LOCAL_SRC_FILES:= RelayAPI.c
包括$(BUILD_EXECUTABLE)
 

下面是我的JNI文件夹的图片...只有RelayAPI将被使用,stringstuff是不使用一个额外的文件。

我储存了我所有的本地函数在一个单独的类,以便它们可以被静态调用。这是没有问题的,但因为我一直在移动起来相当多,但我决定,这将是最好的方式,我把它完成。

 公共静态类NativeCalls {

    静态{
        的System.loadLibrary(RelayAPI);
    }

    公共本地静态字节InitRelayJava();

    公共本地静态无效FreeRelayJava();
}
 

解决方案

嗯,我已经得到了顺利通过了错误。我曾问一个不同的问题最后一个月,而试图解决这个问题,这个错误就走开了。它不得不与我的环境变量PATH 设置NDK的文件夹位置。 这是深入答案的链接,更。

I know that there are already posts about this error around stack overflow, but from what I have found here on SO and on Google don't line up with my problem.

I am trying to run my application, but whenever a native function is called my program crashes, and I get the following LogCat...

08-01 09:15:57.448: E/AndroidRuntime(16966): FATAL EXCEPTION: main
08-01 09:15:57.448: E/AndroidRuntime(16966): java.lang.ExceptionInInitializerError
08-01 09:15:57.448: E/AndroidRuntime(16966):    at my.eti.commander.MainMenu.initMain(MainMenu.java:241)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at my.eti.commander.MainMenu.onCreate(MainMenu.java:81)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at android.os.Looper.loop(Looper.java:130)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at android.app.ActivityThread.main(ActivityThread.java:3683)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at java.lang.reflect.Method.invokeNative(Native Method)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at java.lang.reflect.Method.invoke(Method.java:507)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at dalvik.system.NativeStart.main(Native Method)
08-01 09:15:57.448: E/AndroidRuntime(16966): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load RelayAPI: findLibrary returned null
08-01 09:15:57.448: E/AndroidRuntime(16966):    at java.lang.Runtime.loadLibrary(Runtime.java:429)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at java.lang.System.loadLibrary(System.java:554)
08-01 09:15:57.448: E/AndroidRuntime(16966):    at my.eti.commander.RelayAPIModel$NativeCalls.<clinit>(RelayAPIModel.java:432)
08-01 09:15:57.448: E/AndroidRuntime(16966):    ... 15 more

Here is my Android.mk file:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
EXTRA_CFLAGS := -DANDROID
LOCAL_MODULE := RelayAPI
LOCAL_SRC_FILES := RelayAPI.c
include $(BUILD_EXECUTABLE)

Here is a picture of my jni folder...Only RelayAPI will be used, stringstuff is an extra file that isn't used.

I store all of my native functions in a separate class so that they can be called statically. This isn't the problem though, because I've been moving them around quite a bit but I just decided this would be the best way for me to get it done.

public static class NativeCalls {

    static {
        System.loadLibrary( "RelayAPI");
    }

    public native static byte InitRelayJava();

    public native static void FreeRelayJava();
}

解决方案

Well, I've gotten passed the error. I had asked a different question last month, and while trying to solve that, this error went away. It had to do with setting my environment PATH variable to the NDK folder location. This is a link to a more in depth answer.

这篇关于Android的 - “无法加载富:findLibrary返回null”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆