Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83
背景:
现在在Framework层及以下经常会调用到第三方的C++算法库,比如语音识别,人脸识别等等。
例如我这里是JNI调用一个语音处理库,这些库厂商会以非开源的so库文件形式提供。
JNI在编译时需要依赖它,所以需要先预编译安装第三方库。
解决方法:
在同一个Android.mk中编写就行:
LOCAL_PATH:= $(call my-dir)
/*此段是预编译第三方库部分*/
include $(CLEAR_VARS)
LOCAL_MODULE := libaspmodule
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := libaspmodule.so
LOCAL_MODULE_STEM :=$(LOCAL_MODULE)
LOCAL_MODULE_SUFFIX := $(suffix $(LOCAL_SRC_FILES))
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
include $(BUILD_PREBUILT)
/*此段是调用前面第三方库编译JNI生成so部分*/
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= external/tinyalsa/include
LOCAL_SRC_FILES:= com_ecovacs_lib_digmic_DigMic.c
LOCAL_MODULE := libdigmic
LOCAL_SHARED_LIBRARIES:= libcutils libutils libtinyalsa libaspmodule
LOCAL_MODULE_TAGS := optional
include $(BUILD_SHARED_LIBRARY)
参考:
Android调用第三方C++算法库