1. 程式人生 > >Mac下編譯JRTPLIB原始碼 For Android

Mac下編譯JRTPLIB原始碼 For Android

一.工欲善其事必先利其器:

1.官網下載JthreadJrtplib

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'