本指南旨在幫助您快速學習Android開發(fā)基礎知識并設置工作環(huán)境。它是用Windows 7寫的,雖然它可以與Linux(Ubuntu),Mac OS X和Android SDK支持的任何其他操作系統(tǒng)一起使用。
如果您在徹底按照這些步驟后遇到任何錯誤,請隨時通過OpenCV Q&A論壇或者加入w3cschool官方群與我們聯(lián)系。我們將竭盡全力幫助您。
Android是由Google領導的開放手機聯(lián)盟開發(fā)的基于Linux的開源移動操作系統(tǒng)。有關詳細信息,請參閱Android教程。
Android的開發(fā)與其他平臺的開發(fā)顯著不同。所以在開始編程Android之前,我們建議您確保您熟悉以下主題:
如果您正在安裝一個干凈的環(huán)境,那么您可以嘗試NVIDIA發(fā)布的Tegra Android開發(fā)包(TADP)。
如果您是Android開發(fā)中的初學者,那么我們還建議您從TADP開始。
您需要安裝以下軟件才能開發(fā)適用于Java的Java:
sudo update-java-alternatives --set java-6-sun
2. Android SDK
從http://developer.android.com/sdk/index.html獲取最新的Android SDK
這是Google的SDK 安裝指南。
sudo apt-get install ia32-libs
對于基于Red Hat的系統(tǒng),以下命令可能會有所幫助:
sudo yum install libXtst.i386
3. Android SDK組件
您需要安裝以下SDK組件:
有關安裝/更新SDK組件的幫助,請參閱添加平臺和軟件包。
4. Eclipse IDE
檢查Android SDK系統(tǒng)要求文檔以獲取與Android SDK兼容的Eclipse版本列表。對于OpenCV 2.4.x,我們推薦使用Eclipse 3.7(Indigo)或Eclipse 4.2(Juno)。它們在Windows和Linux下都適用于OpenCV。
如果您沒有安裝Eclipse,您可以從官方網(wǎng)站獲取。
5. Eclipse的ADT插件
這些說明是從Android開發(fā)人員網(wǎng)站復制的,如有任何與ADT有關的問題,請查看。
假設您已安裝Eclipse IDE,請按照以下步驟下載并安裝ADT插件:
注意
如果您在獲取插件時遇到問題,請嘗試使用位置網(wǎng)址中的“http”,而不是“https”(出于安全考慮,首選使用https)。
注意
如果您還計劃使用Android NDK開發(fā)本機C ++代碼,請不要忘記啟用NDK插件安裝。
8. 閱讀并接受許可協(xié)議,然后單擊完成。
9. 安裝完成后,重新啟動Eclipse。
您需要安裝以下軟件才能在C ++中為Android開發(fā):
1、Android NDK
要編譯Android平臺的C ++代碼,您需要Android Native Development Kit(NDK)。
您可以從下載頁面獲取最新版本的NDK 。要安裝Android NDK,請將存檔提取到計算機上的某個文件夾。以下是安裝說明。
注意
在開始之前,您可以在該文件夾中閱讀Android NDK存檔中的官方Android NDK文檔docs/。關于使用Android NDK構建系統(tǒng)的主要文章在ANDROID-MK.html文件中。你可以在找到一些額外的信息APPLICATION-MK.html,NDK-BUILD.html文件和CPU-ARM-NEON.html,CPLUSPLUS-SUPPORT.html,PREBUILTS.html。
2、Eclipse的CDT插件
如果您選擇安裝Eclipse ADT插件的NDK插件組件(見上圖),您的Eclipse IDE應該已經(jīng)有CDT插件(也就是C / C ++開發(fā)工具)。有幾種可能的方式將Android NDK的C ++代碼的編譯整合到Eclipse編譯過程中。我們建議基于Eclipse CDT(C / C ++開發(fā)工具)Builder的方法。
通常Android應用程序的源代碼具有以下結構:
Where:
AndroidManifest.xml
和project.properties
文件來編譯應用程序的C ++部分。如果任何這些文件不存在,請在C ++部分之前編譯項目的Java部分。該腳本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)
這是Android.mk構建Android應用程序的C ++源代碼的最小文件。請注意,前兩行和最后一行都是強制性的Android.mk。
通常,該文件Application.mk是可選的,但是在使用OpenCV的項目中,當在C ++中使用STL和異常時,也應該創(chuàng)建它。文件示例Application.mk:
APP_STL:= gnustl_static
APP_CPPFLAGS:= -frtti -fexceptions
APP_ABI:= all
以下是編譯Android應用程序的C ++部分的標準方法:
警告
我們強烈推薦使用cmd.exe(標準Windows控制臺)而不是Windows上的Cygwin 。如果只有你絕對確定,你在做什么才能使用后者。Cygwin不是真正的支持,我們不大可能幫助你,萬一你遇到一些問題。所以,只有當你能夠自己處理后果時,才能使用它。
cd <root folder of the project>/
2. 運行以下命令
<path_where_NDK_is_placed>/ndk-build
3. 執(zhí)行該命令后,源代碼的C ++部分被編譯。
之后,可以(重新)編譯應用程序的Java部分(使用Eclipse或Ant構建工具)。
<path_where_NDK_is_placed> / ndk-build V = 1
示例2:重建所有
<path_where_NDK_is_placed> / ndk-build -B
有幾種可能的方式將Android NDK的本機C ++代碼的編譯整合到Eclipse構建過程中。我們建議基于Eclipse CDT(C / C ++開發(fā)工具)Builder的方法。
important
OpenCV for Android軟件包自版本2.4.2包含預配置的CDT構建器的示例項目。對于您自己的項目,請遵循以下步驟。
1、定義包含系統(tǒng)中Android NDK路徑的NDKROOT環(huán)境變量(例如“X:\\ Apps \\ android-ndk-r8”或“/ opt / android-ndk-r8”)。
在Windows上,可以通過我的電腦 - >屬性 - >高級 - >環(huán)境變量設置環(huán)境變量。在Windows 7上也可以在控制臺會話中使用setx命令。
在Linux和MacOS上,可以通過向"~/.bashrc"文件中添加“export VAR_NAME = VAR_VALUE”行來設置環(huán)境變量,并注銷然后再打開。
2、打開Eclipse并加載Android應用程序項目進行配置。
3、通過Eclipse菜單將C / C ++自然添加到項目中 - >其他 - > C / C ++ - >轉換為C / C ++項目。
和:
4、選擇要轉換的項目。指定“項目類型”= Makefile項目,“工具鏈”=其他工具鏈。
5、 打開項目屬性 - > C / C ++構建,取消選中使用默認構建命令,將“構建命令”文本替換為“make”
“$ {NDKROOT} /ndk-build.cmd”在Windows上,
在Linux和MacOS上的“$ {NDKROOT} / ndk-build”。
6、轉到行為選項卡并更改“工作臺構建類型”部分,如下所示:
7、按確定,確保在構建項目時成功調用ndk-build。
8、如果您在Eclipse編輯器中打開C ++源文件,您將看到語法錯誤通知。它們不是真正的錯誤,但需要額外的CDT配置。
9、打開項目屬性 - > C / C ++常規(guī) - >路徑和符號,并為** C ++ ** 添加以下包含路徑:
# 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 ++編輯器中的語法錯誤通知。
在本節(jié)中,我們將為您提供有關如何設置用于測試和調試Android項目的仿真器或硬件設備的易于遵循的說明。
AVD(Android虛擬設備)不太可能是測試與OpenCV相關的應用程序最方便的方法,但確定配置的最簡單的方法。
如果您有Android設備,可以使用它來測試和調試應用程序。這樣做更真實,雖然有點難以設置。您需要對Windows和Linux操作系統(tǒng)進行一些操作才能使用Android設備。Mac OS不需要額外的操作。有關在下面的子部分中配置硬件設備的詳細信息。
有關更多信息,您還可以咨詢官方的Android開發(fā)人員網(wǎng)站說明。
1、在Android設備上啟用USB調試(通過設置菜單)。
2、使用USB電纜將Android設備連接到PC。
3、轉到開始菜單,然后右鍵單擊計算機。在上下文菜單中選擇管理??赡軙竽峁┕芾頇嘞?。
4、在左窗格中選擇設備管理器,并在列表中找到未知設備。您可以嘗試拔下電源插頭,然后重新插上電源,以檢查列表中是否顯示您的確切設備。
5、嘗試運行安裝Google USB驅動程序,無需任何修改:右鍵單擊未知設備,選擇屬性菜單項 - >詳細信息選項卡 - >更新驅動程序按鈕。
6、選擇瀏覽計算機驅動程序軟件。
7、指定<Android SDK folder>/extras/google/usb_driver/
文件夾的路徑。
8、如果您得到安裝未經(jīng)驗證的驅動程序并報告成功的提示 - 您已完成USB驅動程序的安裝。
9、否則(得到如下所示的故障)按照下面的步驟。
10、再次右鍵單擊未知設備,選擇屬性 - >詳細信息 - >硬件標識,并復制行USB\VID_XXXX&PID_XXXX&MI_XX
。
11、現(xiàn)在打開文件<Android SDK folder>/extras/google/usb_driver/android_winusb.inf
。根據(jù)您的主機系統(tǒng)架構,選擇Google.NTx86或Google.NTamd64部分。
12、應該有您的設備的現(xiàn)有記錄,您需要手動添加一個。
13、保存android_winusb.inf
文件并嘗試重新安裝USB驅動程序。
14、這次安裝應該成功。
15、而一個未知的設備現(xiàn)在被認為是Android手機。
16、通過adb devices命令可以在控制臺中驗證成功的設備USB連接。
17、現(xiàn)在,在Eclipse中運行 - >運行/調試以常規(guī)或調試模式運行應用程序。設備選擇器將讓您在設備之間進行選擇。
默認情況下,Linux無法識別Android設備,但很容易解決此問題。在Ubuntu Linux上,您必須創(chuàng)建一個新的** / etc / udev / rules.d / 51-android.rules **配置文件,其中包含有關Android設備的信息。您可能會在這里找到一些供應商ID ,或執(zhí)行l(wèi)susb命令來查看已插入的Android設備的VendorID。這是LG設備的這樣一個例子:
SUBSYSTEM ==“usb”,ATTR {idVendor} ==“1004”,MODE =“0666”,GROUP =“plugdev”
然后重新啟動您的adb服務器(甚至更好地重新啟動系統(tǒng)),插入您的Android設備并執(zhí)行adb設備命令。您將看到附加設備的列表:
不需要任何操作,只需通過USB連接設備并運行adb設備來檢查連接。
現(xiàn)在,當您設置和配置開發(fā)環(huán)境時,您可能需要繼續(xù)安裝OpenCV4Android SDK。您可以在單獨的OpenCV4Android SDK教程中學習如何做到這一點。
更多建議: