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