Android开发介绍

Android开发介绍

这个教程设计是帮助你学习基础的Android开发和快速搭建您的开发环境。这个是在我的Window 7上编写的,当然它也支持Linux(uBuntu)、Mac OS其他支持Android的操作系统。

如果实践下面的步骤出现了其他的问题,您可以随意的通过OpenCV4Android讨论组或者 Q&A forum联系到我们,我们将以最佳的方式帮助你解决。

前言

Android是由Google开放手机联盟领导开发的,基于Linux系统的开源手机操作系统。查看Android的官网会有详细的介绍。

开发Android与开发其他平台有着明显的不同。所以在Android编程之前推荐你确认下面的关键点已经熟悉:

  1. Java编程语言是Android系统最重要的开发技术。因此你能在Oracle docs on Java获取帮助。
  2. Java 本地接口(JNI)这个技术可以通过Java虚拟机运行本地代码。因此您能在 Oracle docs on JNI获取帮助。
  3. Android Activity和它的生命周期,这个是重要的Android API类。
  4. OpenCV开发肯定需要一些Android摄像头的相关知识。

Android开发快速环境搭建

如果你正在一个干净的环境中安装,你可以尝试NVIDIA发布的 Tegra Android Development Pack (TADP)。

注意:
从2.0开始TADP包已经包含OpenCV for Tegra SDK,它是使用Tegra-specific的OpenCV4Android SDK扩展。安装后TADP将会自动覆盖所有的环境设置,并且你可以跳过这是指导。

如果你是一个Android开发的初学者,我们推荐你从TADP开始。

注意
NVIDIA的Tegra Android开发包包含一些针对NVIDIA Tegra平台的特性,但使用上却仅仅对Tegra驱动没有限制。你需要至少1.6G的磁盘空间进行安装。

  • TADP将会从Google服务器下载Android SDK平台和AndroidNDK,所以安装需要链接互联网。
  • TADP会在安装结束的时候询问你打开开发套件。你可以忽略这一步如果你还没有Tegra开发套件。
  • (Unix/Linux)TADP会要求你使用root权限进行安装,所以你需要成为sudo group的成员。

搭建Android开发环境指南

Java开发

你需要使用如下的软件做Android的Java开发:

1. Sun JDK 6(Sun JDK 7也可以)
 访问[Java SE页面](http://www.oracle.com/technetwork/java/javase/downloads/)并下载你的系统版本进行安装。
 这有一个针对Ubuntu和Mac操作系统的详细JDK(Java 开发工具)[安装介绍](http://source.android.com/source/initializing.html#installing-the-jdk)(仅针对OpenCV应用阶段)

注意:OpenJDK并不适合Android开发,因为Android SDK进支持Sun JDK。如果你使用Ubuntu,在安装完Sun JDK之后需要运行下面的命令设置Sun java环境变量:
sudo update-java-alternatives --set java-6-sun

2. Android SDK
 从https://developer.android.com/studio/index.html这里获取Android SDK
 这里是Google的SDK[安装指南](https://developer.android.com/studio/index.html)。

注意:你可以选择下载ADT Bundle包添加到Android SDK工具包内,工具包包括Eclipse + ADT + NDK/CDT插件和Android Platform-tools,最新的Android平台和模拟器最新的Android系统镜像,这个是首次建立Android开发环境搭建的最好的选择。

如果你运行的是x64版本的Ubuntu操作系统,这时你需要安装ia32共享库,它可以在and64和ia64系统上进行安装。使用如下的命令:
 sudo apt-get install ia32-libs
基于红帽的系统使用如下的命令:
sudo yum install libXtst.i386
3. Android SDK组件
你需要安装如下的SDK组件:
  1. Android SDK 工具,版本号不低于20.
    老版本也可以工作,但我们不推荐。
  2. SDK平台 Android3.0(API 11)
    OpenCV的JavaAPI最低支持到Android2.2(API 8)。这也是提供的sample运行的最低API版本需求。查看AndroidManifest.xml 文件的 标签。但成功编译target标签应当设置在Android3.0(API 11)或者更高。这不会阻止它运行在Android2.2之上。
    这里写图片描述
    查看添加平台和安装包有助于安装/卸载SDK组件。
4. Eclipse IDE

查看Android SDK系统需求文档,Android SDK与Eclipse版本兼容列表。针对OpenCV 2.4.x版本我们推荐Eclipse3.7(indigo)或者Eclipse4.2(Juno)。使用他们做OpenCV开发在Windows或者Linux下都很好。
如果你还没有安装Eclipse,弄可以从它的官网得到。

5. ADT Eclipse 插件

####5. Eclipse ADT插件
这个介绍是从Android开发者网站拷贝而来,查看一些ADT发布版本的相关情况。
假设你的Eclipse IDE已经安装,如上所述下面的阶段是要去下载、安装ADT插件:

  1. 打开Eclipse, 选择Help-> install New Software…
  2. 点击 Add(右上交)。
  3. 在添加Repository对话框里填写“ADT Plugin”作为名称,并在下面的URL Location填写:https://dl-ssl.google.com/android/eclipse/
  4. 点击OK

    注意:
    如果你有无法获取的插件,可以尝试将URL里的http替换成https(https 安全因素方面的考虑)

  5. 在可用的软件对话框中,选择开发工具旁边的复选框,并点击Next。

  6. 在下一步窗口,你会看到将要被安装的工具列表,点击Next。

    注意:
    如果打算用过Android NDK开发native C++代码,不要忘记NDK插件也要打开。
    这里写图片描述

  7. 阅读并接收许可协议,然后点击完成。

    注意:如果你得到一个安全警告说,该软件的真实性或有效性不能建立,请单击“确定”。

8.当你全部安装完成,需要重新启动Eclipse。

本地C++开发

你需要如下的软件被安装就是为了使用C++开发Android:

1. Android NDK

你需要使用Android平台的Android本地开发工具(NKD)编译C++代码。
你可以从下载页面获得最新的NDK版本。安装AndroidNDK仅需要提取你电脑文件夹里的一些文档。这里有安装介绍

注意:在你阅读Android NDK docs文件夹里的Android NDK文档之前。主要关于构建Android NDK系统的文字在ANDROID-MK.html文件里面。一些附加信息可以在APPLICATION-MK.html、NDK-BUILD.html、CPU-ARM-NEON.html、CPLUSPLUS-SUPPORT.html PREBUILTS.html文件中找到

2. Eclipse CDT插件

如果选择了安装ADT插件里的NDK组件(见上图)你的Eclipse IDE应当已经有了CDT插件(那就是C/C++开发工具)。有几个通过NDK完整编译C++代码的方式。我们推荐基于Eclipse CDT(C/C++开发工具)的编译方式。

Android application structure

通常Android应用程序源码有下列的目录结构:

  • 项目根目录
    • jni/
    • libs/
    • res/
    • src/
    • AndroidManifest.xml
    • project.properties
    • …其他文件…

这里:

  • src目录包含应用程序的Java代码。
  • res目录包含应用程序的资源文件(images、xml文件、UI布局文件,等等)。
  • libs目录包含编译完成的库。
  • jni目录包含用于程序C/C++源码,通过NDK的编译脚本Android.mkApplication.mk产生本地库文件。
  • AndroidManifest.xml文件将应用程序必不可少的信息展示给Android系统,(包含应用程序的包名、组件需要的系统权限等等)。
    它能通过Eclipse向导、Android SDK里的工具进行创建。
  • project.properties是一个text型文件,它里面包含了目标Android平台和其他的编译详情。这个文件可以通过Eclipse或者通过SDK里面的android工具创建。

注意:
编译应用程序的C++部分需要AndroidManifest.xmlproject.properties `这两个文件,因为Android NDK构建系统依赖他们。如果这些文件不存在,编译项目里的Java部分将在C++部分之前。

Android.mkApplication.mk脚本

Android.mk脚本通常使用如下的结果:

 LOCAL_PATH := \f$(call my-dir)

 include \f$(CLEAR_VARS)
 LOCAL_MODULE    := <module_name>
 LOCAL_SRC_FILES := <list of .c and .cpp project files>
 <some variable name> := <some variable value>
 ...
 <some variable name> := <some variable value>

 include \f$(BUILD_SHARED_LIBRARY)

这个是可以将C++源码编译成应用程序,最小的Android.mk文件。注意前两行和最后一行是Android.mk强制性的。
通常Application.mk文件是可选的,但在使用OpenCV的项目的一些情况,当STL和异常在C++中使用,所以它也被创建。例如Application.mk文件:

 APP_STL := gnustl_static
 APP_CPPFLAGS := -frtti -fexceptions
 APP_ABI := all

注意:
我们建议设置APP_ABI:=为所有的目标。如果你指定明确的目标,使用armeabi针对ARMv5/ARMv6, armeabi-v7a针对ARMv7,x86针对Inter Atom,mips针对MIPS。

通过命令行编译应用程序本地部分

这里的标准方式是编译Android用于程序的C++部分:

警告

我们强烈的建议使用cmd.exe(标准Windows终端)替换Cygwin。 使用后者需要你绝对的确信,你所做的事情。Cygwin并不真正的支持,我们也不愿意去帮助您去解决由冲突产生的问题。因此当你有能力处理出现的结果的时候才能使用。

1.打开终端进入Android用于程序的根目录

cd <root folder of the project>/

2.运行下面的命令。

<path_where_NDK_is_placed>/ndk-build

注意:
在的Windows环境我们推荐使用标准Windows终端(cmd.exe)里的ndk-build.cmd,而不是使用Cygwin的shell脚本。
这里写图片描述

3.在执行了这个命令行之后,C++部分的源码被编译。

随后应用程序的Java部分也会被编译(利用Eclipse或者Ant工具);

注意:
可以对ndk-build设置一些编译参数:例子1: Verbose compilation
<path_where_NDK_is_placed>/ndk-build V=1
例子2:重新编译
<path_where_NDK_is_placed>/ndk-build -B

通过Eclipse编译应用程序本地部分 (CDT Builder)

在Eclipse中通过Android NDK完整的编译本地C++代码有多种可行的方式。我们推荐使用基于Eclipse CDT(C/C++开发工具)的编译方式。

重要步骤

OpenCV for Android开发包从2.4.2版本开始就带有CDT编译的预配值项目。对照自己的项目按照如下步骤操作。

1.定义NDKROOT环境变量数值包含你系统中的Android NDK路径(例如:”X:\Apps\android-ndk-r8” or “/opt/android-ndk-r8”)。

Windows系统一个环境变量可以通过我的电脑->属性->高级->环境变量。在
Window 7也可以在终端通过setx命令。
在Linux系统和Mac系统设置环境变量可以通过在"~/.bashrc"文件中追加一行“export VAR_NAME=VAR_VALUE”内容,注销后再进入即可。

注意:
也可以在Eclipse IDE里定义NDKROOT环境变量,但它需要为每个新创建的workspace目录进行设置。如果你认为这种方式好于设置系统的环境变量,那就打开你的Eclipse菜单 Windows-> Preferences->C/C++ ->Build ->Environment,点击Add…按钮并设置name为NDKROOT value设置为本地AndroidNDK的路径。你需要重新启动Eclipse来更新的修改。

2.打开Eclips并加载Android app项目到配置。
3.通过Eclipse菜单的New->Other->C/C++->Convert to a C/C++ Project 添加C/C++本地项目到Eclipse。

这里写图片描述
添加:
这里写图片描述

4. 设置项目转化。指定 “Project type” = Makefile project, “Toolchains” = Other Toolchain。

这里写图片描述

5.打开项目的ProPerties->C/C++ Build。取消默认编译命令,替换“Build command”中的“make”内容
"${NDKROOT}/ndk-build.cmd" on Windows,

"${NDKROOT}/ndk-build" on Linux and MacOS.

这里写图片描述

6.到Behaviour标签修改“Workbench build type”选择如下显示:

这里写图片描述

7.点击OK,并且确认在编译项目的时候nkd-build被成功调用。

这里写图片描述

8.如果你在Eclipse编辑器中打开C++源码文件,你会看到符号错误提示。额外的配置是很必要的,他们并不是真的错误。

这里写图片描述

9. 打开项目Properties->C/C++ General->path and Symbols为C++添加如下的Include路径。
 # for NDK r8 and prior:
 ${NDKROOT}/platforms/android-9/arch-arm/usr/include
 ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/include
 ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include
 ${ProjDirPath}/../../sdk/native/jni/include

 # for NDK r8b and later:
 ${NDKROOT}/platforms/android-9/arch-arm/usr/include
 ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include
 ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
 ${ProjDirPath}/../../sdk/native/jni/include

最后的路径应当修改为OpenCV4Android SDK的相对或者绝对路径。

这样Eclipse C++ 编辑器中的错误符号提示就会消失了。
这里写图片描述

调试和测试

这一段我们会提供一个易于实践的教程,如何去设置一个硬件设备的模拟器和调试Android项目。

AVD(Android Virtual Device)或许不是最方便测试一个OpenCV应用程序的方式,但它是一个最简单的配置。

  1. 假设您已经有了Android SDK并且Eclipse IDE已经被安装,在Eclipse打开Window->AVD Manager.
  2. 点击AVD Manager窗口中的New按钮。
  3. 创建一个新的Android虚拟设备,窗口内容将会让你选择一些新设备的属性,你的目标API level,SDK的大小等等。这里写图片描述
  4. 当你点击Create ADV按钮,在你的AVD管理器里面新的AVD将被设置成为有效。
  5. 点击Start开启设备,你会意识到AVD(模拟器)通常是要比硬件设备慢很多,所以你需要等几分钟。
  6. 在Eclipse IDE 常会或者debuging模式中选择Run->Run/Debug运行你的应用程序。设备选择器会让你在正在运行设备和开启一个新设备之间进行选择。

硬件设备

如果你有一个Android设备,你可以使用它来测试和调试你的应用程序。这种方式是非常真实的,所说它有点难搭建。你需要对Windows和Linux做一些修改才能让你的Android设备工作起来。Mac系统不需要修改。请参阅下面的小节配置硬件设备的详细信息。
你也可以在Android开发者官网咨询更多的信息。

Windows电脑主机
  1. 打开Android设备的USB debugging(在设置菜单)。
  2. 使用USB线将Android设备链接上你的电脑。
  3. 电器开始菜单右键点击电脑。选择管理菜单。在这里你或许需要管理员权限。
  4. 选择在左边的盘里选择设备管理并且可以找到一个未知设备。你可以通过拔下USB先在插上USB线的方式来查看在设备列表里闪现的设备那个是你的。这里写图片描述
  5. 你可以试着安装Google驱动而省去任何修改,右键点击未知设备,选择Properties menu list -> Details tab -> Update Driver按钮。这里写图片描述
  6. 选择浏览电脑设备软件。这里写图片描述
  7. 指定路径 /extras/google/usb_driver/ 。这里写图片描述 这里写图片描述
  8. 如果你得到提示安装未经验证的驱动程序和有关报告成功,你已经完成了USB设备的安装。这里写图片描述 这里写图片描述
  9. 否则(得到类似于上面的错误)进行下一步。这里写图片描述
  10. 再次在未知设备上点击右键,选择Properties->Details->Hardware ids并且拷贝相似行USB\VID_XXXX&PID_XXXX&MI_XX这里写图片描述
  11. 现在打开文件<Android SDK folder>/extras/google/usb_driver/android_winusb.inf。根据你的主机架构选择Google.NTx86或 Google.NTamd64中的一个。这里写图片描述
  12. 这里或许有你的设备信息或者你也可以手动添加一个。这里写图片描述
  13. 保存android_winusb.inf文件并且安装USB驱动。这里写图片描述 这里写图片描述 这里写图片描述
  14. 这个时候安装已经成功。这里写图片描述 这里写图片描述
  15. 将添加的未知设备注册为一个Android手机。这里写图片描述
  16. 在终端通过adb devices命令可以看到,USB设备的链接已经成功的被认证。这里写图片描述
  17. 现在,使用Eclipse打开Run->Run/Debug来运行你的应用程序。设备选择器会让你新的设备了。

Linux电脑主机

默认情况下Linux并不会认出一个Android设备,解决这个问题非常简单。在你的Ubuntu创建一个新的 /etc/udev/rules.d/51-android.rules配置文件,这个文件包含你的Android设备信息。你能找到一些Vender ID或者运行lsusb命令来浏览Android设备的VendorID。这是一个LG设备的例子:

 SUBSYSTEM=="usb", ATTR{idVendor}=="1004",  MODE="0666", GROUP="plugdev"

从新启动你的adb server,插入你的Android设备并执行adb devices命令。你将看到设备列表:
这里写图片描述

Mac电脑主机

没有修改需求,仅仅通过你的USB设备链接电脑,adb devices就可以查看设备信息。

下一步是什么

现在你已经拥有你的开发环境了,并记性了配置,你可以进行安装Opencv4AndroidSDK了。你会在OpenCV4Android SDK教程中学习到。

出处:http://docs.opencv.org/master/d9/d3f/tutorial_android_dev_intro.html

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值