Android SDK中的应用程序加载失败库 [英] Android SDK app failed to load library

查看:475
本文介绍了Android SDK中的应用程序加载失败库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Heyho。我已经得到了相同的错误消息,因为这家伙: <一href="http://stackoverflow.com/questions/12022990/android-ndk-app-failed-to-load-library/15249091#15249091">Android NDK的应用程序加载失败库 而且我想在这里对我的情况了几个小时,现在转移这些问题的答案,但它不工作。 有人可以帮我吗? 这是该开源项目在这里,我想设法得到它在我的模拟器上运行。 https://github.com/itskewpie/FreeRDP-android

FreeRDPActivity.java

 包net.itskewpie.freerdp;

进口android.app.Activity;
进口android.os.Bundle;

公共类FreeRDPActivity延伸活动{

    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
    }
    静态{
        的System.loadLibrary(freerdp);
    }
}
 

freerdp.c

 的#include&LT; jni.h&GT;
#包括&LT; stdio.h中&GT;
#包括&LT; freerdp / freerdp.h&GT;

的jstring Java_net_itskewpie_freerdp_FreeRDPActivity_test(JNIEnv的* ENV,jobject THIZ)
{
    android_main();
    回报(* ENV) - &GT; NewStringUTF(ENV,HELLO);
}
 

Android.mk

  LOCAL_PATH:= $(叫我-DIR)
包括$(CLEAR_VARS)

MY_LIBS_PATH = freerdp-1.0-未婚夫/库/ armeabi,V7A
LOCAL_MODULE:= freerdp-utils的
LOCAL_SRC_FILES:= $(MY_LIBS_PATH)/libfreerdp-utils.a
LOCAL_EXPORT_C_INCLUDES:= $(LOCAL_PATH)/freerdp-1.0-nevo/include
包括$(preBUILT_STATIC_LIBRARY)
...
 

错误消息:

 致命异常:主要
java.lang.ExceptionInInitializerError
java.lang.Class.newInstanceImpl(本机方法)
java.lang.Class.newInstance(Class.java:1319)
android.app.Instrumentation.newActivity(Instrumentation.java:1054)
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
android.app.ActivityThread.access $ 600(ActivityThread.java:141)
android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:5041)
java.lang.reflect.Method.invokeNative(本机方法)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
dalvik.system.NativeStart.main(本机方法)
java.lang.UnsatisfiedLinkError中:无法从加载器加载freerdp dalvik.system.PathClassLoader[dexPath=/data/app/net.itskewpie.freerdp-2.apk,libraryPath=/data/app-lib/net.itskewpie.freerdp-2]: findLibrary返回null
java.lang.Runtime.loadLibrary(Runtime.java:365)
java.lang.System.loadLibrary(System.java:535)
net.itskewpie.freerdp.FreeRDPActivity&LT; clinit&GT;(FreeRDPActivity.java:16)
... 15更多
 

解决方案

试试这个开源项目:

www.freerdp.com

Heyho. I've got the same error message as this guy: "Android NDK app failed to load library" and i'm trying to transfer these answers here on my situation for hours now, but it doesnt work. Can someone help me? It's this opensource project here, which i want to try to get it run on my emulator. https://github.com/itskewpie/FreeRDP-android

FreeRDPActivity.java

package net.itskewpie.freerdp;

import android.app.Activity;
import android.os.Bundle;

public class FreeRDPActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    } 
    static {       
        System.loadLibrary("freerdp");
    }  
}

freerdp.c

#include <jni.h>
#include <stdio.h>
#include <freerdp/freerdp.h>

jstring Java_net_itskewpie_freerdp_FreeRDPActivity_test(JNIEnv* env, jobject thiz )
{
    android_main();      
    return (*env)->NewStringUTF(env, "HELLO");
}

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

MY_LIBS_PATH=freerdp-1.0-nevo/libs/armeabi-v7a
LOCAL_MODULE    := freerdp-utils
LOCAL_SRC_FILES := $(MY_LIBS_PATH)/libfreerdp-utils.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/freerdp-1.0-nevo/include
include $(PREBUILT_STATIC_LIBRARY)
...

Error Message:

FATAL EXCEPTION: main
java.lang.ExceptionInInitializerError
java.lang.Class.newInstanceImpl(Native Method)
java.lang.Class.newInstance(Class.java:1319)
android.app.Instrumentation.newActivity(Instrumentation.java:1054)
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
android.app.ActivityThread.access$600(ActivityThread.java:141)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:5041)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
dalvik.system.NativeStart.main(Native Method)
java.lang.UnsatisfiedLinkError: Couldn't load freerdp from loader dalvik.system.PathClassLoader[dexPath=/data/app/net.itskewpie.freerdp-2.apk,libraryPath=/data/app-lib/net.itskewpie.freerdp-2]: findLibrary returned null
java.lang.Runtime.loadLibrary(Runtime.java:365)
java.lang.System.loadLibrary(System.java:535)
net.itskewpie.freerdp.FreeRDPActivity.<clinit>(FreeRDPActivity.java:16)
... 15 more

解决方案

try out this open source project:

www.freerdp.com

这篇关于Android SDK中的应用程序加载失败库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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