dlib作者已經(jīng)把dlib移植到Android平臺(tái),本文介紹在CentOS上生成dlib Android動(dòng)態(tài)庫(kù)的方法,當(dāng)作備忘。
為了生成dlib-android動(dòng)態(tài)庫(kù),只要執(zhí)行build.py即可。build.py需要以下支持:
1.Android NDK
2.a(chǎn)db
3.dlib-android源碼
4.OpenCV SDK
1.安裝Android NDK
dlib以及第三方代碼都是用native實(shí)現(xiàn)的,顯然,我們需要準(zhǔn)備好NDK。
下載android-ndk-r16b-linux-x86_64.zip
然后解壓到用戶的一個(gè)文件夾里:
$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()需要啟動(dòng)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)建一個(gè)空的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
? 接入一個(gè)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"
注意用真實(shí)的id替換文中的"22d9:2774"
重啟udev服務(wù):
$sudo start_udev
或
$sudo systemctl restart system-udev-trigger.service
至此,adb安裝完成,驗(yàn)證一下:
$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
實(shí)際上,執(zhí)行envsetup,就能下載并解壓好OpenCV。手動(dòng)準(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動(dòng)態(tài)庫(kù)
$python build.py
幾分鐘后,dlib-android/libs文件夾里就生成4個(gè)子文件夾,每個(gè)子文件夾里都有一個(gè)libandroid_dlib.so作為對(duì)應(yīng)ABI類型的動(dòng)態(tài)庫(kù)。
也可以修改dlib-android/jni/Application.mk定義的APP_ABI,只生成你需要的庫(kù)。