在Android Studio上进行OpenCV 3.1开发
2016-08-29 09:07
651 查看
在Android Studio上进行OpenCV 3.1开发
发布于2016年1月27日 作者: John Hany
5,466次阅读
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 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 16
targetSdkVersion 23
}
buildTypes {
release {
minifyEnabled false
proguardFiles 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' } } } |
按钮,同步项目的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】Android Studio 2上利用NDK进行OpenCV 3.1开发
- 在Android Studio上进行OpenCV3.1开发环境的配置
- Android Studio 2上利用NDK进行OpenCV 3.1开发
- 【Android】Android Studio 2上利用NDK进行OpenCV 3.1开发(注意点)
- 【Android Studio】在Android Studio上进行OpenCV 3.1开发
- Android Studio 2.3利用CMAKE进行OpenCV 3.2的NDK开发
- Android Studio中使用jni进行opencv开发的环境配置
- Android Studio中使用jni进行opencv开发的环境配置方法
- 用Android studio进行 OpenCV 开发的第一个项目
- Android Studio 2.2 中利用CAMKE进行OpenCV的NDK开发
- 在Android Studio环境下进行OpenCV开发
- Android Studio 下进行jni开发及打包方法
- 关于在windows下利用QT进行opencv跨平台视频开发
- Android-使用Android studio 进行NDK-JNI开发实例(一)
- 【编程开发】opencv实现对Mat中某一列或某一行的元素进行normalization
- 在Android studio中进行NDK开发
- 使用Android Studio进行NDK开发
- ArcGIS4Android 1:使用Android Studio进行ArcGIS for Android开发的环境部署-正确版
- 使用Android Studio 1.3 版本进行NDK开发准备工作
- 在Android studio中进行NDK开发