Android 开发简介

  本文旨在帮助大家学习Android开发基础和快速配置工作环境。文档以Windows 7配置为基础,但是同样也适用于Linux(Ubuntu),Mac OS X等支持Android SDK的操作系统。

  如果你完成了下面的步骤后还是不幸的遇到了问题,请通过OpenCV4Android 讨论组或者OpenCV 的Q&A forum联系我们,我们将尽我们最大努力帮你解决问题。

一、Preface (前言)

   Android是一个基于Linux内核的开源操作系统,它是由Google公司领导的开放手机联盟(Open Handset Alliance)组织开发的系统。详细信息请访问Android的官网

  Android开发明显不同于其它平台的软件开发,在开发Android程序前,我们强烈建议你熟悉下面的关键知识点:

    1. Java编程语言是主要的Android操作系统的开发语言,你可以访问Oracle关于Java的介绍。

    2. Java Native Interface (JNI) (Java本地接口)是一项可以让本地代码在Java virtual machine(Java虚拟机)上的运行的技术。同样,你也可以访问Oracle关于JNI的介绍。

    3. Android Activity (Android 活动)和它的生命周期,这对理解Android API类非常重要。

    4. OpenCV开发显然需要了解一些关于Android Camera 特有的知识。

二、 Android开发快速环境配置

  如果你是从头开始配置的话,你可以尝试由NVIDIA发布的Tegra Android Development Pack (TADP)。

Note:从V2.0版本后,TADP开发包已经包含了OpenCV for Tegra SDK,这就是我们常用的OpenCV4Android SDK,只不过它加入了一些Tegra特有的东西。

  • 安装至少需要1.6Gb的磁盘空间。
  • TADP将会下载Android SDK平台和Android SDK的谷歌服务,所以请联网下载(墙内的可能还要FQ)。
  • 在安装结束的时候TADP可能会请求你flash your development kit,如果你没有Tegra Development Kit的话就忽略它吧。
  • (UNIX) TADP在安装过程中将会请求你root权限。所以你必须是sudo组的成员。

三、Android开发手动环境配置

(一)Java开发

  为了在Java环境下开发Android必须安装下面的软件:

    1.Sun JDK 6 (Sun JDK 7 也可以)

    2.Android SDK

    3.Android SDK components

    4.Eclipse IDE

    5.ADT plugin for Eclipse

详细的下载和按照过程请访问原文。

(二)C++本地开发

为了可以用C++开发Android需要安装下面的软件:

   1. Android NDK

  为了在Android平台下编译C++代码需要Android Native Development Kit (NDK)(本地开发包)。

  可以从这下载最新的NDK版本,安装Android NDK只需解压到电脑的某个文件夹就可以了。

Note:可以先阅读官方的Android NDK文档,文档在NDK库docs/目录下。关于使用NDK的主要文档是ANDROID-MK.html文件。你也可以访问APPLICATION-MK.html, NDK-BUILD.html,和CPU-ARM-NEON.html, CPLUSPLUS-SUPPORT.html, PREBUILTS.html去了解一些额为的信息。

   2.CDT plugin for Eclipse

  详细的下载和按照过程请访问原文。

四、Android 程序结构

  通常情况下,Android程序的源代码有如下的结构:

  • 项目根目录/

    • jni/
    • ibs/
    • res/
    • src/
    • AndroidManifest.xml
    • project.properties
    • ... 其它文件...

  其中:

    • src 文件夹包含了程序的Java代码
    • res 文件夹包含了程序的资源(图片,xml文件等),
    • lib 文件夹包含成功构建(build)后的本地(native)库文件,
    • jni 文件夹包含C/C++程序源代码和NDK的构建脚本Android.mk和Application.mk,
    • AndroidManifest.xml文件表述了Android程序的系统信息(程序名,主程序的包名,程序组件,授权等)。使用Eclipse向导或者Android SDK 的android 工具可以创建该文件。
    • Project.properties 是一个文本文件,它包含了目标Android平台和其它构建细节的信息。这个文件有Eclipse或者android工具生产。

Note:AndroidManifest.xml 和project.properties文件是编译C++部分不可缺少的,因为Android NDK构建系统依赖于它们,如果它们中的任何一个不存在的话,将会在编译C++部分钱先编译Java部分。

五、Android.mk and Application.mk 脚本

  脚本Android.mk通常有下面的结构:

 1 LOCAL_PATH := $(call my-dir)
 2
 3 include $(CLEAR_VARS)
 4 LOCAL_MODULE    := <module_name>
 5 LOCAL_SRC_FILES := <list of .c and .cpp project files>
 6 <some variable name> := <some variable value>
 7 ...
 8 <some variable name> := <some variable value>
 9
10 include $(BUILD_SHARED_LIBRARY)

  这是一个最简化的Android.mk,它可以构建Android程序的C++源代码,需要注意的是前两行和最后一行是任何Android.mk必不可少的。

  通常情况下,Application.mk是可选的,但是在使用OpenCV,STL或者C++异常的时候,需要创建它,Application.mk的一般结构如下:

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

Note:我们建议为所有的该文件设置APP_ABI:=all,如果你想规定具体的目标,可以为ARMv5/ARMv6使用armeabi,为ARMv7使用armeabi-v7a,为Intel内核使用x86,为MIPS使用mips。(译注:上面提到的都是程序的二进制接口abi,因为C/C++是面向CPU编程的,所以构建时必须指定你所用机器的CPU型号,当前绝大多数Android手机都是armeabi-v7a CPU架构)。

六、使用命令行构建程序本地代码

  这是一个标准的方法编译Android程序的C++本地代码:

警告:我们强烈建议使用cmd.exe(标准控制台)而不是Windows上的Cygwin。只有在你非常明确你的操作时你才可以使用后者。

  1. 打开控制台,进入Android应用程序的根目录。

cd <root folder of the project>/

  2. 运行下面的命令

<path_where_NDK_is_placed>/ndk-build

Note:在Windows上,我们建议在标准控制台(cmd.exe)上使用ndk-build.cmd,而不是bash脚本Cygwin shell。

  3. 执行了上面的C++代码后,源代码就被编译了。之后程序的Java部分可以被编译了。

Note:ndk-build中的一些参数可以设置:

例1:Verbose compilation

<path_where_NDK_is_placed>/ndk-build V=1

例2:Rebuild all

<path_where_NDK_is_placed>/ndk-build -B

七、使用Eclipse构建程序本地代码

  有几种可能的方法配置本地C++代码的集成编译环境,它们都是把Android的NDK集成到Eclipse的构建过程中。我们建议使用基于Eclipse CDT Builder的方法。

  从版本2.4.2后OpenCV for Android 包已经包含了样例工程的预配置的CDT Builders。对于你自己的项目你应该按照下面的步骤设置:

  1. 定义NDKROOT环境变量,设置路径名为你系统Android NDK的路径。(例如,"X:\\Apps\\android-ndk-r8" 或者 "/opt/android-ndk-r8")。

Note:也可以在Eclipse中定义NDKROOT环境变量,但是当改变workspace的时候就需要重新设置,如果你更喜欢这种方式来配置环境变量的话,打开菜单Window -> Preferences -> C/C++ -> Build -> Environment,按下ADD...按钮,然后设置变量名为NDKROOT,设置变量值为你的本地Android NDK路径。

  2. 重启Eclipse应用更改。

  3. 打开Eclipse加载Android程序工程。

  4. 通过菜单New -> Other -> C/C++ -> Convert to a C/C++ Project 为工程添加C/C++特性。

  5. 选择需要转换的项目,指定“Project type” = Makefile project, “Toolchains” = Other Toolchain。

  6. 打开Project Properties -> C/C++ Build 。取消使用默认的构建命令,把“Build command” 内容从"make" 改为:

"${NDKROOT}/ndk-build.cmd"  //在Windows上

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

  7. 切换到Behaviour选项卡,按照下面的显示来操作“ Workbench build type” 部分。

  8. 按OK 确保ndk-build 能够被成功调用。

  9. 如果在Eclipse编辑器打开C++源文件,将会发现语法错误标注。这些不是正真的错误,设置CDT可以消除这些错误。

  10. 打开Project Properties -> C/C++ General -> Paths and Symbols。然后为C++增加下面的Include 路径。

1 # for NDK r8 and prior:
2 ${NDKROOT}/platforms/android-9/arch-arm/usr/include
3 ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/include
4 ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include
5 ${ProjDirPath}/../../sdk/native/jni/includ
# 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的绝对路径或者相对路径。这样就可以消除语法错误标记。

八、调试和测试

  这部分将会学到怎样设置模拟器或硬件设备来测试和调试Android应用程序。

(一)Android虚拟设备AVD

(二)硬件设备(手机)

  上面两部分比较简单,详细可参考原文。

(译注:这部分可以简化,其实按照一个360手机助手就可以了)

九、下一步该做什么?

  现在,你已经配置好了Android开发的环境,可以继续按照OpenCV4Android SDK。你可以在独立的OpenCV4Android SDK教程中学习具体怎样去做。

时间: 2024-08-01 10:43:42

Android 开发简介的相关文章

Android开发简介

一.通信技术 1.1G:模拟制式 只能进行语音通话. 2.2G:GSM, CDMA 收发短信和邮件. 3.2.5G :GPRS, EDGE,访问wap网络数据.(图片, 壁纸, 文字信息). 4.3G:WCDMA(联通), CDMA2000(电信), TD-SCDMA(移动),发微博, 查看高清图片, 小电影.. 5.3.5G :HSDPA, HSDPA+. 6.4G:TD-LTE ,下载速度: 50Mb/s  = 6MB/s,上传速度: 10Mb/s = 1.2MB/s. 二.Android系

【Android应用开发】Android Studio 简介 (Android Studio Overview)

一. Intelij IDEA 环境简介 Android Studio 来源 : Android Studio 是 Intelij IDEA 的免费版本 + Android SDK 集成的; -- Intelij 文档参考 : https://www.jetbrains.com/idea/help/intellij-idea.html ; 1. Intelij 与 Eclipse 区别 (1) Intelij 与 Eclipse 对应关系 Android Studio 与 Eclipse 对应

4412开发板Android教程——Android平台简介

本文转自迅为开发板论坛:http://www.topeetboard.com Android和IOS Android的历史 Android公司 2005年Google收购成立22个月的Android公司 Android操作系统 2007年正式展示Android操作系统 2007年11月,Google与84家硬件制造商.软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统. 第一部Android智能手机发布于2008年10月 2011年第一季度,Android在全球的市场份额首次超

(转) Android开发性能优化简介

作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以需要开发人员更加专心去实现和优化你的代码了.选择合适的算法和数据结构永远是开发人员最先应该考虑的事情.同时,我们应该时刻牢记,写出高效代码的两条基本的原则:(1)不要做不必要的事:(2)不要分配不必要的内存. 我从去年开始接触Android开发,以下结合自己的一点项目经验,同时参考了Google的优

Android开发环境搭建简介

Android的开发工具,可以使用Eclipse,Idea,Android Studio,其中Eclipse是开源中国大部分使用的IDE,Idea是号称最好用的开发工具,有很多用处,Android Studio是基于Idea社区版开发的深度修改的适合Android开发的google官方推荐的IDE,具体教程我就不说了,baidu一下一大堆,我用了Eclipse用了一年了吧,最近转用Studio,不要问为什么,程序员不就是喜欢折腾嘛!因此,本系列相关内容都是基于Studio的. 本系列不是入门教程

ArcGIS Runtime for Android开发教程V2.0(1)基本概念

原文地址: ArcGIS Runtime for Android开发教程V2.0(1)基本概念 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8113183   1.基本概念 1.1 Android简介         2007年11月,Google推出移动操作系统Android,并宣称Android是首个为移动终端打造的真正开放和完整的移动操作系统.自此,基于And

Android开发入门系列

<1>第一章:java简介- 掌握Java语言基础知识- 理解面向对象的编程思想- 运用Java编写简单的程序- 运用JDBC编写数据库访问程序 本章链接:http://pan.baidu.com/s/1i39OUO1 <2>第二章:Java语言基础      - 理解数据类型       - 掌握运算符       - 掌握数组       - 运用控制流语句 本章链接:(上)http://pan.baidu.com/s/1o6qHOQu(下)http://pan.baidu.c

Android开发艺术探索——第二章:IPC机制(上)

Android开发艺术探索--第二章:IPC机制(上) 本章主要讲解Android的IPC机制,首先介绍Android中的多进程概念以及多进程开发模式中常见的注意事项,接着介绍Android中的序列化机制和Binder,然后详细的介绍Bundle,文件共享,AIDL,Messenger,ContentProvider和Socker等进程间通讯的方法,为了更好的使用AIDL进行进程间通讯,本章引入了Binder连接池的概念,最后,本章讲解各种进程间通信方式的优缺点和使用场景,通过本章,可以让读者对

【转】Android开发工具--android-studio-bundle-141.2288178

原文网址:http://www.androiddevtools.cn/ AndroidDevTools简介 Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程.Android设计规范,免费的设计素材等. 欢迎大家推荐自己在Android开发过程中用的好用的工具.学习开发教程.用到设计素材,欢迎Star.Fork ?. 如果你对翻译英文的Android开发技术文章