dlib作者已經(jīng)把dlib移植到Android平臺旁仿,本文介紹在CentOS上生成dlib Android動態(tài)庫的方法足陨,當(dāng)作備忘琴拧。
為了生成dlib-android動態(tài)庫蝌借,只要執(zhí)行build.py即可卿啡。build.py需要以下支持:
1.Android NDK
2.a(chǎn)db
3.dlib-android源碼
4.OpenCV SDK
1.安裝Android NDK
dlib以及第三方代碼都是用native實現(xiàn)的吟吝,顯然,我們需要準(zhǔn)備好NDK颈娜。
下載android-ndk-r16b-linux-x86_64.zip
然后解壓到用戶的一個文件夾里:
$mkdir –p android
$cd android
$unzip android-ndk-r16b-linux-x86_64.zip
修改~/.bashrc剑逃,把NDK路徑加入到PATH里
export ANDROID_NDK_HOME=/home/samson/android/android-ndk-r16b
export PATH=$PATH:$ANDROID_NDK_HOME
Android NDK已經(jīng)準(zhǔn)備就緒浙宜。
2.安裝adb
(注:如果屏蔽build.py中的setDeviceABI(),這一步可以省略)
dlib-android 的build.py里setDeviceABI()需要啟動adb以獲得設(shè)備CPU的ABI類型蛹磺,所以必須先安裝adb粟瞬。adb在sdk tools里,先下載:
https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
然后安裝platform-tools:
$sudo mkdir -p? /usr/local/share/android
$sudo unzip sdk-tools-linux-3859397.zip?-d /usr/local/share/android
$cd? /usr/local/share/android
$sudo yes | ./tools/bin/sdkmanager --licenses? #若遇到有關(guān)repositories.cfg的警告萤捆,忽略它裙品,或創(chuàng)建一個空的repositories.cfg即可
$sudo ./tools/bin/sdkmanager "tools" "platform-tools"
修改~/.bash_profile,把platform-tools路徑加入到PATH里:
PATH=$PATH: /usr/local/share/android/sdk/platform-tools
lsusb命令查看USB id.
lsusb集成在usbutils里俗或,安裝usbutils后就可以執(zhí)行l(wèi)susb指令了
$sudo yum install usbutils
$lsusb
? Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
? 接入一個Android設(shè)備后市怎,
$lsusb
Bus 001 Device 003: ID 22d9:2774
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
新增加的“Device 003: ID 22d9:2774”就是android設(shè)備
在/etc/udev/rules.d/50-android.rules中
$sudo touch /etc/udev/rules.d/50-android.rules
并寫入內(nèi)容
SUBSYSTEM=="usb", SYSFS{""}=="22d9:2774", MODE="0666"
注意用真實的id替換文中的"22d9:2774"
重啟udev服務(wù):
$sudo start_udev
或
$sudo systemctl restart system-udev-trigger.service
至此,adb安裝完成辛慰,驗證一下:
$adb version
Android Debug Bridge version 1.0.39
Version 0.0.1-4500957
Installed as /usr/local/share/android/sdk/platform-tools/adb
這一步稍有些麻煩焰轻。但是一步步做,也很容易昆雀。
3.準(zhǔn)備dlib-android源碼
$cd ~/android
$git clone https://github.com/tzutalin/dlib-android.git
$cd dlib-android
4.準(zhǔn)備OpenCV
實際上,執(zhí)行envsetup蝠筑,就能下載并解壓好OpenCV狞膘。手動準(zhǔn)備OpenCV就可以選擇專業(yè)的工具加快下載速度;另外什乙,envsetup固定下載3.1.0版本挽封。
下載好最新版OpenCV,opencv-3.4.1-android-sdk.zip臣镣,并解壓到dlib-android/third_party:
$unzip opencv-3.4.1-android-sdk.zip
創(chuàng)建symbolic link供build.py使用:
$ln –s ~/android/dlib-android/third_party/OpenCV-android-sdk/sdk/native ~/android/dlib-android/third_party/opencv
5.生成Andorid動態(tài)庫
$python build.py
幾分鐘后辅愿,dlib-android/libs文件夾里就生成4個子文件夾,每個子文件夾里都有一個libandroid_dlib.so作為對應(yīng)ABI類型的動態(tài)庫忆某。
也可以修改dlib-android/jni/Application.mk定義的APP_ABI点待,只生成你需要的庫。