(注意:本文是 OpenCV4Android "Introduction into Android Development" 這篇文章的翻譯,主要講解使用 Eclipse IDE 作為開發(fā)工具,搭建 SDK 和 NDK 的開發(fā)環(huán)境。目前 Android 開發(fā)官方推薦使用 Android Studio 來代替 Eclipse,并且停止了對 Eclipse 的繼續(xù)支持,所以這篇文章講解的內(nèi)容已經(jīng)過時,對依舊使用 Eclipse 的開發(fā)者仍有參考價值 )
Android 開發(fā)
本指南旨在幫助您快速學習 Android 開發(fā)環(huán)境的搭建。雖然 Android SDK 可以在 Linux(Ubuntu),Mac OS X和任何其他操作系統(tǒng)上使用,但這里假設你用的 Windows 7。如果在遵循這些步驟后仍然遇到錯誤,請通過 OpenCV4Android 討論組或 OpenCV QA 平臺與我們聯(lián)系。
前言
Android 是由 Google 領(lǐng)導的開放手機聯(lián)盟開發(fā)的基于 Linux 的開源移動操作系統(tǒng)。有關(guān)詳細信息,請參閱 Android 主頁。Android 開發(fā)與其他平臺開發(fā)有顯著的不同。因此,在開始為 Android 編程之前,我們建議您確保對下面的關(guān)鍵知識點已經(jīng)非常熟悉:
- Java 編程語言是 Android 平臺的主要開發(fā)技術(shù)。您可以在 Oracle文檔 上找到 Java 相關(guān)的資料。
- Java Native Interface (JNI)是一種在 Java 虛擬機中運行 Native 代碼的技術(shù)。您可以在 Oracle文檔 上找到有用資料
- Android Activity 及其生命周期,這是一個非常重要的 Android API 類
- OpenCV 開發(fā)還需要一些 Android Camera 相關(guān)的知識
Android 開發(fā)環(huán)境快速設置
如果你想要快速自動的搭建 Android 開發(fā)環(huán)境,你可以嘗試由 NVIDIA 發(fā)布的 Tegra Android 開發(fā)包(TADP)。TADP 解壓完成后,將自動配置所有環(huán)境設置,然后您就可以跳過本指南的其余部分直接開始開發(fā)了。如果你是一個 Android 開發(fā)初學者,我們建議你從 TADP 開始。
Android開發(fā)環(huán)境手動設置
?注意:Eclipse 已經(jīng)過時,用 Android Studio 代替
Java 開發(fā)環(huán)境的配置
您需要安裝以下軟件才可以用 Java 來開發(fā) Android 應用:
Eclipse 版本:
- Sun JDK 6(也可以是Sun JDK 7和8)
- Android SDK
- Android SDK components
- Eclipse IDE
- ADT plugin for Eclipse
Android Studio 版本:
- Sun JDK 6(也可以是Sun JDK 7和8)
- Android Studio
C++ Native 開發(fā)環(huán)境配置
您需要安裝以下軟件才可以用 C++ 來開發(fā) Android 應用:
Eclipse 版本:
- Android NDK
- CDT plugin for Eclipse
Android Studio 版本:
- Android NDK
- LLDB
- CMake
Android 應用程序項目的結(jié)構(gòu)
Eclipse 版本:
- rootfolderoftheproject/
- jni/
- libs/
- res/
- src/
- AndroidManifest.xml
- project.properties
- ...otherfiles...
- src 文件夾包含應用程序的Java代碼
- res 文件夾包含應用程序的資源(圖像,描述UI布局的xml文件等)
- libs 文件夾將在成功構(gòu)建之后包含 native 庫和 jar 包
- jni 文件夾包含 C / C++ 應用程序源代碼和NDK的構(gòu)建腳本 Android.mk 和Application.mk,這些將生成 Native 庫
- AndroidManifest.xml 文件提供關(guān)于應用程序到 Android 系統(tǒng)的基本信息(應用程序名稱,主應用程序包的名稱,應用程序組件,所需的權(quán)限等)。它可以使用 Eclipse 向?qū)Щ?Android SDK 中的 Android 工具創(chuàng)建。
- project.properties 是一個包含目標 Android 平臺和其他構(gòu)建詳細信息的文本文件。此文件由 Eclipse 生成或可以使用 Android SDK 中包含的 Android 工具創(chuàng)建。
Android Studio 版本:
Android.mk 和 Application.mk 腳本
Android.mk 腳本文件通常如下面結(jié)構(gòu)
LOCAL_PATH := $(call my-dir)
include $(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 $(BUILD_SHARED_LIBRARY)
這是構(gòu)建 android 應用 c++ 源碼需要的最小的 Android.mk 文件,注意前兩行和最后一行對于任何 Android.mk 都是必需的。
通常 Application.mk 文件是可選的,但是當在項目種使用了 OpenCV ,在 C++ 中使用 STL 和異常時,也應該創(chuàng)建它。文件 Application.mk 的示例:
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := all
從命令行構(gòu)建應用程序 Native 部分
下面是編譯 Android 中 C++ 部分代碼的標準方式
- 打開命令行,來到 Android 項目的根目錄
cd <root folder of the project>/
- 運行下面命令
<path_where_NDK_is_placed>/ndk-build
- 執(zhí)行上面的命令后 C++ 部分的源碼就會被編譯
從 Eclipse 構(gòu)建應用程序 Native 部分(CDT Builder)
有許多種方式可以把 NDK 編譯 Native C++ 代碼的功能集成到 Eclipse 的構(gòu)建器里面,我們推薦使用 EclipseCDT Builder。
定義 NDKROOT 環(huán)境變量包含 Android NDK 在系統(tǒng)中的路徑(比如"X:\Apps\android-ndk-r8"or"/opt/android-ndk-r8" )
重啟 Eclipse
打開 Eclipse ,加載 Android app 項目
-
通過 Eclipse 菜單
New -> Other -> C/C++ -> Convert to a C/C++ Project給項目添加 c/c++ 性質(zhì)
轉(zhuǎn)換項目為 c/c++類型1
轉(zhuǎn)換項目為 c/c++類型2 選中要轉(zhuǎn)的項目,設置 Project type” =Makefileproject, “Toolchains” =OtherToolchain

- 打開
Project Properties -> C/C++ Build,不要勾選Usedefaultbuildcommand,在 Windows 上設置Build command為 "${NDKROOT}/ndk-build.cmd",在 Linux 和 MacOS 上設置為 "${NDKROOT}/ndk-build"

- 打開 Behaviour 標簽按下圖設置“Workbench build type”

- 點擊 ok 保存配置

- 如果你在 Eclipse 編輯器中打開 c/c++ 源碼文件,你會看到很多語法錯誤通知,它們不是真正的錯誤,你還需要對 CDT 進行配置

- 打開"Project Properties -> C/C++ General -> Paths and Symbols",為 C++ 添加下列 path
# 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

調(diào)試和測試
在本節(jié)中,我們將為您介紹如何設置 Android 模擬器或硬件設備,來測試和調(diào)試 Android 項目。
AVD
創(chuàng)建 Android 模擬器,省略......
硬件設備
如果您有 Android 設備,可以使用它來測試和調(diào)試應用程序。這種方式更加真實,雖然有點難以設置。您需要對 Windows 和 Linux 操作系統(tǒng)進行一些設置才能使用 Android設備。 Mac OS 不需要任何額外的操作。有關(guān)配置硬件設備的詳細信息,請參閱下面的小節(jié)。
您還可以參考 Android 官方開發(fā)者網(wǎng)站的說明來獲取更多信息。
Windows
windows 下 Android 設備驅(qū)動的安裝,省略......
Linux
省略......
Mac OS
省略......

