一.工欲善其事必先利其器:
2.通过 "brew install ninja" 命令安装ninja
二.解压下载的Jthread与Jrtplib压缩包并参考GitHub的文档编写cmake文件:
1.在Jthread解压出的目录下创建toolchain.cmake并添加内容
set(CMAKE_SYSTEM_NAME Android) set(CMAKE_SYSTEM_VERSION 21) # API level set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a) set(CMAKE_ANDROID_NDK android_ndk_path) set(CMAKE_ANDROID_STL_TYPE gnustl_static) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set(CMAKE_C_COMPILER clang) set(CMAKE_CXX_COMPILER clang++)
为便于观察我创建了一个文件夹以存放编译出来的文件
mkdir android_build cd android_build mkdir android_jthread
执行ninja进行编译
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake -DCMAKE_INSTALL_PREFIX=./android_jthread -DCMAKE_FIND_ROOT_PATH=./android_jthread -G "Ninja" .. && ninja && ninja install
2.在Jrtplib目录下创建toolchain.cmake并添加内容
set(CMAKE_SYSTEM_NAME Android) set(CMAKE_SYSTEM_VERSION 21) # API level set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a) set(CMAKE_ANDROID_NDK android_ndk_path) set(CMAKE_ANDROID_STL_TYPE gnustl_static) set(CMAKE_FIND_ROOT_PATH android_jthread_path) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set(CMAKE_C_COMPILER clang) set(CMAKE_CXX_COMPILER clang++)
为便于观察同样创建一个文件夹以存放编译出来的文件
mkdir android_build cd android_build mkdir android_jrtplib
执行ninja进行编译
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake -DCMAKE_INSTALL_PREFIX=./android_jrtplib -G "Ninja" .. && ninja && ninja install
三.连上android设备进行测试是否可用
adb root adb remount adb disable-verity adb push example1_path /system/bin/ adb push libjthread.so_path /system/lib/ adb shell cd /system/lib LD_LIBRARY_PATH=. export LD_LIBRARY_PATH quit adb shell example1
执行效果如下图:
至此完毕。
备注:橙色需要按照自己的真实路径进行配置。
绿色需要按照自己的需要的abi进行配置,其中包含:
'86', 'x86_64', 'mips', 'mips64' 'armeabi' ,'armeabi-v7a', 'arm64-v8a'