Mar*_*los 8 java java-native-interface android android-ndk
我正在构建一个Android apk,它使用第三方的一些本机库,这些库位于静态对象代码库(.a文件)中,我需要编写一个JNI包装器来访问Java这些函数.
这些库已经使用交叉编译器进行编译,并且本身就是Android.
如何编译链接到.a libs文件中的函数的JNI源?
这是我的Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE := ndk1
LOCAL_SRC_FILES := native.c
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
当我编译时,我只获得编译的native.c文件.
Mar*_*los 11
要做到这一点.
我必须将这些库声明为模块.如下所示.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := curl
LOCAL_SRC_FILES := libcurl.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
使用与此Android.mk文件位于同一文件夹中的libcurl.a文件,以及带有标头的/ include fodler.
现在在主模块中只声明lib,Android NDK将负责其余部分.
LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog -ldl
LOCAL_MODULE := rmsdk
LOCAL_SRC_FILES := curlnetprovider.cpp native.c
LOCAL_STATIC_LIBRARIES := curl
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
注意..在使用之前,您应该包含模块的Android.mk文件.我通过调用all-subdir-makefiles来做到这一点.
归档时间: |
|
查看次数: |
10235 次 |
最近记录: |