1 配置成如下格式:
# 设置当前路径
LOCAL_PATH := $(call my-dir)
# 包含预构建库的 Android.mk
include $(CLEAR_VARS)
# 定义 cryptoauth
LOCAL_MODULE := cryptoauth
LOCAL_SRC_FILES := libcryptoauth.so
include $(PREBUILT_SHARED_LIBRARY)
#include $(BUILD_PREBUILT)
# 定义 bdCtrl
include $(CLEAR_VARS)
LOCAL_MODULE := board_jni
LOCAL_SRC_FILES := board_jni.cpp
LOCAL_LDLIBS := -llog
# 链接到 cryptoauth 库
LOCAL_SHARED_LIBRARIES := cryptoauth
# 构建共享库
include $(BUILD_SHARED_LIBRARY)
2 编译报错
ld: error: app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libcryptoauth.so is incompatible with armelf_linux_eabi
3 修改为
ABIs [armeabi-v8a] are not supported for platform. Supported ABIs are [arm64-v8a, armeabi-v7a, x86, x86_64].
build.gradle修改为:
ndk { moduleName "bdCtrl" ldLibs "log", "z", "m" abiFilters "arm64-v8a" }
3 移入第三方的源代码,cmake配置
(1) mkdir bulid
(2)cd build
(3 )cmake -DCMAKE_TOOLCHAIN_FILE="/home/us/ndk_test/android-ndk-r18b/build/cmake/android.toolchain.cmake" -DANDROID_ABI="armeabi-v7a" -DANDROID_NDK=$ANDROID_NDK -DANDROID_PLATFORM=android-23 -DATCA_HAL_I2C=ON -DATCA_TNGTLS_SUPPORT=ON -DATCA_TFLEX_SUPPORT=ON -DATCA_USE_ATCAB_FUNCTIONS=ON -DATCA_PRINTF=ON ..
(4)make
4 发现不能打印第三方SO的日志,需要加入NDK的andoid相关的log库
(1)
#include
#define ANDROID_LOG_INFO 6
#define LOG_TAG "atca"
#define LOGE(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
(2)CMakeLists.txt加入里面的
cmake_policy(SET CMP0079 NEW)
find_library(log-lib log)
target_link_libraries(cryptoauth ${log-lib})
(3)重新cmake,然后bulid