在Android Studio上进行OpenCV 3.1开发
在Android Studio上進行OpenCV 3.1開發
發布于 2016年1月27日2016.07.08更新:增加Android Studio 2.1.2的配置方法
? ? ? ? 自從Android Studio發布以后,Google已不再推薦開發者使用Eclipse+ADT的方式進行Android的開發了。而且,隨著開發腳步的前進,Android Studio提供了越來越多的Eclipse所沒有的優秀特性。所以,忍痛放棄老工具,學習新工具才是明智之選。
? ? ? ? Android Studio 2發布之后,增加了若干新功能。相比較1代版本,2.x最主要的變化在于增加了Instant Run功能,免去了每次修改代碼之后都要重新編譯安裝的過程,不過需要minSdkVersion設置為15以上,而在21以上時性能最好;另一個變化就是Android模擬器的速度提升明顯。所以如果你使用的是Android Studio 2,而且對模擬器的功能的豐富性要求不太高的話,可以略過Android模擬器|Genymotion一節,直接使用默認的AVD Manager建立模擬器。
注:本文涉及的某些網站的訪問與工具的下載在國內是受限的。在沒有解決網絡連接問題的情況下進行環境配置的方法,本文并不涉及。
索引
—環境配置
—-SDK Manager
—-Android Studio歡迎界面
—-切換深色主題
—-更改編輯器字體
—Android模擬器
—-AVD Manager
——HAXM
—-Genymotion
—為項目配置OpenCV
—-建立Android項目
—-導入OpenCV
——build.gradle
—-將Android項目與OpenCV整合
—OpenCV Manager
開發環境:
? ? ? ? Windows 10 x64 專業版(Windows 7 x64 旗艦版也驗證可行)
? ? ? ? Android Studio 1.5.1(Gradle版本2.8)、Android Studio 2.1.2(Gradle版本2.10)
? ? ? ? JDK 1.8.0
? ? ? ? Android 6.0(API 23)
? ? ? ? OpenCV 3.1.0?Android SDK
可能會用到的工具:
? ? ? ? Genymotion(一個第三方的Android模擬器)
環境配置:
? ? ? ? 1.首先要保證計算機上有Java環境。如果沒有的話請參考其他文章(比如《Windows下Android開發環境的配置》的第一部分)進行Java開發環境的配置。
? ? ? ? 2.在http://developer.android.com/sdk/index.html下載最新穩定版Android Studio。從這個鏈接下載的Android Studio可能并不是最新版,我這里給出1.5.1版本的下載鏈接:https://dl.google.com/dl/android/studio/ide-zips/1.5.1.0/android-studio-ide-141.2456560-windows.zip。如果下載到的文件名稱是以“android-studio-bundle”開頭的,說明該安裝包不只包含了Android Studio本身,還包括了最新版本的Android SDK以及相應的模擬器系統鏡像;如果文件名稱是以“android-studio-ide”開頭的,則只包含Android Studio本身。
? ? ? ? 雖然Android Studio 2已有預覽版,但是每一次更新都會對工作流程產生一些改變,所以目前還是推薦使用Android Studio 1.5.1。Android Studio 1.x與Android Studio 2.x對OpenCV Java API的配置方法基本相同,區別僅在于一些插件的版本和界面略有不同,下文介紹的步驟對兩種版本都適用,差別之處會有明顯的標記。值得一提的是,不同版本的Anroid Studio相互之間并不沖突,你甚至可以在桌面上同時打開多個不同版本的Android Studio。
? ? ? ? 在安裝過程中會詢問Android Studio安裝位置與Android SDK的安裝位置,假設SDK的位置選擇在了C:\dev-lib\android-sdk。
? ? ? ? 安裝完成之后,第一次運行Android Studio時,軟件會自動連接Google服務器下載最新的Android SDK。這一步可以跳過,稍后我們自己打開Android SDK Manager來安裝所需的文件。
? ? ? ? 3.在http://sourceforge.net/projects/opencvlibrary/files/opencv-android/3.1.0/OpenCV-3.1.0-android-sdk.zip/download下載OpenCV 3.1.0?Android SDK,解壓到某個不限制讀寫權限的目錄下,比如C:\dev-lib\OpenCV-android-sdk。
? ? ? ? 4.打開Android Studio。第一次運行時會自動下載并安裝最新的Android SDK文件,這里可以取消,直接打開Android Studio。此時會彈出一個歡迎界面。為了安裝必要的SDK文件,點擊Configure:
? ? ? ? 再選擇SDK Manager:
? ? ? ? 在彈出的窗口中點擊下方的Launch Standalone SDK Manager(如果以后想隨時打開這個界面,只需要點擊Android Studio界面上方的按鈕):
? ? ? ? 一旦建立項目之后,Android Studio每次都會默認打開最近使用的項目。如果想每次打開Android Studio時都彈出這個歡迎界面,需要依次打開File->Settings…->Appearance & Behaviour->System Settings,取消勾選Reopen last project on startup。(參考:http://stackoverflow.com/questions/21181847/how-to-force-android-studio-to-start-with-the-welcome-screen。)
? ? ? ? 另外,我是在暗色主題下截取的圖片。切換Android Studio主題的方法是,依次選擇File->Settings…->Appearance & Behaviour->Apprearance,在Theme后的下拉菜單中選擇Darcula。
? ? ? ? 編輯器默認的字體比較小,調節字體的方法如下:首先依次選擇File->Settings…->Editor->Colors & Fonts->Font,默認的主題是無法直接修改的,所以要先點擊一下Save As…,新建一個相同的主題,然后調整Size值,如下圖所示:
? ? ? ? 在彈出的Android SDK Manager界面中,選擇以下若干項:
? ? ? ? 因為我同時也安裝了API 21的SDK,所以我也勾選了Build-tools 21.1.2。
? ? ? ? 其他包如Samples for SDK與Sources for Android SDK是可選的。雖然平時采用x86架構的手機并不多見,但我們安裝x86系統鏡像主要是為了模擬器用。用Android Studio自帶的AVD Manager創建虛擬設備時,它會推薦你使用帶有Google API的鏡像,所以我把所有鏡像都安裝了。
? ? ? ? 這里的HAXM驅動結合上一圖中勾選的x86系統鏡像,在大多數Intel CPU上可以明顯提高模擬器的運行速度。其他包是可選的。
? ? ? ? 選擇完畢后,點擊Install packages…就可以開始安裝了。安裝過程十分耗時,而且如果網絡不穩定的話還會經常斷開連接,所以這個過程很需要耐心。
? ? ? ? 安裝完畢后,關閉Android SDK Manager。接下來就可以創建虛擬設備了。
Android模擬器
? ? ? ? 1.AVD Manager
? ? ? ? 這是Android SDK自帶的Android模擬器,也是Android Studio默認的模擬器。
? ? ? ? 如果你之前安裝了HAXM驅動,打開C:\dev-lib\android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager,準備安裝該驅動。先打開命令提示符,把haxm_check.exe拖動到命令提示符窗口內,按回車,檢查你的CPU是否支持VT和NX:
? ? ? ? 如果二者都為Yes,雙擊intelhaxm-android.exe,安裝HAXM。在安裝過程中會詢問為模擬器占用多少內存用來優化速度,采用默認值就好。
? ? ? ? 點擊Android Studio上方的按鈕,打開Android Virtual Device Manager。點擊Create Virtual Device…:
? ? ? ? 第二步選擇虛擬設備的外觀與尺寸,這里采用默認的Nexus 5:
? ? ? ? 下一步,選擇模擬器的Android版本。這里我選擇API 23,ABI x86的:
? ? ? ? 再點擊Next,設置虛擬設備的詳細屬性。如果之前安裝了HAXM,這里就要勾選Use Host GPU,以提高模擬器的運行速度。在Android Studio 2.1.2中,該項顯示為Graphics,如果你的顯卡支持OpenGL,可以選擇Hardware – GLES 2.0。還有需要注意的是,由于虛擬設備本身屏幕分辨率就比較高(一般為1080×1920以上),我們還要根據計算機的實際屏幕分辨率來設置Scale,我一般選擇2dp on device=1px on screen,相當于把虛擬設備的屏幕長寬縮小了一半。如果是在筆記本上進行開發,尤其是Orientation采用Portrait(豎屏模式)時,這個比例還要調高一些:
? ? ? ? 點擊左下角的Show Advanced Settings,可以設置更詳細的參數。在開發圖像處理應用時,最好為虛擬設備添加一個攝像頭:
? ? ? ? 點擊Finish,虛擬設備就創建好了。在AVD Manager界面中點擊對應虛擬設備后面的三角形按鈕,就可以啟動模擬器,打開相應的虛擬設備:
? ? ? ? Android Studio自帶模擬器的一個很大的弊端是,運行緩慢。甚至在我的年老體衰的筆記本電腦上根本無法啟動。在使用這個模擬器時,要注意機器的空閑內存、HAXM占用內存與虛擬設備RAM之間的協調。否則即使安裝了HAXM,也可能由于內存不足的原因無法開啟加速模式,導致運行速度更慢。
? ? ? ? 2.Genymotion
? ? ? ? Genymotion是Genymobile開發的一款Android模擬器,運行速度比Android SDK自帶的模擬器快很多,而且提供了包括網絡、攝像頭、電池電量、信號強度、GPS等參數的模擬。在某些情況下,它的運行速度甚至比實際設備還要快。Genymotion的官方網站是https://www.genymotion.com/,需要注冊一個賬戶才能下載,選擇personal use就能免費使用大部分功能。
? ? ? ? 下載并安裝好Genymotion之后,打開軟件,點擊Settings->ADB->Use custom Android SDK tools,然后選擇之前下載的Android SDK目錄,比如C:/dev-lib/android-sdk。如果下方顯示一個對號,則說明Android SDK配置成功,無需為Genymotion單獨下載一個Android SDK了。
? ? ? ? 此外,還要為Android Studio安裝一個Genymotion插件。打開Android Studio,依次點擊File->Settings…->Plugins->Browse repositories…,在左上角的搜索框搜索“genymotion”,找到Genymotion,點擊Instal plugin。安裝完成之后,關閉并重新打開Android Studio。(參考:https://docs.genymotion.com/pdf/PDF_Plugin_for_Android_Studio/Plugin-for-Android-Studio-1.0.7-Guide.pdf)
? ? ? ? 點擊Android Studio上方的按鈕,就能打開Genymotion了。
? ? ? ? 用Genymotion創建虛擬設備的過程非常簡單,這里就不贅述了。在需要調試應用時,只需要點擊按鈕,然后在彈出的Device Chooser窗口中選擇Genymotion的虛擬設備即可:
? ? ? ? Genymotion模擬器運行時的效果如下:
? ? ? ? 有時即使設置了自定義的Android SDK路徑,新建虛擬設備時Genymotion還是會自己下載一個兩百多MB的SDK。也許是同一API的SDK具體版本不同造成的,對此我也沒有什么辦法,好在下載速度不是太慢:)
為項目配置OpenCV
? ? ? ? 1.建立Android項目。打開Android Studio,點擊File->New Project…:
? ? ? ? 為項目設置應用名稱、包名前綴和項目位置:
? ? ? ? 點擊Next。設置應用支持的最低Android API級別,這里設置為API 16:
? ? ? ? 點擊Next。選擇默認Activity的外觀,為了讓界面盡量簡潔,這里選擇Empty Activity:
? ? ? ? 點擊Next。設置Activity文件名稱以及對應Layout文件名稱,這里采用默認值:
? ? ? ? 點擊Finish。等待Android Studio載入相關文件、同步配置并自動編譯之后,一個基本的Android項目就建立好了。
? ? ? ? 2.導入OpenCV庫。點擊File->New->Import Module…:
? ? ? ? 在彈出的窗口中找到OpenCV Android SDK下的sdk\java文件夾,比如C:\dev-lib\OpenCV-android-sdk\sdk\java:
? ? ? ? 點擊Next。保持默認選項不動,再點擊Finish,完成OpenCV庫的導入:
? ? ? ? 此時,Android Studio會自動更新項目配置。由于OpenCV庫本身默認配置的原因,在這個過程中會產生很多錯誤(如下圖最下邊的紅框所示)。這就需要我們修改OpenCVLibrary310\build.gradle文件,然后重新同步Gradle配置:
? ? ? ? 修改OpenCVLibrary310\build.gradle文件為如下內容:
apply plugin: 'com.android.library'android {compileSdkVersion 23buildToolsVersion "23.0.2"defaultConfig {minSdkVersion 16targetSdkVersion 23}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'}} }| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | apply plugin: 'com.android.library' android { ????compileSdkVersion 23 ????buildToolsVersion "23.0.2" ????defaultConfig { ????????minSdkVersion 16 ????????targetSdkVersion 23 ????} ????buildTypes { ????????release { ????????????minifyEnabled false ????????????proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' ????????} ????} } |
? ? ? ? 修改好后,點擊上面圖片中標示出的Try Again,或者點擊Android Studio上方的按鈕,同步項目的Gradle配置。同步完成后,就可以向Android項目中整合OpenCV模塊了。
? ? ? ? 3.將Android項目與OpenCV整合。點擊File->Project Structure…:
? ? ? ? 在彈出的Project Structure窗口中選擇左邊的app,在右邊選擇Dependencies,然后點擊按鈕,選擇Module dependency:
? ? ? ? 在彈出的窗口中選擇OpenCVLibrary310,點擊兩次OK,保存并關閉兩個窗口:
? ? ? ? 至此,你的Android項目就支持OpenCV的開發了!
? ? ? ? 另外,在設備上調試APP之前,不要忘記先安裝對應架構的OpenCV Manager,該軟件包包含了所有OpenCV的庫函數。否則會出現Package not found的錯誤:
? ? ? ? OpenCV Manager位于OpenCV Android SDK的apk目錄下,比如C:\dev-lib\OpenCV-android-sdk\apk,然后根據你的設備來選擇安裝包。比如,如果手機的CPU采用ARM v7架構,就要安裝OpenCV_3.1.0_Manager_3.10_armeabi-v7a.apk;如果是x86架構,就要安裝OpenCV_3.1.0_Manager_3.10_x86.apk。
? ? ? ? 對于實際設備,把OpenCV Manager的apk直接拷貝到設備安裝即可;如果是虛擬設備,需要在命令提示符中用adb install命令來安裝,比如:
C:\dev-lib\android-sdk\platform-tools\adb install C:\dev-lib\OpenCV-android-sdk\apk\OpenCV_3.1.0_Manager_3.10_x86.apk| 1 | C:\dev-lib\android-sdk\platform-tools\adb install C:\dev-lib\OpenCV-android-sdk\apk\OpenCV_3.1.0_Manager_3.10_x86.apk |
總結
以上是生活随笔為你收集整理的在Android Studio上进行OpenCV 3.1开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eigen 矩阵运算库在实际项目中的使用
- 下一篇: 使用Java api 和 jni混合方式