1. 程式人生 > >Android NDK開發環境配置

Android NDK開發環境配置

第一次接觸Android NDK開發,參考了兩篇文章,順利完成了NDK開發環境的配置:

http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html

http://www.cnblogs.com/leehongee/p/3385816.html

 一、NDK產生的背景

  Android平臺從誕生起,就已經支援C、C++開發。眾所周知,Android的SDK基於Java實現,這意味著基於Android SDK進行開發的第三方應用都必須使用Java語言。但這並不等同於“第三方應用只能使用Java”。在Android SDK首次釋出時,Google就宣稱其虛擬機器Dalvik支援JNI程式設計方式,也就是第三方應用完全可以通過JNI呼叫自己的C動態庫,即在Android平臺上,“Java+C”的程式設計方式是一直都可以實現的。

  不過,Google也表示,使用原生SDK程式設計相比Dalvik虛擬機器也有一些劣勢,Android SDK文件裡,找不到任何JNI方面的幫助。即使第三方應用開發者使用JNI完成了自己的C動態連結庫(so)開發,但是so如何和應用程式一起打包成apk併發布?這裡面也存在技術障礙。比如程式更加複雜,相容性難以保障,無法訪問Framework API,Debug難度更大等。開發者需要自行斟酌使用。

  於是NDK就應運而生了。NDK全稱是Native Development Kit。

  NDK的釋出,使“Java+C”的開發方式終於轉正,成為官方支援的開發方式。NDK將是Android平臺支援C開發的開端。

二、為什麼使用NDK

  1.程式碼的保護。由於apk的java層程式碼很容易被反編譯,而C/C++庫反匯難度較大。

  2.可以方便地使用現存的開源庫。大部分現存的開源庫都是用C/C++程式碼編寫的。

  3.提高程式的執行效率。將要求高效能的應用邏輯使用C開發,從而提高應用程式的執行效率。

  4.便於移植。用C/C++寫得庫可以方便在其他的嵌入式平臺上再次使用。

三、NDK簡介

       1.NDK是一系列工具的集合

       NDK提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,並能自動將so和java應用一起打包成apk。這些工具對開發者的幫助是巨大的。

NDK集成了交叉編譯器,並提供了相應的mk檔案隔離CPU、平臺、ABI等差異,開發人員只需要簡單修改mk檔案(指出“哪些檔案需要編譯”、“編譯特性要求”等),就可以創建出so。

NDK可以自動地將so和Java應用一起打包,極大地減輕了開發人員的打包工作。

       2.NDK提供了一份穩定、功能有限的API標頭檔案宣告

       Google明確宣告該API是穩定的,在後續所有版本中都穩定支援當前釋出的API。從該版本的NDK中看出,這些API支援的功能非常有限,包含有:C標準庫(libc)、標準數學庫(libm)、壓縮庫(libz)、Log庫(liblog)。

四、NDK開發環境的搭建

1.下載安裝Android NDK

2.下載安裝cygwin

  由於NDK編譯程式碼時必須要用到make和gcc,所以你必須先搭建一個linux環境, cygwin是一個在windows平臺上執行的unix模擬環境,它對於學習unix/linux操作環境,或者從unix到windows的應用程式移植,非常有用。通過它,你就可以在不安裝linux的情況下使用NDK來編譯C、C++程式碼了。下載地址:http://www.cygwin.com

  1)然後雙擊執行吧,執行後你將看到安裝嚮導介面。

  2)點選下一步,此時讓你選擇安裝方式:

  • Install from Internet:直接從Internet上下載並立即安裝(安裝完成後,下載好的安裝檔案並不會被刪除,而是仍然被保留,以便下次再安裝)。
  • Download Without Installing:只是將安裝檔案下載到本地,但暫時不安裝。
  • Install from Local Directory:不下載安裝檔案,直接從本地某個含有安裝檔案的目錄進行安裝。

  3)選擇第一項,然後點選下一步。

  4)選擇要安裝的目錄,注意,最好不要放到有中文和空格的目錄裡,似乎會造成安裝出問題,其它選項不用變,之後點下一步:

  5)上一步是選擇安裝cygwin的目錄,這個是選擇你下載的安裝包所在的目錄,預設是你執行setup.exe的目錄,直接點下一步就可以:

  6)此時你共有三種連線方式選擇:

  • Direct Connection:直接連線。
  • Use IE5 Settings:使用IE的連線引數設定進行連線。
  • Use HTTP/FTP Proxy:使用HTTP或FTP代理伺服器進行連線(需要輸入伺服器地址、埠號)。

  使用者可根據自己的網路連線的實情情況進行選擇,一般正常情況下,均選擇第一種,也就是直接連線方式。然後再點選“下一步”。

  7)這是選擇要下載的站點,選擇後點下一步。

  8)此時會下載載入安裝包列表

  9)Search是可以輸入你要下載的包的名稱,能夠快速篩選出你要下載的包。那四個單選按鈕是選擇下邊樹的樣式,預設就行,不用動。View預設是Category,建議改成full顯示全部包再查,省的一些包被隱藏掉。左下角那個複選框是是否隱藏過期包,預設打鉤,不用管它就行,下邊開始下載我們要安裝的包吧,為了避免全部下載,這裡列出了後面開發NDK用得著的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc- g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12個包

  10)然後開始選擇安裝這些包吧,點skip,把它變成數字版本格式,要確保Bin項變成叉號,而Src項是原始碼,這個就沒必要選了。

  11)下面測試一下cygwin是不是已經安裝好了。

      執行cygwin,在彈出的命令列視窗輸入:cygcheck -c cygwin命令,會打印出當前cygwin的版本和執行狀 態,如果status是ok的話,則cygwin執行正常。

      然後依次輸入gcc –version,g++ --version,make –version,gdb –version進行測試,如果都打印出版本資訊和一些描述資訊,則cygwin安裝成功!

3.配置 NDK 環境變數

  a.首先找到 cygwin 的安裝目錄,找到一個 home\< 你的使用者名稱 >\.bash_profile 檔案,我的是:E:\cygwin\home\Administrator\.bash_profile , ( 注意:我安裝的時候我的 home 資料夾下面什麼都沒有,解決 的辦法:首先開啟環境變數,把裡面的使用者變數中的 HOME 變數刪掉,在 E:\cygwin\home 資料夾下建立名為Administrator 的資料夾(是使用者名稱),然後把 E:\cygwin\etc\skel\.bash_profile 拷貝到該資料夾下 ) 。

  b.開啟 bash_profile 檔案,新增 NDK=/cygdrive/< 你的碟符 >/<android ndk 目錄 > 例如:

      NDK=/cygdrive/e/android-ndk-r5

      export NDK

  NDK 這個名字是隨便取的,為了方面以後使用方便,選個簡短的名字,然後儲存

  c.開啟 cygwin ,輸入 cd $NDK ,如果輸出上面配置的 /cygdrive/e/android-ndk-r5 資訊,則表明環境變數設定成功了。

4.用 NDK 來編譯程式   

  a.現在我們用安裝好的 NDK 來編譯一個簡單的程式吧,我們選擇 ndk 自帶的例子 hello-jni ,我的位於E:\android-ndk-r5\samples\hello-jni( 根據你具體的安裝位置而定 ) ,

  b.執行 cygwin ,輸入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,進入到 E:\android-ndk-r5\samples\hello-jni 目錄。

  c.輸入 $NDK/ndk-build ,執行成功後,它會自動生成一個 libs 目錄,把編譯生成的 .so 檔案放在裡面。 ($NDK是呼叫我們之前配置好的環境變數, ndk-build 是呼叫 ndk 的編譯程式 )

  d.此時去 hello-jni 的 libs 目錄下看有沒有生成的 .so 檔案,如果有,你的 ndk 就執行正常啦!

5.在 eclipse 中整合 c/c++ 開發環境

  a.裝 Eclipse 的 C/C++ 環境外掛: CDT ,這裡選擇線上安裝。  首先登入 http://www.eclipse.org/cdt/downloads.php ,找到對應你 Eclipse 版本的 CDT 外掛 的線上安裝地址。

  b.然後點 Help 選單,找到 Install New Software 選單

  c.點選 Add 按鈕,把取的地址填進去,出來外掛列表後,選 Select All ,然後選擇下一步即可完成安裝。

  d.安裝完成後,在 eclispe 中右擊新建一個專案,如果出現了 c/c++ 專案,則表明你的 CDT 外掛安裝成功啦!

6.配置 C/C++ 的編譯器

  a.開啟 eclipse ,匯入ndk 自帶的hello-jni 例子,右鍵單擊專案名稱,點選 Properties ,彈出配置介面,之後再點選 Builders ,彈出專案的編譯工具列表,之後點選 New,新新增一個編譯器,點選後出現新增介面,選擇 Program ,點選 OK。

  b.出現了新增介面,首先給編譯配置起個名字,如: C_Builder,設定 Location 為 < 你 cygwin 安裝路徑 >\bin\bash.exe 程式,例:E:\cygwin\bin\bash.exe ,設定Working Directory為<你 cygwin 安裝路徑 >\bin 目錄,例如: E:\cygwin\bin,設定 Arguments 為 --login -c "cd /cygdrive/e/android-ndk-r5/samples/hello-jni && $NDK/ndk-build"

  上面的配置中 /cygdrive/e/android-ndk-r5/samples/hello-jni 是你當前要編譯的程式的目錄, $NDK 是之前配置  的 ndk 的環境變數,這兩個根據你具體的安裝目錄進行配置,其他的不用變, Arguments 這串引數實際是  給 bash.exe 命令列程式傳引數,進入要編譯的程式目錄,然後執行 ndk-build 編譯程式

  c.接著切換到 Refresh 選項卡,給 Refresh resources upon completion 打上鉤

  d.然後切換到 Build Options 選項卡,勾選上最後三項

  e.之後點選 Specify Resources 按鈕,選擇資源目錄,勾選你的專案目錄即可

  f.最後點選 Finish,點選 OK 一路把剛才的配置都儲存下來,注意:如果你配置的編譯器在其它編譯器下邊,記得一定要點 Up 按鈕,把它排到第一位,否則 C 程式碼的編譯晚於Java程式碼的編譯,會造成你的 C 程式碼要編譯兩次才能看到最新的修改。

  g.編譯配置也配置完成啦,現在來測試一下是否可以自動編譯呢,開啟專案 jni 目錄裡的 hello-jni.c 檔案把提示 Hello from JNI! 改成其他的文字:如: Hello , My name is alex. ,然後再模 擬器中執行你的程式,如果模擬器中顯示了你最新修改的文字,那麼 Congratulations !你已經全部配置成功啦!

     我在執行程式的時候報錯: ./usr/bin/bash: /cygdrive/d/android-ndk-r7: is a directory。問題原因: 說明目錄有空格,改成一個沒有空格的目錄就行


相關推薦

Android NDK開發環境配置

第一次接觸Android NDK開發,參考了兩篇文章,順利完成了NDK開發環境的配置: http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html http://www.cnblogs.com/leeh

[Android]NDK開發環境配置與JNI開發

本文的目標是實現NDK開發環境的配置以及學習JNI開發流程。 1.環境配置 本文的開發環境為win10 64位+Eclipse+Android ADT+NDK+CDT。 2.安裝: 這裡只介紹NDK和CDT的安裝。 2.2配置系統的環境變數

Android ndk 開發環境配置與除錯(linux)

開發環境配置 一、 Android NDK: 集成了android交叉編譯器,針對不同版本android平臺提供了相應的gcc、g++、ndk-build、ndk-gdb等一系列編譯和除錯工具。 安裝ndk: 安裝包選擇: 選擇安裝包需要注意幾點: 1、  Andr

windows下 android studio 的NDK開發環境配置(1)(2)

參考博主文章連結: 開發環境:  windows10  AS2.1.2 首先安裝NDK,  安裝完後,新建一個空專案。    點選下一步,知道新建一個新專案。 新建好的專案如下:  檢測local.properties 檔案裡面是否有ndk的路徑,沒有加上。

Android學習筆記之:NDK開發環境配置

   NDK 即Native Development Kit,因此又被Google稱為“NDK”。 1,提高程式的效能:把需要高效能的應用邏輯使用C開發, 2,程式程式碼進行保護:因為反編譯C/C++

android studio NDK開發環境配置

在studio還未出來之前,eclipse開發jni除了需要下載ndk之外還要下載編譯工具,studio已經集成了ndk編譯外掛,因此只需要下載ndk後稍微設定下就可以進行jni開發了,以下是本人配置的詳細過程,供大家參考,歡迎拍磚。 首先下載NDK連結:http://we

Mac os x環境配置 Android ndk 開發環境(eclipse篇)

1.請確保安卓環境已經存在 3. 配置 .bash_profile 開啟終端,輸入命令 pico .bash_profile 首先 export PATH=${PATH}:/Users/Malone/Documents/android-ndk-r13b

Android Studio開發環境配置以及相關說明

behavior 三十五 alt port enter img 截圖 common ESS 版權聲明:本文為HaiyuKing原創文章,轉載請註明出處! 前言 這裏簡單記錄下在開發的時候使用的Android Studio開發環境版本以及相關註意事項。 一般來講,每隔一

ubuntu14.04搭建Android-NDK開發環境

1.建立Android平臺工作空間 mkdir AndroidWorkSpace 2.進入Android平臺工作空間,建立NDK工具目錄 cd AndroidWorkSpace mkdir NDK_Tools 3.獲取android-ndk-r10b 下載:wget ht

Android開發(一)——Android-Studio 開發環境配置

第一步:下載Android-Studio 地址1:https://developer.android.com/studio/index.html?hl=zh-cn第二步:安裝JDK和配置環境變數 由於我下載Android-Studio的版本JDK需要在8.0版本以上,所以如果

Android開發Android-Studio 開發環境配置

今天給大家帶來一篇Android開發的文章,這也正是督促我自己學習安卓開發的一個方式,本文作為開篇文章,就很簡單的給大家演示下Android-Studio開發環境的配置步驟;目前大家在安卓開發上用的最多的可能就是Android-Studio了,在我讀大學的時候聽

Unity Android遊戲開發環境配置

1. 瞭解到Unity Android遊戲打包的位置    進入Unity主介面 展開左上角的File 點選BuildSettings進入到以上介面     箭頭所指的地方是我們已經準備好了Android打包的工具了(左下角的Switch Platform是指我們在什麼環境下

android NDK 開發環境搭建

1.下載android ndk 推薦版本為:android-ndk64-r10b-windows-x86_64 2.配置NDK,點Window->Preferences->Android->NDK,設定NDK路徑。 3.為eclipse 配置生成jni呼叫標頭檔案的命令工具,具體設定如下:

android NDK開發環境搭建(新)

 使用最新ndk,直接拋棄cygwin,以前做Android的專案要用到NDK就必須要下載NDK,下載安裝Cygwin(模擬Linux環境用的),下載CDT(Eclipse C/C++開發外掛),還要配置編譯器,環境變數,特別麻煩,新版就不需要了 1.Android官網下載

Eclipse下Android NDK開發環境搭建

第一步,下載ADT和NDK 最新的ADT(Android Development Tool)包含有ADT外掛及NDK外掛,不過對於ADT,官網已經不提供下載了,我們可以到第三方平臺下載,然後在Eclipse中進行安裝。 第二步,開啟Eclipse,點Wi

android NDK開發環境搭建

轉自: http://blog.chinaunix.net/uid-26524139-id-3206370.html 基於 Android NDK 的學習之旅-----環境搭建 工欲善其事必先利其器 , 下面介紹下 Eclipse SDK NDK Cygwin CD

windows下Android NDK開發環境搭建

Android NDK是Android Native Developement kit的縮寫。 Android程式執行在Dalvik虛擬機器中,NDK允許使用者使用類似C / C++之類的原生程式碼語言執行部分程式。 Android 應用開發中,可以通過Android ND

ubuntu14.04 Android/linux開發環境配置總結(持續更新)

一、更新源方法及地址:1 、首先備份 Ubuntu14.04 源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup  (備份下當前的源列表)2 、修改更新源sudo gedit /etc/apt/sourc

ubuntu14.04 android studio開發環境配置

從Android Studio 中文組 (中文社群) 點選開啟連結 下載 android studio開發工具與sdk工具。 解壓到自定目錄。 執行/android-sdk-linux/tools/android 指令碼,管理sdk,建議用真實手機當模擬器,這裡下載與手機

Ubuntu16.04上Android N開發環境配置

4.設定環境變數輸入如下命令開啟profile檔案$ sudo gedit /etc/profile在檔案末尾追加下面內容export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64export JRE_HOME=/usr/lib/jvm/java-1.8.0-open