在Android Studio上进行OpenCV 3.1开发

在Android Studio上进行OpenCV 3.1开发

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

chapter1_welcome_screen_1        再选择SDK Manager

chapter1_welcome_screen_2        在弹出的窗口中点击下方的Launch Standalone SDK Manager(如果以后想随时打开这个界面,只需要点击Android Studio界面上方的sdk_manager_button按钮):

chapter1_welcome_screen_3        一旦建立项目之后,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_studio_2_font_size

        在弹出的Android SDK Manager界面中,选择以下若干项:

chapter1_android_sdk_manager_1        因为我同时也安装了API 21的SDK,所以我也勾选了Build-tools 21.1.2。

chapter1_android_sdk_manager_2        其他包如Samples for SDK与Sources for Android SDK是可选的。虽然平时采用x86架构的手机并不多见,但我们安装x86系统镜像主要是为了模拟器用。用Android Studio自带的AVD Manager创建虚拟设备时,它会推荐你使用带有Google API的镜像,所以我把所有镜像都安装了。

chapter1_android_sdk_manager_3        这里的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:

chapter1_haxm_check

        如果二者都为Yes,双击intelhaxm-android.exe,安装HAXM。在安装过程中会询问为模拟器占用多少内存用来优化速度,采用默认值就好。

        点击Android Studio上方的avd_manager_button按钮,打开Android Virtual Device Manager。点击Create Virtual Device…

chapter1_avd_manager_1

        第二步选择虚拟设备的外观与尺寸,这里采用默认的Nexus 5:

chapter1_avd_manager_2

        下一步,选择模拟器的Android版本。这里我选择API 23,ABI x86的:

chapter1_avd_manager_3        再点击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(竖屏模式)时,这个比例还要调高一些:

chapter1_avd_manager_4        点击左下角的Show Advanced Settings,可以设置更详细的参数。在开发图像处理应用时,最好为虚拟设备添加一个摄像头:

chapter1_avd_manager_5        点击Finish,虚拟设备就创建好了。在AVD Manager界面中点击对应虚拟设备后面的三角形按钮,就可以启动模拟器,打开相应的虚拟设备:

chapter1_avd_manager_6        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-button按钮,就能打开Genymotion了。

        用Genymotion创建虚拟设备的过程非常简单,这里就不赘述了。在需要调试应用时,只需要点击run_button按钮,然后在弹出的Device Chooser窗口中选择Genymotion的虚拟设备即可:

chapter1_device_chooser

        Genymotion模拟器运行时的效果如下:

genymotion-device

        有时即使设置了自定义的Android SDK路径,新建虚拟设备时Genymotion还是会自己下载一个两百多MB的SDK。也许是同一API的SDK具体版本不同造成的,对此我也没有什么办法,好在下载速度不是太慢:)


为项目配置OpenCV

        1.建立Android项目。打开Android Studio,点击File->New Project…

chapter1_new_project_1        为项目设置应用名称、包名前缀和项目位置:

chapter1_new_project_2        点击Next。设置应用支持的最低Android API级别,这里设置为API 16:

chapter1_new_project_3        点击Next。选择默认Activity的外观,为了让界面尽量简洁,这里选择Empty Activity:

chapter1_new_project_4        点击Next。设置Activity文件名称以及对应Layout文件名称,这里采用默认值:

chapter1_new_project_5        点击Finish。等待Android Studio载入相关文件、同步配置并自动编译之后,一个基本的Android项目就建立好了。

        2.导入OpenCV库。点击File->New->Import Module…

chapter1_new_module_1        在弹出的窗口中找到OpenCV Android SDK下的sdk\java文件夹,比如C:\dev-lib\OpenCV-android-sdk\sdk\java:

chapter1_new_module_2        点击Next。保持默认选项不动,再点击Finish,完成OpenCV库的导入:

chapter1_new_module_3        此时,Android Studio会自动更新项目配置。由于OpenCV库本身默认配置的原因,在这个过程中会产生很多错误(如下图最下边的红框所示)。这就需要我们修改OpenCVLibrary310\build.gradle文件,然后重新同步Gradle配置:

chapter1_opencv_build_gradle        修改OpenCVLibrary310\build.gradle文件为如下内容:

        修改好后,点击上面图片中标示出的Try Again,或者点击Android Studio上方的sync_project_button按钮,同步项目的Gradle配置。同步完成后,就可以向Android项目中整合OpenCV模块了。

        3.将Android项目与OpenCV整合。点击File->Project Structure…

chapter1_project_structure_1

        在弹出的Project Structure窗口中选择左边的app,在右边选择Dependencies,然后点击green_plus_button按钮,选择Module dependency

chapter1_project_structure_2        在弹出的窗口中选择OpenCVLibrary310,点击两次OK,保存并关闭两个窗口:

chapter1_project_structure_3

        至此,你的Android项目就支持OpenCV的开发了!


        另外,在设备上调试APP之前,不要忘记先安装对应架构的OpenCV Manager,该软件包包含了所有OpenCV的库函数。否则会出现Package not found的错误:

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命令来安装,比如:

adb_install

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值