使用android ndk从.so文件调用本机函数

使用android ndk从.so文件调用本机函数,android,android-ndk,Android,Android Ndk,我找到了如何利用NDK在Android中链接和使用c/c++代码的说明。但我正在搜索如何从第三方调用函数。因此。例如,您的预构建库名为“libmy.so” 在要使用的项目的项目文件夹中: 1) 在jni文件夹中创建libmy文件夹(jni/libmy) 2) 复制你的libmy.so 然后,只需创建一个jni/libmy/Android.mk文件: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libmy

我找到了如何利用NDK在Android中链接和使用c/c++代码的说明。但我正在搜索如何从第三方调用函数。因此。

例如,您的预构建库名为“libmy.so”

在要使用的项目的项目文件夹中:

1) 在jni文件夹中创建libmy文件夹(
jni/libmy

2) 复制你的
libmy.so

然后,只需创建一个
jni/libmy/Android.mk
文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libmy
LOCAL_SRC_FILES := libmy.so
include $(PREBUILT_SHARED_LIBRARY)
现在,您可以在jni/Android.mk中编写:

LOCAL_SHARED_LIBRARIES := libmy
然后,当您进行ndk构建时,它会将该库复制到libs/armeabi中/


之后,您可以在C++代码中使用这个库。

< p>您只需将.So放入您的LIBS/ARMEABIV-V7A文件夹(或者您编译的任何其他架构,如ARMEABI、X86等),伊柯丽斯将自动看到它并将其集成到APK。

然后,要从中访问任何本机函数,那么在Java代码中,只需在类的顶部将其声明为本机函数。比如说

受保护的静态本机void AKUAppInitialize()

之后可以在代码中的任何地方调用,如


AKUAppInitialize()

如果你有源代码,你就必须配置你的NDK部件:看看

只要把它链接成Makefile中的静态库就行了,因为我对它了解不多。你能解释一下如何链接为静态库吗?可以使此过程更简单…在我放置我的时,它不会将此库复制到libs/armeabi/after ndk bulidi。因此在libs/armeabi中,它在编译后消失:(