Mac下編譯JRTPLIB原始碼 For Android
阿新 • • 發佈:2018-10-31
一.工欲善其事必先利其器:
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_NDKandroid_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'