在Android.mk文件中使用预编译库(.a)时,如果依赖的库中包含了Android Archive(.aar)格式的库,NDK会报'Cannot link dependency .aar”错误。这是因为NDK不支持直接链接.aar文件。
解决这个问题的方法是:使用Android Studio将.aar文件转换为.a文件,再将其链接到你的应用程序中。
以下是将.aar文件转换为.a文件的过程:
task extractNativeLibs(type: Copy) {
from(zipTree("$projectDir/libs/libtemp/your_lib.aar"))
into("$buildDir/intermediates/ndkBuild/$flavor/$buildType/lib")
include "jni/**/*"
}
preBuild.dependsOn(extractNativeLibs)
其中,将your_lib.aar替换为你要转换的库的名称。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../../../libs/headers
LOCAL_MODULE := your_module
LOCAL_SRC_FILES := your_lib.a
LOCAL_EXPORT_C_INCLUDES += $(LOCAL_C_INCLUDES)
include $(PREBUILT_STATIC_LIBRARY)
将your_module修改为自己的模块名,your_lib.a修改成自己需要的库名。