2012年5月2日 星期三

在 Ubuntu 12.04 LTS 安裝 Android SDK&NDK 開發環境


Ubuntu「友幫拓」每年在4月及10月時會固定發布新版本,上月底 Ubuntu 發布了代號 Precise Pangolin(精確的穿山甲)的 12.04 LTS版本,這個版本官方網站將維護到 2017 年。
因此,近期將自己的 Ubuntu 開發環境也升級到 12.04,也將過程紀錄下來分享。


安裝的部分網路上有文章已經寫得很清楚,可以參考 "預覽 Ubuntu 12.04,最期待的作業系統!安裝設定篇" 這篇文章,其中差別是這邊文章是安裝在虛擬主機上,如果要安裝在一般使用的PC或筆電上就必須多一個將IOS檔燒成開機安裝光碟片。

至於補充的地方,如過遇到的使用環境如同我一樣習慣英文 Linux 環境,安裝時選擇的語言是英文版本的話,在中文輸入部分可以參照下面方式進行安裝:
首先找到System Setting --> Language Support --> Language --> Install/Remove Languages..--> Installed Languages --> Chinese (traditional) 打勾
返回 Language Support
選擇輸入法
Keyboard input method system:
選擇 ibus
然後按下 "Apply System-Wide"。

接著將 Regional Formats 中 Display numbers, dates and currency amounts in the usual format for :
選擇 "漢語(臺灣)"
然後按下 "Apply System-Wide" 。

然後在輸入法設定畫面下就可以加入中文輸入法了。


接下來開始安裝及設定環境,這邊要注意的是下列指令與參數間要空格。
基本功力要求是需要Linux入門實力;例如指令操作及文字編輯,本篇就不詳述基本功的部分了。

1.安裝Java
關閉所有視窗,同時按下Ctrl + Alt + T 打開終端畫面,
接著安裝JDK,下列的方式是安裝1.6.x版本。

Installing the JDK
下載  jdk-6uXX-linux-x64.bin
$ sudo apt-get purge openjdk*
$ chmod +x jdk-6u32-linux-x64.bin  <--將bin檔設定可執行
$ ./jdk-6u32-linux-x64.bin
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv jdk1.6.0_32 /usr/lib/jvm/
Install new java source in system:
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_32/bin/javac 1
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_32/bin/java 1
Choose default java:
$ sudo update-alternatives --config javac   <--設定預設Javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                  Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/bin/javac   1         auto mode
  1            /usr/lib/jvm/java-7-oracle/bin/javac   1         manual mode
  2            /usr/lib/jvm/jdk1.6.0_32/bin/javac     1         manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/jdk1.6.0_32/bin/javac to provide /usr/bin/javac (javac) in manual mode.

$ sudo update-alternatives --config java  <--設定預設Java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                 Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/bin/java   1         auto mode
  1            /usr/lib/jvm/java-7-oracle/bin/java   1         manual mode
  2            /usr/lib/jvm/jdk1.6.0_32/bin/java     1         manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/jdk1.6.0_32/bin/java to provide /usr/bin/java (java) in manual mode.

安裝完成後執行java -version指令看到如下訊息出現表示安裝完成。
$ java -version
java version "1.6.0_32"
Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode)

下列的方式是安裝1.7.x版本 (1.6.x與1.7.x兩個擇一選擇,建議採用1.6.x版本就可以了)。
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer
安裝完成後執行java -version指令看到如下訊息出現表示安裝完成。
$ java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

另外,切換Java版本的指令是
$ sudo update-alternatives --config java

接著如果在64bit上使用的是非 openjdk 時,為了避免eclipse執行時遇到下列錯誤訊息
 Could not load SWT library. Reasons:
        no swt-gtk-3740 in java.library.path
        no swt-gtk in java.library.path
.......

執行下面兩行指令可以解決eclipse 開不起來問題:
sudo apt-get install libswt-gtk-3-jni libswt-gtk-3-java
sudo cp /usr/lib/jni/libswt-*3740.so ~/.swt/lib/linux/x86_64/


2.安裝Android相關套件 
參照 android open source project 網頁 Initializing the Build Environment 步驟安裝相關套件.
http://source.android.com/source/initializing.html

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
>   zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
>   libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 \
>   g++-multilib mingw32 tofrodos python-markdown \
>   libxml2-utils xsltproc zlib1g-dev:i386


$ sudo apt-get -f install


3.安裝Eclipse
安裝Eclipse有兩種方式,一種方式是到官網去下載Eclipse相對應的位元檔案,然後解壓縮後執行eclipse即可,另外一種方式是利用 Ubuntu Software Center方式來進行,本文則採用這個方式來安裝。
首先打開畫面右邊的Ubuntu Software Center

接著在搜尋的地方輸入 eclipse 然後選擇第2個圖示並按下右邊的 install 按鈕後便開始安裝,途中會要求輸入sudo密碼過一陣子看到圖示中出現綠色打勾即代表安裝完成。

接著設定eclipse.ini ,這個設定檔放置在 /etc目錄下,所以修改時記得前面要加 sudo例如: sudo vi /etc/eclipse.ini
相關設定部分請參照 優化Eclipse 開發工具

下圖是第一次執行畫面


4.安裝 Android SDK
Google官網下載Linux (i386)版本的SDK , 當下載完成後按照下面方式進行安裝:

將檔案移到使用者home目錄下,解壓縮
$ cd Downloads/
$ mv android-sdk_r18-linux.tgz ~/
$ cd ~
$ tar zxvf android-sdk_r18-linux.tgz
....解壓縮檔案.....
$ cd android-sdk-linux/
$ tools/android update sdk  
此時就會看到 Android SDK Manager,這時就可以開始安裝相關的SDK套件。

接著打開eclipse 選擇上方Help --> Install New Software  按下 add 在Name中輸入 ADT Plugin 在 Location中輸入 http://dl-ssl.google.com/android/eclipse/

然後選擇全部安裝,這時開始安裝ADT Plugin 。

安裝過程會要求重啟eclipse,當安裝完成後會要求輸入SDK所在目錄以及是否要傳送使用狀態給Google:

此時,這部分便安裝完成。


5.安裝 Android NDK
Google官網下載Linux 32/64-bit (x86) 版本的NDK,當下載完成後按照下面方式進行安裝:

將檔案移到使用者home目錄下,解壓縮
$ cd Downloads/
$ mv android-ndk-r8-linux-x86.tar.bz2 ~/
$ cd ~
$ $ tar jxvf android-ndk-r8-linux-x86.tar.bz2
....解壓縮檔案.....
當解壓縮完成後加入相關路徑:
編輯 .profile
$ vi .profile
在最下面增加下面內容:
#Android SDK
SDK_ROOT=~/android-sdk-linux
PATH=$SDK_ROOT/tools:$SDK_ROOT/platform-tools:$PATH
export PATH

#Android NDK
NDK_ROOT=~/android-ndk-r8
PATH=$NDK_ROOT:$PATH
NDK_Sample=$NDK_ROOT/samples
NDK_Workspace=~/workspace
export NDK_ROOT NDK_Sample NDK_Workspace PATH

至此,大致上NDK環境已經安裝完成,此時可以用hello-jni測試一下 NDK環境:



6.安裝Eclipse CDT(C/C++ Development Tool)
由於按照第3步驟安裝eclipse 3.7.x板時,在Available Software Sites中已經有CDT,可以在"type filter text"輸入框中直接輸入http://download.eclipse.org/tools/cdt/releases/indigo 然後修改名稱後把前面的框框打勾如下圖:

然後回到install畫面在Work with:中選擇CDT - .....,過一陣子會出現安裝選項,此時選擇 CDT Main Features --> C/C++ Development Tools 如下圖

接著按下Next>會看到安裝項目:

安裝完成後,會要求重啟eclipse此時便完成CDT安裝:

2012/06/29補充】新版已經整合了NDK插件,除了下述方式外可以參考新版第一支Android程式(Android SDK r20) -- HelloWorld 包含 NDK Plugin 。

接著開發的部分,直接參考 "第一支Android NDK程式--HelloJni" 這篇文章中步驟4以後操作。

不同處我在這整理一下:
在專案名稱(HelloJNI)按滑鼠右鍵選擇Properties --> Builders --> New--> 選擇 Program
在Main標籤內容中:
Name中輸入: Native_Builder
Location中輸入: /bin/bash
Working Directory中輸入: ${workspace_loc:/HelloJni/jni}  <--用Browse Workspace...選擇
Arguments中輸入: --login -c "cd $NDK_Sample/hello-jni && ndk-build"
其他地方設定都一樣。

執行結果:



相關參考:
1. Ubuntu 「友幫拓」
http://www.ubuntu.com/download

2.Ubuntu 12.04 – install sun jdk 6-7
http://www.devsniper.com/ubuntu-12-04-install-sun-jdk-6-7/

3.Installing the ADT Plugin
http://developer.android.com/sdk/eclipse-adt.html#installing

4.第一支Android NDK程式--HelloJni
http://www.cheng-min-i-taiwan.blogspot.com/2010/06/android-ndk-hellojni.html

===========相關閱讀========================================
新版第一支Android程式(Android SDK r20) -- HelloWorld 包含 NDK Plugin

3 則留言: