記錄一下以免忘記
在VirtualBox 安裝完 Ubuntu 後enable Shared Folder
STEP 1
1. 安裝VBoxguestadditions.iso
2. 裝置 => 插入Guest additions CD
STEP 2
1. VirtualBox => 管理員 => 設定值 => 公用資料夾
設定要分享的資料夾路徑與名稱,另外把「自動掛載」與「設為永久」兩個選項也勾起來,
STEP 3
執行ubuntu
ALT+CTRL+T 叫出terminal
將所有需要用到分享資料夾的帳號加入 vboxsf 群組。
STEP 4
登出虛擬機器的 Linux,重新登入。
STEP 5
開啟 /media/,就可以看到分享的資料夾了。
參考文章:
http://www.gtwang.org/2013/03/virtualbox-shared-folder.html
http://ubuntuportal.com/2012/06/how-to-access-virtualbox-shared-folder-from-ubuntu-12-04-guest-machine.html
2015年2月3日 星期二
Virtualbox中,安裝Ubuntu 14.10 x64 畫面亂掉無法安裝
今天在安裝 新版ubuntu 時遇到
安裝畫面亂掉問題
google了一下原來是因為解析度太低造成
如下圖

方法就是:
在畫面亂掉後,按鍵盤「右邊的CTRL鍵」+「F1鍵」,然後
再按鍵盤「右邊的CTRL鍵」+「F7鍵」,切換回去!
安裝畫面就正常了
參考網址:
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=92710
安裝畫面亂掉問題
google了一下原來是因為解析度太低造成
如下圖
方法就是:
在畫面亂掉後,按鍵盤「右邊的CTRL鍵」+「F1鍵」,然後
再按鍵盤「右邊的CTRL鍵」+「F7鍵」,切換回去!
安裝畫面就正常了
參考網址:
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=92710
2012年5月6日 星期日
[android] 建立service範例
記錄一下以免以後忘記
Service是沒有UI的,它永遠是在背景工作
練習題目:當執行APP上的播放按鈕後,會開始播放音樂,按下停止就不會繼續播放
Step 1.在eclipse建立一個android project
File -> New -> Other -> Android Project
Step 2.專案建立完成後,建立UI
res -> layout -> main.xml
加入兩個button[紅色字體]
在eclipse右邊的package explorer專案中的src,點一下箭頭處,展開src,下面的xxx.xxx,點一下箭頭處,展開xxx.xxx,按滑鼠右鍵New -> Class
Name: Servicetest[第一個字要大寫]
Superclass: android.app.Service
如果Superclass用key的沒反應請在右邊的browse點進去再choose a type處key in
完成後按下finish就可以看到多一個Servicetest.java
Step 4.開啟src -> xxx.xxx -> Service.java加入以下程式碼
http://www.kfsoft.info/article-40-9--%E5%BB%BA%E7%AB%8BService.html
http://www.jollen.org/blog/2009/01/jollen-android-programming-8.html
Service是沒有UI的,它永遠是在背景工作
練習題目:當執行APP上的播放按鈕後,會開始播放音樂,按下停止就不會繼續播放
Step 1.在eclipse建立一個android project
File -> New -> Other -> Android Project
Step 2.專案建立完成後,建立UI
res -> layout -> main.xml
加入兩個button[紅色字體]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btnStartService" //service ID & name參見R.java
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Start Service" //模擬器上button秀出來的名稱
/>
<Button
android:id="@+id/btnStopService" //service ID & name參見R.java
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Stop Service" //模擬器上button秀出來的名稱
/>
</LinearLayout>
Step 3.新增一個class for 繕寫service在eclipse右邊的package explorer專案中的src,點一下箭頭處,展開src,下面的xxx.xxx,點一下箭頭處,展開xxx.xxx,按滑鼠右鍵New -> Class
Name: Servicetest[第一個字要大寫]
Superclass: android.app.Service
如果Superclass用key的沒反應請在右邊的browse點進去再choose a type處key in
完成後按下finish就可以看到多一個Servicetest.java
Step 4.開啟src -> xxx.xxx -> Service.java加入以下程式碼
package com.nash.service;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Service_without_UI extends Activity {
private Button btnStartService;
private Button btnStopService;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnStartService = (Button) findViewById(R.id.btnStartService);
btnStopService = (Button) findViewById(R.id.btnStopService);
btnStartService.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(Service_without_UI.this,Servicetest.class);
startService(i);
}
});
btnStopService.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(Service_without_UI.this, Servicetest.class);
stopService(i);
}
});
}
}
Step 5.開啟新增的Servicetest.java加入以下程式碼/**
*
*/
package com.nash.service;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
//import android.util.Log;
import android.widget.Toast;
/**
* @author nash
*
*/
public class Servicetest extends Service {
MediaPlayer m;
/* (non-Javadoc)
* @see android.app.Service#onBind(android.content.Intent)
*/
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "Service start", Toast.LENGTH_SHORT).show();
if (m!=null) m.stop();
m = MediaPlayer.create(this, R.raw.deal); //raw是放mp3的資料夾,deal是mp3的檔名
m.start();
}
@Override
public void onDestroy() {
Toast.makeText(this, "Service stop", Toast.LENGTH_SHORT).show();
m.stop();
m.release();
}
}
Step 6.開啟AndroidManifest.xml加入以下程式碼<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nash.service"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Service_without_UI"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".Servicetest"
android:label="@string/app_name">
</service>
</application>
</manifest>
參考資料:http://www.kfsoft.info/article-40-9--%E5%BB%BA%E7%AB%8BService.html
http://www.jollen.org/blog/2009/01/jollen-android-programming-8.html
2012年4月24日 星期二
[Linux]ubuntu 11.04(64 bit)抓取android4.0.4原始碼跟編譯source code/SDK/kernel
1.環境
一.vmware 8.0下掛載ubuntu 11.04(64 bit)
二.main OS : win 7
1.1軟體需求
一般情況下,你將需要以下工具:
1.1.1.Python 2.5 -- 2.7.
1.1.2.GNU Make 3.81 -- 3.82.建議安裝3.81
1.1.3.JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older.
1.1.4.Git 1.7 or newer.
1.1.5 GCC and GCC++ : 4.4 -- 4.5
1.1.1.Python:
檢查版本,沒有就安裝
檢查版本,沒有就安裝
檢查版本,沒有就安裝
請見[Linux] ubuntu 11.04(32 bit)建立開發環境
1.1.4.Git
檢查版本,沒有就安裝
64 bit
在GNU/Linux系統(Ubuntu系統),默認情況下,普通用戶不能直接訪問USB設備。該系統需要進行配置,來允許此類訪問。
推薦的方法是創建一個文件/etc/udev/rules.d/51-android.rules(作為root用戶),內容如下
1.1.8.Setting up ccache(“compiler cache”的縮寫)
該工具會高速緩存編譯生成的信息,並在編譯的特定部分使用高速緩存信息,比如header,這樣就節省了使用cpp解析這些信息所需的時間。假如foobar.h中包含對其他header的引用,ccache會用那文件的cpp-parsed版本来取代include。ccache只是將最後的文本拷貝到只文件中,讓他可以立即被編譯,而不是真的去讀取、理解並解釋其內容。
您可以選擇性地構建使用ccache的編譯工具。 ccache的作用,用於加快重新編譯。如果你時常"make clean",或者如果你經常切換不同的建置產品。
在/home/user/.bashrc中加入環境變數
1.1.8 gcc
Ubuntu11.04 gcc與g++版本為4.5,如果想修改系統default gcc or g++
======================================================================
2:下載android source code
2.1.Installing Repo
Repo 是 Google 為 Android source tree 的管理而寫的一個 script工具,以方便處理 Android 源碼包含的上百個 git repositories,可以更容易地使用Git,更多關於 Repo 的資訊,請參考 Version Control。
請按照下列步驟:
2.1.1請確保在你的主目錄有一個 bin /目錄,並且它有設定在path路徑:
注意在安裝JDK時已經宣告PATH所以可能會讓repo失敗
安裝完成Repo後, 設置用戶端存取 android 原始碼庫:
2.2.1 建一個空目錄來保存你的文件:
3 編譯android source code
======================================================================
4. 編譯kernel
在下載下來source code資料夾裡面建立kernel資料夾
======================================================================
5. 編譯SDK
在android source code目錄下, 下make PRODUCT-sdk-sdk即可
參考資料:
http://source.android.com/source/initializing.html
http://www.2cto.com/os/201201/116762.html
http://www.cnblogs.com/dwayne/archive/2011/11/11/2245383.html
http://www.linuxidc.com/Linux/2011-12/49775.htm
一.vmware 8.0下掛載ubuntu 11.04(64 bit)
二.main OS : win 7
1.1軟體需求
一般情況下,你將需要以下工具:
1.1.1.Python 2.5 -- 2.7.
1.1.2.GNU Make 3.81 -- 3.82.建議安裝3.81
1.1.3.JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older.
1.1.4.Git 1.7 or newer.
1.1.5 GCC and GCC++ : 4.4 -- 4.5
1.1.1.Python:
檢查版本,沒有就安裝
[nash@.....]# python --version
[nash@.....]# sudo apt-get install python
1.1.2.GNU Make 3.81 -- 3.82.檢查版本,沒有就安裝
[nash@.....]# make --version
[nash@.....]# sudo apt-get install make
1.1.3.JDK 6檢查版本,沒有就安裝
[nash@.....]# java -version
Installing the JDK請見[Linux] ubuntu 11.04(32 bit)建立開發環境
1.1.4.Git
檢查版本,沒有就安裝
[nash@.....]# git --version
[nash@.....]# sudo apt-get install git
1.1..編譯android source code需要的套件64 bit
[nash@.....]# sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \ x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \ libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \ libxml2-utils xsltproc
1.1.7.設定 USB 存去(有ROOT全線可跳過)在GNU/Linux系統(Ubuntu系統),默認情況下,普通用戶不能直接訪問USB設備。該系統需要進行配置,來允許此類訪問。
推薦的方法是創建一個文件/etc/udev/rules.d/51-android.rules(作為root用戶),內容如下
# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"
# adb protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"
這種方式在Ubuntu Hardy Heron (8.04.x LTS)和Lucid Lynx (10.04.x LTS)已經測試過可行。其他版本的GNU/Linux的Ubuntu或其他變種可能需要不同的配置。1.1.8.Setting up ccache(“compiler cache”的縮寫)
該工具會高速緩存編譯生成的信息,並在編譯的特定部分使用高速緩存信息,比如header,這樣就節省了使用cpp解析這些信息所需的時間。假如foobar.h中包含對其他header的引用,ccache會用那文件的cpp-parsed版本来取代include。ccache只是將最後的文本拷貝到只文件中,讓他可以立即被編譯,而不是真的去讀取、理解並解釋其內容。
您可以選擇性地構建使用ccache的編譯工具。 ccache的作用,用於加快重新編譯。如果你時常"make clean",或者如果你經常切換不同的建置產品。
在/home/user/.bashrc中加入環境變數
export USE_CCACHE=1
默認情况下cache會保存在~/.ccache目錄下,如果主目錄位於NFS或其他非本地文件系統上,也將下面環境變數加到/home/user/.bashrc:export CCACHE_DIR=<path-to-your-cache-directory> #修改為cache目錄位置。
推薦的cache目錄大小50-100GBprebuilt/linux-x86/ccache/ccache -M 50G
該設置會保存到CCACHE_DIR中,該命令為長效的,不會因為系統重啟而失效。1.1.8 gcc
Ubuntu11.04 gcc與g++版本為4.5,如果想修改系統default gcc or g++
[nash@.....]# ls -l gcc*
lrwxrwxrwx 1 root root 7 2012-04-02 13:36 gcc -> gcc-4.5
-rwxr-xr-x 1 root root 237012 2011-04-19 04:22 gcc-4.5
安裝比較舊的版本[nash@.....]# sudo apt-get install gcc-4.4
[nash@.....]# sudo apt-get install gcc++-4.4
安裝完後進到/usr/bin目錄下,檢查結果[nash@.....]# ls -l gcc*
lrwxrwxrwx 1 root root 7 2012-04-02 13:36 gcc -> gcc-4.5
-rwxr-xr-x 1 root root 224488 2011-04-01 03:31 gcc-4.4
-rwxr-xr-x 1 root root 237012 2011-04-19 04:22 gcc-4.5
發現gcc鏈接gcc-4.5,需將它改為鏈接到gcc-4.4,方法如下:[nash@.....]# $sudo mv gcc gcc.bak
[nash@.....]# $sudo ln -s gcc-4.4 gcc
同理發現gcc++鏈接gcc++-4.5,需將它改為鏈接到gcc++-4.4,方法如下:[nash@.....]# ls -l g++*
lrwxrwxrwx 1 root root 7 2012-04-02 13:36 g++ -> g++-4.5
-rwxr-xr-x 1 root root 228520 2011-04-01 03:29 g++-4.4
-rwxr-xr-x 1 root root 236948 2011-04-19 04:18 g++-4.5
[nash@.....]# $sudo mv g++ g++.bak
[nash@.....]# $sudo ln -s g++-4.4 g++
在查看gcc和g++版本:
[nash@.....]# ls -l gcc*
lrwxrwxrwx 1 root root 7 2012-04-03 20:18 gcc -> gcc-4.4
-rwxr-xr-x 1 root root 224488 2011-04-01 03:31 gcc-4.4
-rwxr-xr-x 1 root root 237012 2011-04-19 04:22 gcc-4.5
lrwxrwxrwx 1 root root 7 2012-04-02 13:36 gcc.bak -> gcc-4.5
[nash@.....]# ls -l g++*
lrwxrwxrwx 1 root root 7 2012-04-03 20:18 g++ -> g++-4.4
-rwxr-xr-x 1 root root 228520 2011-04-01 03:29 g++-4.4
-rwxr-xr-x 1 root root 236948 2011-04-19 04:18 g++-4.5
lrwxrwxrwx 1 root root 7 2012-04-02 13:36 g++.bak -> g++-4.5
均顯示gcc version 4.4.5 ,說明gcc 4.4安裝成功。======================================================================
2:下載android source code
2.1.Installing Repo
Repo 是 Google 為 Android source tree 的管理而寫的一個 script工具,以方便處理 Android 源碼包含的上百個 git repositories,可以更容易地使用Git,更多關於 Repo 的資訊,請參考 Version Control。
請按照下列步驟:
2.1.1請確保在你的主目錄有一個 bin /目錄,並且它有設定在path路徑:
注意在安裝JDK時已經宣告PATH所以可能會讓repo失敗
[nash@.....]# mkdir ~/bin #在home/nash/下建立一個bin的資料夾
[nash@.....]# PATH=~/bin:$PATH
2.1.2下載 Repo script 並確保它是可執行文件:[nash@.....]# curl https://android.git.kernel.org/repo > ~/bin/repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 19933 0 0 0 0 0 0 --:--:-- --:--:-- --:--:100 19933 100 19933 0 0 22306 0 --:--:-- --:--:-- --:--:100 19933 100 19933 0 0 22302 0 --:--:-- --:--:-- --:--:-- 117k
[nash@.....]# chmod a+x ~/bin/repo
2.2.Initializing a Repo client安裝完成Repo後, 設置用戶端存取 android 原始碼庫:
2.2.1 建一個空目錄來保存你的文件:
[nash@.....]# mkdir Android
[nash@.....]# cd Android
2.2.2 執行 repo init 去獲取最新最新版本的Repo 與 所有最新的修正檔。 您必須指定manifest的URL, 指出包含在 Android source的各種資源庫 將被放置在您的目錄。[nash@.....]# repo init -u https://android.googlesource.com/platform/manifest
Your Name [nash.lin]: nash.lin
Your Email [nash.lin@mantis-1.(none)]: xxxxx@gmail.com
Your identity is: nash.lin
is this correct [y/N]? y
Testing colorized output (for 'repo diff', 'repo status'):
black red green yellow blue magenta cyan white
bold dim ul reverse
Enable color display in this user account (y/N)? y
repo initialized in /home/nash.lin/Android
2.2.3 要開 branch 分支, 加上參數 -b:[nash@.....]# repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
2.3 Getting the files[nash@.....]#repo sync
如果斷線就在重複上面指令即可
下載完成後修改權限
[nash@.....]# chmod -R 777 <PATH android source code>
======================================================================
3 編譯android source code
[nash@.....]# cd Android
3.1 envsetup.sh腳本初始化環境[nash@.....]# source build/envsetup.sh
including device/moto/wingray/vendorsetup.sh
including device/samsung/crespo/vendorsetup.sh
including device/samsung/maguro/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including sdk/bash_completion/adb.bash
3.2 選擇target[nash@.....]# lunch
You're building on Linux
Lunch menu... pick a combo:
1. full-eng
2. full_x86-eng
3. vbox_x86-eng
4. full_wingray-userdebug
5. full_crespo-userdebug
6. full_maguro-userdebug
7. full_panda-userdebug
Which would you like? [full-eng] 1
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=4.0.4.0.4.0.4
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-2.6.38-8-generic-x86_64-with-Ubuntu-11.04-natty
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
OUT_DIR=out
============================================
3.4 開始編譯android source code[nash@.....]# make
編譯完成後會在source code資料夾內會產生一個out資料夾,在/out/target/product/generic目錄下產生出一些*.img檔,例如 system.img / userdata.img /ramdisk.img等
======================================================================
4. 編譯kernel
在下載下來source code資料夾裡面建立kernel資料夾
[nash@.....]# mkdir kernel
4.1 下載kernel source code[nash@.....]# git clone https://android.googlesource.com/device/ti/panda
Cloning into panda...
remote: Counting objects: 23, done
remote: Counting objects: 515, done
remote: Finding sources: 100% (85/85)
remote: Getting sizes: 100% (40/40)
remote: Compressing objects: 100% (18/18)
Receiving objects: 100% (492/492), 63.74 MiB | 275 KiB/s, done.
remote: Total 492 (delta 219), reused 489 (delta 216)
Resolving deltas: 100% (219/219), done.
[nash@.....]# ls
Panda
[nash@.....]# cd Panda
4.2 查看kernel目前版本資訊[nash@.....]# git log kernel
commit 793defdaa84b0375d34757db4dfb8fe437bf4340
Author: Jean-Baptiste Queru
Date: Fri Feb 24 12:34:52 2012 -0800
PandaBoard prebuilt kernel
ebb6cb6 Panda: Support data usage statistic collection.
……………………..
4.3 選擇下載的檔案[nash@.....]# git clone https://android.googlesource.com/kernel/common.git
[nash@.....]# git clone https://android.googlesource.com/kernel/goldfish.git
[nash@.....]# git clone https://android.googlesource.com/kernel/msm.git $ git clone
[nash@.....]# https://android.googlesource.com/kernel/omap.git $ git clone
[nash@.....]# https://android.googlesource.com/kernel/samsung.git $ git clone
[nash@.....]# https://android.googlesource.com/kernel/tegra.git
4.4 選擇一個版本check out[nash@.....]# cd goldfish/
[nash@.....]# git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/android-goldfish-2.6.29
remotes/origin/master
[nash@.....]# git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29
[nash@.....]# git branch -a
4.5 設定編譯參數[nash@.....]# gedit Makefile
#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
# $(call ld-option, -Wl$(comma)--build-id,))
LDFLAGS_BUILD_ID =
[nash@.....]# sudo gedit ~/.bashrc
把前面安裝JDK的PATH mark起來在加入以下參數
export PATH=$PATH:/home/nash/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
[nash@.....]# source ~/.bashrc
4.6 開始編譯kernel[nash@.....]# make goldfish_defconfig
#
# configuration written to .config
#
[nash@.....]# make
完成後會在/kernel/Panda/goldfish/arch/arm/boot/下產生一個zImage文件
======================================================================
5. 編譯SDK
在android source code目錄下, 下make PRODUCT-sdk-sdk即可
[nash@.....]# make PRODUCT-sdk-sdk
完成後所產生的SDK會存放在/out/host/linux-x86/sdk裡面,會有兩個檔案
1. android-sdk_eng.xxx_linux-x86.zip
2. android-sdk_eng.xxx_linux-x86
P.S : xxx為使用者帳號名稱
android-sdk_eng.xxx_linux-x86就是我們需要的SDK,建議大家備份起來,因為編譯單獨模組時,有可能會清除SDK目錄
參考資料:
http://source.android.com/source/initializing.html
http://www.2cto.com/os/201201/116762.html
http://www.cnblogs.com/dwayne/archive/2011/11/11/2245383.html
http://www.linuxidc.com/Linux/2011-12/49775.htm
2012年4月3日 星期二
[Linux] ubuntu 11.04(32 bit)建立android APP開發環境
OS: vmware下掛載ubuntu 11.04(32 bit)
======================================================================
Step 1: 確認環境
1.更新ubuntu
[nash@.....]# sudo apt-get update
[nash@.....]# sudo apt-get upgrade
2.確認環境中是否已安裝sun java,如沒有請往下繼續做[nash@.....]# java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) Client VM (build 20.0-b11, mixed mode, sharing)
3.檢查gcc版本,是否為gcc4.4,如果大於or小於gcc4.4請安裝gcc4.4,編譯android source code用可跳過[nash@.....]# gcc -v
.........
gcc version 4.4 (Ubuntu/Linaro 4.4-8ubuntu4)
======================================================================
Step 2: 下載以下套件到linux環境中:
一: SUN_JDK_6 -> jdk-6u25-linux-i586.bin
二: SDK ->android-sdk_r17-linux.tgz
三: ECLIPSE ->eclipse-java-indigo-SR2-linux-gtk.tar.gz
四: ADT [Android Development Tools]->ADT-17.0.0.zip
======================================================================
Step 3: 開始安裝
手動安裝流程
1.建立android專用資料夾
2.複製Step 2下載的套件到android專用資料夾裡
3.解壓縮SDK/ECLIPSE到android專用資料夾
4.修改資料夾跟檔案權限
5.安裝SUN JDK
6.啟動eclipse,安裝ADT
7.建立android專案
8.編譯並執行 HelloAndroid
======================================================================
Part 1.建立android資料夾
[nash@.....]# sudo mkdir /home/nash/Android
Part 2.複製下載套件到android專用資料夾[nash@.....]# cp /home/nash/Downloads/* /home/nash/Android
Part 3.解壓縮SDK/ECLIPSE到android專用資料夾[nash@.....]# tar zxvf /home/nash/Android/android-sdk_r17-linux.tgz
[nash@.....]# tar zxvf /home/nash/Android/eclipse-java-indigo-SR2-linux-gtk.tar.gz
Part 4.修改資料夾跟檔案權限[nash@.....]# chmod -R 775 /home/nash/Android
Part 5.安裝SUN JDK
一.確認/usr/lib/是否有jvm資料夾,沒有就建立
[nash@.....]# sudo mkdir /usr/lib/jvm
二.安裝"java-common"[nash@.....]# sudo apt-get install java-common
三.檢查JAVA版本,是否為sun jdk不是open jdk[nash@.....]# java -version
四.不是sun jdk,請下載SUN_JDK_6 bin file到android資料夾五.寫一個安裝script簡化手動安裝jdk流程
install_sun_javajdk6.sh
[nash@.....]# vi /home/nash/Android/install_sun_javajdk6.sh
#!/bin/sh
echo 'You need to sudo apt-get install java-common First. Press if you have already apt-got it...'
read dummy
JAVA_CV="1.6.0_25" #jdk版本如有不同請自行修改
JAVA_DIR="java-6-sun"
sudo chmod +x jdk-6u25-linux-i586.bin #jdk版本如有不同請自行修改
sudo chmod +x jdk_config.sh
./jdk-6u25-linux-i586.bin #jdk版本如有不同請自行修改
sudo mv jdk$JAVA_CV /usr/lib/jvm/$JAVA_DIR-$JAVA_CV
sudo ln -s /usr/lib/jvm/$JAVA_DIR-$JAVA_CV /usr/lib/jvm/$JAVA_DIR #建立java連結
sudo ./jdk_config.sh $JAVA_DIR
sudo update-java-alternatives -s java-6-sun #設定OS所使用的java版本
echo "------- DONE -------"
echo "Your Java Home is: $JAVA_HOME, JAVA Version: "
java -version #檢查OS使用的java版本
read dummy
jdk_config.sh[nash@.....]# vi /home/nash/Android/jdkconfig.sh
#!/usr/bin/env bash
# ----------------------------------------------------------------------
# Description
# Setup a Sun Java 6 JDK with the alternatives system.
#
# Usage
# To setup the alternatives system:
# $ sudo ./configure-java-6.sh
#
# To set the configured JDK as the system default one, you can then run:
# $ sudo update-java-alternatives -s java-6-sun
#
# Prerequisites
# /usr/lib/jvm/java-6-sun must point to the JDK to setup.
#
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# Constants
# ----------------------------------------------------------------------
#JDK_ALIAS=java-6-sun
JDK_ALIAS=$1 # Set it from command prompt
JDK_DIRECTORY=/usr/lib/jvm/$JDK_ALIAS
JDK_ALTERNATIVE_PRORITY=1
JINFO_FILE=/usr/lib/jvm/.$JDK_ALIAS.jinfo
# ----------------------------------------------------------------------
# Functions
# ----------------------------------------------------------------------
# Check the execution rights.
check_rights()
{
if [[ $USER != 'root' ]]; then
echo "Error: You must run this script as root."
exit 1
fi
}
# Check that $JDK_DIRECTORY contains a Sun Java JDK 6.
check_jdk()
{
if [[ ! -e $JDK_DIRECTORY ]] && [[ ! -e $JDK_DIRECTORY/jre/bin/java ]] && [[ ! -e $JDK_DIRECTORY/bin/java ]] ; then
echo "Error: '$JDK_DIRECTORY' must point to a valid Sun Java 6 JDK home."
exit 1
fi
}
# Register the JRE executable.
setup_jre_alternative()
{
update-alternatives --verbose --install /usr/bin/$1 $1 $JDK_DIRECTORY/jre/bin/$1 $JDK_ALTERNATIVE_PRORITY
echo "jre $1 $JDK_DIRECTORY/jre/bin/$1" >> $JINFO_FILE
}
# Register the JDK executable.
setup_jdk_alternative()
{
update-alternatives --verbose --install /usr/bin/$1 $1 $JDK_DIRECTORY/bin/$1 $JDK_ALTERNATIVE_PRORITY
echo "jdk $1 $JDK_DIRECTORY/bin/$1" >> $JINFO_FILE
}
# Start the .jinfo file.
generate_jinfo_header()
{
echo "name=$JDK_ALIAS" > $JINFO_FILE
echo "alias=$JDK_ALIAS" >> $JINFO_FILE
echo "priority=$JDK_ALTERNATIVE_PRORITY" >> $JINFO_FILE
echo "section=non-free" >> $JINFO_FILE
}
# ----------------------------------------------------------------------
# Main
# ----------------------------------------------------------------------
# Check execution rights.
check_rights
# Check that there is a JDK at the right place.
check_jdk
# Generate a .jinfo file for the update-java-alternatives command.
generate_jinfo_header
# Register the executables with the alternatives system.
setup_jre_alternative java
setup_jre_alternative keytool
#setup_jre_alternative kinit
#setup_jre_alternative klist
#setup_jre_alternative ktab
setup_jre_alternative orbd
setup_jre_alternative pack200
setup_jre_alternative policytool
setup_jre_alternative rmid
setup_jre_alternative rmiregistry
setup_jre_alternative servertool
setup_jre_alternative tnameserv
setup_jre_alternative unpack200
setup_jdk_alternative appletviewer
setup_jdk_alternative apt
setup_jdk_alternative extcheck
setup_jdk_alternative idlj
setup_jdk_alternative jar
setup_jdk_alternative jarsigner
setup_jdk_alternative javac
setup_jdk_alternative javadoc
setup_jdk_alternative javah
setup_jdk_alternative javap
setup_jdk_alternative jconsole
setup_jdk_alternative jdb
setup_jdk_alternative jinfo
setup_jdk_alternative jmap
setup_jdk_alternative jps
setup_jdk_alternative jsadebugd
setup_jdk_alternative jstack
setup_jdk_alternative jstat
setup_jdk_alternative jstatd
setup_jdk_alternative native2ascii
setup_jdk_alternative rmic
setup_jdk_alternative serialver
# Log a message about the jinfo file.
echo "The file '$JINFO_FILE' containing metadatas used by the 'update-java-alternatives' command has been generated."
六.修改install_sun_javajdk6.sh &jdk_config.sh檔案權限[nash@.....]# chmod -R 775 /home/nash/Android/
七.執行install_sun_javajdk6.sh[nash@.....]# sudo ./install_sun_javajdk6.sh
八.檢查安裝結果[nash@.....]# java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) Client VM (build 20.0-b11, mixed mode, sharing)
Part 6.啟動eclipse,安裝ADT一.進入/home/nash/Android/eclipse資料夾,執行eclipse
[nash@.....]# ./home/nash/Andriod/eclipse/eclipse
二.若是初次開啟,請關掉 Welcome 畫面初次開啟 eclipse 的時候,會有歡迎畫面 Welcome。直接在 Welcome旁,按X 把它關掉即可三.安裝ADT,可分兩種方式1.網路安裝,2.手動下載安裝
1.網路安裝:
執行 Eclipse 後,Main Menu -> Help -> Install New Software … 開啟畫面[如圖p1],在彈出視窗的 Add 按鍵,打入名稱以及在 Location中輸入"https://dl-ssl.google.com/android/eclipse/",並且在Name 輸入AndroidDeveloperPlugin-Tools (其實 Name 隨你怎麼打都行)[如圖p2],接著會開始抓取套件,抓到後會秀在中間的視窗中,如圖p3,選取你要的套件,然後按Next進入安裝,安裝完成後會問你是否要restart,restart後環境就設定完成,接下來就可以開始建立android專案
![]() |
| p1 |
![]() |
| p2 |
![]() |
| p3 |
2.選擇手動安裝ADT
a.執行 Eclipse 後,Main Menu -> Help -> Install New Software … 開啟畫面,在彈出視窗的 Add 按鍵 , 打入名稱以及在 Location中選擇ADT-17.0.0.zip放置的資料夾,安裝好之後他會問你要不要重新啟動,選 Restart,重新啟動後要你選擇SDK是否要安裝選YES就是網路安裝選下面就是手動安裝SDK
b.如果想修改SDK的路徑,在eclipse 之中設定 android sdk path ,Main Menu -> Windows -> Preference -> Android選取”SDK Location”這邊要設定 Android SDK的路徑,即可
Part 7.建立android專案
一.我們需要開啟的Perspective 不是 Java EE 而是 Java,Main Menu -> Windows -> Open Perspective -> Other,選擇 Java 按 OK
二.在Java Perspective 中新增 Android 專案,Main Menu -> File -> New -> Other -> Android Project
![]() |
| p4 |
![]() |
| p5 |
三.設定
Project name 設 HelloAndroid
Contents 設 Create new project in workspace
Build Target 設 Android 4.0,按Next
![]() |
| p7 |
Properties.Application name 設 HelloAndroid
Package name 設 Milosamples.HelloAndroid
Create Activity 打鉤並設 HelloAndroidActivity,按Finish
![]() |
| p8 |
四.設定完成後按下 Finish 按鈕便可完成一個Hello World的 Android sample
![]() |
| p9 |
一.建立編譯執行的 configuration, Main Menu -> Run -> Run configurations …
![]() |
| p10 |
![]() |
| p11 |
Project為 HelloAndroid
三.Target選automatic,設定完成後apply,and close
![]() |
| p12 |
![]() |
| p13 |
Name : AVD4[隨便取都行]
Target : 選android 4.0
SD Card:沒用到可以不用填
Skin : 畫面大小
Hardware : 選取開發HW條件
![]() |
| p14 |
![]() |
| p15 |
![]() |
| p16 |
http://milochen.wordpress.com/2010/05/22/newbie-tutorial-to-create-android-app-developer-environment-on-ubuntu-10-04-9-10-64bits/
訂閱:
文章 (Atom)




















