安卓SDK应用加载库失败

 2023-01-20    267  

问题描述

嘿.我收到的错误消息与这个人相同:
” Android NDK应用程序无法加载库”
而且我试图在数小时内在我的情况下转移这些答案,但这无效.
有人能帮我吗?
这是这里的这个开源项目,我想尝试将其运行在模拟器上.
https://github.com/itskewpie/freerdppie/freerdp-android

freerdpactivity.java

安卓SDK应用加载库失败

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)
...

错误消息:

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

推荐答案

尝试此开源项目:

www.freerdp.com

其他推荐答案

您是否像GitHub项目中完全复制Android.mk?您是否也复制了相关库?

#
    ## libfreerdp.so
    #
    include $(CLEAR_VARS)
    LOCAL_MODULE := freerdp
    LOCAL_SRC_FILES := freerdp.c
    LOCAL_ARM_MODE := arm
    NDK_TOOLCHAIN_ROOT=/opt/android-toolchain
    LOCAL_STATIC_LIBRARIES := freerdp-utils
    LOCAL_STATIC_LIBRARIES += freerdp-locale
    LOCAL_STATIC_LIBRARIES += freerdp-crypto
    LOCAL_STATIC_LIBRARIES += freerdp-sspi
    LOCAL_STATIC_LIBRARIES += freerdp-codec
    LOCAL_STATIC_LIBRARIES += freerdp-core
    LOCAL_STATIC_LIBRARIES += freerdp-cache
    LOCAL_STATIC_LIBRARIES += freerdp-gdi
    LOCAL_STATIC_LIBRARIES += freerdp-rail
    LOCAL_STATIC_LIBRARIES += freerdp-channels
    LOCAL_STATIC_LIBRARIES += rdpsnd_alsa
    LOCAL_STATIC_LIBRARIES += cliprdr
    LOCAL_STATIC_LIBRARIES += rdpsnd
    LOCAL_STATIC_LIBRARIES += freerdp_android

在爪哇一侧,看起来您也应该按照适当的顺序加载其他库:

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");
}

以上所述是小编给大家介绍的安卓SDK应用加载库失败,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26103.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。