更新 Git 版本

主要原因是建置 Android Build 環境時, repo 的初始化需要 git 1.7.2以上的版本,必須升級 git

方法:
終端機輸入
1. sudo apt-add-repository ppa:git-core/ppa
2. sudo apt-get update
3. sudo apt-get install git-core

即可更新 git 版本

ubuntu 安裝 sun-java-6 及切換使用的jdk

A.建議先安裝open-jdk
直接輸入 sudo apt-get install default-jdk

B.再安裝sun-java-6-jdk
照著AOSP 官網的教學操作
1. sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
2. sudo apt-get update
3. sudo apt-get install sun-java6-jdk

第3步驟會出現錯誤 "找不到套件之類的...."

修正方式:
1. sudo add-apt-repository ppa:ferramroberto/java
or sudo add-apt-repository ppa:flexiondotorg/java
2. sudo apt-get update
3. sudo apt-get install sun-java6-jdk

即可成功安裝,過程中會要求設定 DLJ ,按確定即可
完成後使用以下指令切換 java 版本

終端機輸入
update-alternatives --config java

出現

Selection    Path                                      優先級  Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manual mode

0為預設的選項(openjdk),2為剛剛安裝的sunjdk,輸入數字切換

jenkins_備份及還原完整系統


只需要將 JENKINS_HOME 所指的目錄內所有資料複製起來即可完成備份,
如JENKINS_HOME=/home/jenkins ,就把/home/jenkins所有資料複製起來
,備份和還原時儘量先停止jenkins (/etc/init.d/jenkins stop)


備份:
1.先登入 root 權限

2.建立並移動到rcserver使用者的資料夾內
mkdir jenkins_backup
cd jenkins_backup


3.複製所有JENKINS_HOME 所有資料夾
cp -adr /home/jenkins/* ./ (為jenkins_backup)


還原:
1.先登入 root 權限

2.移動到放置所有備份資料的資料夾中
cd jenkins_backup

2.複製備份檔到 JENKINS_HOME 所指資料夾
cp -adr ./* /home/jenkins/


jenkins_備份及還原專案


說明:
jenkins的專案全部都放在 jobs 資料夾下,只要複製專案資料夾,就能進行備份還原動作
本地和遠端動作類似,差別在於遠端需要ssh和sftp
要注意複製專案時是否有將專案內全部資料都複製齊全



本地備份

1. 開啟終端機,取得root權限
sudo -s

2.複製想備份的專案
cp -adr /home/jenkins/jobs/專案名 目的路徑

本地還原

1.還原專案
cp -adr 來源路徑 /home/jekins/jobs

備份及還原儘量在 jenkins 停止的狀態下進行,經測試備份及還原的進行可以不必停止jenkins
不過還原後必須重啟jenkins,備份的專案才會顯示


遠端備份
1.使用ssh指令遠端登入server

2.移動到/home/jenkins/jobs目錄中

3.針對要備份的專案進行壓縮
壓縮:
tar zcvf 壓縮檔名.tar.gz 來源檔(專案名)

4.離開ssh

5.使用sftp將剛剛製作的壓縮檔get到本地端
(要注意本地端放置備份壓縮檔的目錄權限,如果目錄是需要root,則使用sftp指令前必須先切換到root權限再使用sftp)

遠端還原
1.先使用sftp將備份壓縮檔put到遠端
(由於sftp無法切換到root權限,所以無法直接把壓縮檔put到/home/jenkins/jobs中,先put到可以put的目錄)

2.離開sftp,使用ssh登入遠端,切換到root權限並將備份壓縮檔解壓縮到/home/jenkins/jobs中

3.重啟jenkins

壓縮和解壓縮指令

副檔名為 tar.gz

壓縮
tar zcvf 壓縮檔名.tar.gz 來源檔

解壓縮
tar zxvf 壓縮檔名

使用7zip也不錯
解壓縮
7z x 壓縮檔名


Jenkins 帳號權限設定

Jenkins 安裝完成後,預設是以匿名(anonymous)帳號登入,只要連線到該ip,無論是誰都可以設定或調整,建議安裝完成後立刻處理帳號權限控管,步驟如下

1.進入Jenkins 主頁面
2.點擊 "管理jenkins"
3.點擊 "設定全域安全性"
4.勾選 "啟用安全性"
5.點擊 "Jenkins內建使用者資料庫"
6.勾選 "予許使用者註冊"
7.點擊 "矩陣型安全性"
8.在 "要新增的使用者或群組:"輸入欄內填入想要的管理者帳號,並點擊"新增"按鈕
9.取消匿名使用者的所有權限,並加入第8步驟建立的管理者所有權限
10.關閉網頁並重啟jenkins
11.註冊使用者,使用者名稱記得輸入第8步驟建立的管理者帳號
12.成功登入,完成!!

更改目錄權限(包含子檔案)

開啟終端機輸入

chmod 777 -R ./*

會包含當前目錄及其子檔案

ubuntu 解壓縮 出現亂碼


安裝 p7zip ,可解決解壓縮檔出現亂碼問題

打開終端機輸入
sudo apt-get install p7zip-rar

使用終端機解壓縮
7z e 檔名.rar

更多的使用方法請官網參考吧

7-zip官網

window os error:舊式主機板安裝winxp, 出現 0x0000007B 藍白畫面


出現 0x0000007B 的可能原因 ,請參考此篇

出現情況為舊式主機板安裝winxp,但無SATA(Serial ATA)的驅動程式,解決方式有2種

1.安裝winxp過程中,press F6 安裝 SATA 驅動程式(未試驗)

2.使用nLite,將 SATA 驅動程式整合到 winxp 安裝光碟中(已試驗)
請參考此篇


Can't bind to local 8X00 for debugger


跑模擬器有時會出現此錯誤,基本上和這篇類似

解決方法:開啟 eclipse 後 -> Window -> Preferences  -> Android -> DDMS

勾選 Use ADBHOST -> 127.0.0.1

在 ubuntu 上安裝 jenkins

1.安裝 Jenkins
開啟終端機輸入

$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -

$ sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'

$ sudo aptitude update 

$ sudo adduser jenkins
(unix密碼輸入自選 , 全名輸入jenkins , 其他使用預設(enter))

$ sudo aptitude install jenkins 

查看安装是否成功:
開啟瀏覽器输入 http://localhost:8080 或 http://127.0.0.1:8080
使用指令啟動jenkins : sudo /etc/init.d/jenkins start
使用指令停止 jenkins : sudo /etc/init.d/jenkins stop
此時在區網內其他電腦也可開啟瀏覽器輸入 http://遠端ip:8080 (遠端ip視內外網而定)

2.安裝其他套件
從 http://updates.jenkins-ci.org/download/plugins/ 選擇需要的套件
下載後通常是 .hpi 格式,把這些放到 /var/lib/jenkins/plugins ,再重新啟動Jenkins
(先移動到放置 .hpi資料夾中 使用 cp -r ./ /var/lib/jenkins/plugins)






putty psftp使用記錄

Putty
1.到官網下載 putty

2.執行 putty 依序輸入 遠端主機id , 選擇 ssh , 點擊連線

3. login as : 遠端主機帳號
    password : 遠端主機帳號密碼

psftp
1.到官網下載 psftp

2.執行 psftp 輸入 open 遠端主機id 按enter

3.輸入遠端主機帳號

4.再輸入密碼

ps.使用指令類似 sftp

ubuntu 使用 ssh sftp 記錄


SSH
1.  安裝 ssh server
終端機輸入
sudo apt-get install openssh-server openssh-client

2. 啟動 ssh server
終端機輸入
sudo /etc/init.d/ssh start

3. 遠端連線
終端機輸入
ssh 遠端主機帳號@遠端主機id
輸入密碼


SFTP
1. 遠端連線
終端機輸入
sftp 遠端主機帳號@遠端主機id
輸入密碼

2. 可使用在遠端主機指令
pwd , cd , ls , dir , mkdir , rmdir , rm , rename , chmod , chgrp , chown

3. 可使用在本機端指令
lcd , lls , lmkdir , lpwd , lrmdir

4. 本機上傳檔案到遠端
put 本機檔案 遠端路徑

5. 從遠端下載檔案到本機
get 遠端檔案 本機路徑


Git error: Permission denied (publickey). fatal: The remote end hung up unexpectedly


Permission denied (publickey).
fatal: The remote end hung up unexpectedly

原因:在本機端 git clone 專案時,使用指令時權限錯誤

解決:在輸入git clone 指令時切換到適合的權限,再輸入

或在放置專案的地方輸入 sshp-add

ubuntu gcin 輸入法


開啟終端機輸入
apt-get install gcin

安裝完成後重開機即可使用

調整設定
系統 -> 偏好設定  -> gcin 輸入法設定 -> 內定輸入法 開啟&關閉

eclipse android 實機装置顯示 ????????? unknow

在 ubuntu 上的 eclipse + android 遇到實機顯示 ??????

解決
開啟终端機輸入
sudo -s
輸入密碼取得  root 權限

移動到 SDK 中的 platfarm-tools

以下步驟可能要重複好幾次,直到顯示名稱OK
輸入
sudo ./adb kill-server
會開始Connection attempts: 趕快再輸入
sudo ./adb devices

如果装置有顯示名稱就OK了


ubuntu10.04 調整解析度


安裝好 ubuntu 之後解析度只有 800x600 和 640x480,如何調整更大的解析度呢

參考此篇

解法:

1.
終端機輸入
gtf 1280 1024 60 -x

2.
再輸入
sudo gedit /etc/X11/xorg.conf

把以下內容全部貼到 xorg.conf裡面
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection

Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
EndSection

Section "Device"
Identifier "Configured Video Device"
EndSection

Section "Monitor"
Identifier "Configured Monitor"
Vendorname "Generic LCD Display"
Modelname "LCD Panel 1280x1024"
Horizsync 31.5-64.0
Vertrefresh 56.0 - 65.0
modeline "640x480@60" 25.2 640 656 752 800 480 490 492 525 -vsync -hsync
modeline "800x600@56" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync
modeline "800x600@60" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
modeline "1024x768@60" 65.0 1024 1048 1184 1344 768 771 777 806 -vsync -hsync
modeline "1280x960@60" 102.1 1280 1360 1496 1712 960 961 964 994 -hsync +vsync
modeline "1280x1024@60" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
Gamma 1.0
EndSection

Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
Defaultdepth 24
SubSection "Display"
Depth 24
Virtual 1280 1024
Modes "1280x1024@60" "1280x960@60" "1024x768@60" "800x600@60" "800x600@56" "640x480@60"
EndSubSection
EndSection

Section "ServerLayout"
Identifier "Default Layout"
screen 0 "Default Screen" 0 0
EndSection
Section "Module"
Load "dri"
Load "v4l"
EndSection
Section "ServerFlags"
EndSection

Git error: Permission denied (publickey) fatal: Could not read from remote repository

錯誤訊息:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

問題原因:

通常是 SSH Key 沒有加入的問題

解決方式:
1.重新產生 SSH Key

終端機輸入
ssh-keygen –t rsa –b 2048

2.顯示 SSH Key

終端機輸入
cat ~/.ssh/id_rsa.pub    

3.貼到 Gerrit 中
Settings -> SSH Public Keys -> add key 
貼上第2步中所有的內容

Git 使用記錄(移除檔案+更改檔名)


1.移除檔案
在一個容器中新增檔案時,此檔案會被歸類於未追蹤
我們新增一個文件叫 testrm 來試試看,輸入

echo 'test in rm' > testrm

再輸入 git status
的確是在未追蹤,現在我們把它加入容器中(改變狀態為已加入)
輸入 git add testrm

如果這時候想把它從已加入去除的話,輸入 git rm --cached
OK~ 看起來是從已加入去除了,不過為了保險起見,還是輸入 git status 看看
testrm 的確回復到未追蹤的狀態

那如果檔案已加入而且已被提交,如何從容器中去除?

再次把 testrm 加入並提交,輸入

git add testrm
git commit -m "commit testrm"

到此 testrm 已被提交,從已提交中移除需要2個步驟
第ㄧ種情況想保留 testrm 檔案,單純的想從容器中移出,輸入

git rm --cached testrm
再輸入 git commit -m "delete testrm"
如此檔案本身存在只是會被移出容器

第二種情況如果想連檔案本身一起移除的話,輸入

git rm testrm

到此,觀察資料夾雖然可以看到 testrm 已經不存在,但還是要提交,輸入

git commit -m "delete testrm"


現在 testrm 不但被移出容器外且本身也不存在

2.更改檔名
先新增一個檔案為 testmv ,輸入

echo 'test_mv' > testmv

更改檔名只能在已加入的狀態修改,所以先把它加入吧,輸入

git add testmv

更改檔名的格式為 git mv 原檔名 新檔名 ,輸入

git mv testmv testmv2

在資料夾中可以看到 testmv 已經變成 testmv2 了

不過輸入 git status 看看,會提示必須提交才算完成
輸入 git commit -m "rename testmv to testmv2"

再輸入 git status

可以看到更名的步驟已經提交完成
至於已經提交檔案的更名步驟也是相同,必須先輸入更名的指令,再提交










Git 使用記錄(初始化容器+複製外部容器+加入檔案+觀察容器檔案內容+觀察檔案差異+提交檔案+觀察提交檔案內容)


1.初始化容器

選擇想要的資料夾當作容器,在家目錄中新建資料夾 Git_Project 為範例
開啓終端機,輸入

cd ~
mkdir Git_Project
cd Git_Project
echo 'test in git' > testword

到此完成 Git_Project 資料夾和 以 test in git 為內容的 testword 文件建立

接著輸入

git init 

指定以目前資料夾(Git_Project)為容器

2.複製外部容器
這裡以 google code 為例
輸入

git clone https://0000foxx@code.google.com/p/foxx-gitproject-gittest/ 

也可以指定名稱(dir_name)
輸入

git clone https://0000foxx@code.google.com/p/foxx-gitproject-gittest/  dir_name

3.加入檔案

git add testword

如果檔案中有許多資料想全部加入追蹤,輸入

git add .

4.觀察容器檔案狀態
輸入

git status

如果照著以上步驟作的話會得到以下畫面
顯示我們在  master 的 branch 上, testword 檔案將會在下次提交的時候記錄起來
接著修改 testword 內容為

test in git 2

再輸入 git status 看看
git 很好心的提示我們 testword 已經被修改了,需要重新 add 才行,輸入

git add testword

git status

OK~ 修改的部分也已經加入了

5.觀察檔案差異
剛剛使用 git status 只會顯示已被修改,若想進一步觀察修改了哪些內容可以使用 git diff

修改 testword 內容為

test in git 3

接著輸入

git diff
上次修改和目前的差異,注意 git diff 只能顯示還未 add 的差異,如果要比較已經提交和目前的差異要用 git diff --cached 或 git diff --staged

6.提交檔案

輸入 git commit
 提交時必須輸入註解訊息,如果是用 vim 先按 a ,下方的提示會顯示 INSERT ,再輸入註解訊息完成後,先按 esc 再按 :wq

提交完成會得到以下畫面
可以得知在哪個 branch(master) 上,以及註解內容等等
再次輸入

git status
(可以看到已經沒有東西可以提交)
7.觀察提交檔案內容
想要知道最近提交的內容,可以使用 git log 或 git show
輸入

git log
(會顯示每個提交的內容,識別碼)
git show 可以附註識別碼來指定觀察

輸入
git show 4941f8fbb701c41f71da7dd70653b43ced98d40f
可以看到提交檔案更詳細的內容



Git 使用記錄 (下載Git+安裝Git+設定配置姓名和Email)


1.安裝git

直接到官網下載安裝,除了 Mac/Windows 使用安裝檔(dmg/exe),其他的都用指令安裝

2.測試git

開啓終端機,輸入
git

順利的話會得到類似以下畫面的回應,代表已經安裝完成
來看看目前版本,輸入
git --version

會顯示安裝版本
3.設定個人訊息
在提交檔案之前先來設定 個人訊息 的配置,包含名字和E-mail
輸入

git config user.name "your_name"
git config user.email "your_email"

如果出現

error: could not lock config file .git/config: No such file or directory

請加入 --global

git config --global user.name "your_name"
git config --global user.email "your_email"

之後提交檔案都會使用這組個人訊息,當然想重新設定也是沒問題

可以使用 git config --list 來查看個人訊息
想要查詢指令如何使用,輸入
git help 指令

git help config



MacBook Pro 編譯 Android 核心


上一篇已建立並編譯 Android Source Tree ,這篇記錄 Android Kernel 的編譯

上篇提到的 Android Source Tree 並不包含 Kernel 的部分,因此當你想對 Kernel 作修改時 必須另外下載 Kernel 的部分

這篇也是照著 Google 提示的操作

先掛載 android.dmg 並移動到之前建立的 android 資料夾中,建立新資料夾(Android_KERNEL)以放置 Kernel 原始碼,如果想針對不同廠商核心編譯可以再建立方便識別的資料夾(panda)

使用 git 下載 Kernel
git clone https://android.googlesource.com/device/ti/panda

移動到 panda資料夾
cd panda
取得 commit message
git log --max-count=1 kernel
出現的訊息會類似下圖,我們需要的部分是 Built from kernel 後面那一串訊息
(cb5fc502c60be9305c5a007be335e860d9e7c0cb)
下載想編譯的kernel ,以google的例子下載 omap
$ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/exynos.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git
確認prebuilts-gcc在path中
export PATH=$(pwd)/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH
編譯,其中 commit_from_first_step 填入(cb5fc502c60be9305c5a007be335e860d9e7c0cb)
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd omap
$ git checkout <commit_from_first_step>
$ make panda_defconfig
$ make



MacBook Pro 建立 Android Source Environment (不需 Ubuntu)


由於工作會轉移到 Android BSP ,先來建立環境熟悉一下,注意此篇不需建立 Ubuntu

規格: MacBook Pro (Lion) , Mac OS X 10.7 , Xcode 4.6.1

參考資料:AOSP官網




步驟直接從 Setting up Mac OS X build environment 開始即可

1.
建立 case-sensitive disk image

首先提到 Mac OS 是 case-insensitive (不區分大小寫) 但這會造成部分 git 指令的錯誤
所以建議我們製作 case-sensitive 的 disk image

你可以使用

A.launch Disk Utility and select "New Image". A size of 25GB is the minimum to complete the build, larger numbers are more future-proof. Using sparse images saves space while allowing to grow later as the need arises. Be sure to select "case sensitive, journaled" as the volume format.

或者是

B.開啓終端機,輸入以下指令
# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
(強烈建議指令用複製貼上)

完成後在 /User/使用者 會出現 android.dmg.sparseimage ,當掛載這個disk Image 在桌面上便會出現一個磁碟空間

預設掛載disk image後出現的磁碟空間名稱為 untitled ,可改為 android


2.
編輯 ~/.bash_profile
開啓終端機輸入

vi ~/.bash_profile

並加入以下內容
(注意 android.dmg 要看實際的名稱修改,有可能是android.dmg.sparsefile
而 /Volumes/android 中的android也是一樣,視情況修改)
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }

提示: 操作的步驟為先按 a 進入INSERT模式,再貼上,離開時先按esc結束編輯,再輸入:wq 儲存離開


3.
安裝需要的套件

3-1.
首先安裝 Xcode ,建議 Xcode 版本需要 3.1.4(含)以上, 到 Apple Developer Site 下載
如果已經安裝的 Xcode 版本太高(e.g. 4.x),還需要 Mac OS 10.5 SDK

Mac OS X 10.5 SDK 安裝方式為:先到這裡左邊搜尋框輸入 xcode 3.1.4 並下載,下載完成後點擊 xcode314_2809_developerdvd.dmg
接著在桌面上會出現 Xcode Tools -> Packages -> MacOSX10.5.pkg ,點擊後更改安裝位置選擇 Developer ,完成後可以看到 Developer/SDKs 中多了  MacOSX10.5.sdk

3-2.
安裝 MacPorts,這部分也是照著google的提示
先把
export PATH=/opt/local/bin:$PATH
加到 ~/.bach_profile 中
接著取得 make , git , gpg packages
開啓終端機輸入
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
如果系統是 MacOS 10.4,還要加入以下指令
$ POSIXLY_CORRECT=1 sudo port install bison

3-3.
為了消除 gmake 3.82 的bug, 建議安裝 gmake 3.81,
首先將以下指令加入 /opt/local/etc/macports/sources.conf 
file:///Users/Shared/dports
建立目錄
$ mkdir /Users/Shared/dports
移動到 /Users/Shared/dports 中,輸入
$ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
輸入
$ portindex /Users/Shared/dports
最後安裝 gmake 3.81
$ sudo port install gmake @3.81


4.
解除 file descriptor limit
在 ~/.bash_profile 加入
# set the number of open files to be 1024
ulimit -S -n 1024


5.
下載 Android Source Tree

5-1.
安裝 Repo
開啓終端機輸入
$ mkdir ~/bin
$ PATH=~/bin:$PATH
下載 Repo
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

5-2.
初始化 Repo

先掛載步驟1.建立的disk image,接著桌面上會出現一個磁碟空間
開啓終端機輸入指令移動到該磁碟空間中並建立一個空的目錄(WORKING_DIRECTORY)
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
(WORKING_DIRECTORY,名稱可自取)

接著輸入初始化指令(這個是下載 master 版本,如果Mac OS 版本為10.7 強烈建議選擇)
$ repo init -u https://android.googlesource.com/platform/manifest

也可以看看別的分支版本,使用 -b 指定版本(這個是下載指定版本 android-4.0.1_r1)
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
在過程中會出現輸入名字和email以及顏色測試,就按照需求輸入吧
(使用 repo 指令若出現 command not found,請輸入整個路徑如 ~/bin/repo init ....)


5-3.
下載 Android Source Tree (此下載時間相當久,3m速度大概要3~4小時)
終端機輸入
$ repo sync


6.
建立和執行

6-1.
初始化環境,終端機輸入
$ source build/envsetup.sh
6-2.
選擇 Target
終端機輸入
$ lunch full-eng
可以自由選擇輸入的參數
Build nameDeviceNotes
fullemulatorfully configured with all languages, apps, input methods
full_maguromagurofull build running on Galaxy Nexus GSM/HSPA+ ("maguro")
full_pandapandafull build running on PandaBoard ("panda")
and the BUILDTYPE is one of the following:
BuildtypeUse
userlimited access; suited for production
userdebuglike "user" but with root access and debuggability; preferred for debugging
engdevelopment configuration with additional debugging tools
6-3.
編譯
終端機輸入
$ make -j4
(4代表行程數)


7.
錯誤處理
第一次編譯會出現 strnlen 錯誤,



搜尋發現 此篇 有提到解決方法
簡單的說就是修改 ./external/elfutils/config-compat-darwin.h 中的 strnlen 方法為

#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
static inline size_t strnlen (const char *__string, size_t __maxlen)
{
int len = 0;
while (__maxlen-- && *__string++)
len++;
return len;

}
#endif

修正以後重新編譯會得到第二次錯誤
這次的錯誤是在 ld: illegal text-relocoation 開始,google發現老外有一樣的錯誤,原因眾說紛紜,有人說也許跟 Android Source 版本不同有關,這次只好選擇下載master版本

使用以下指令來取得 master 版本(原先發生錯誤版本為 Android 4.0.1_r1)
$ repo init -u https://android.googlesource.com/platform/manifest
一樣重複下載...(3~4個小時)
$ repo sync
初始化
$ source build/envsetup.sh
選擇 Target
$ lunch full-eng
編譯
$ make -j4

編譯完成!!!
跑模擬器
終端機輸入
$ emulator

基本上建立環境並不難,只是步驟稍微多了點,請先注意本地端Mac OS SDK版本,還有在
下載 Android Source Tree 以及編譯的時候通常都要2~3個小時,時間的花費相當驚人@@

下一篇會介紹 MacBook Pro 編譯 Android kernel



Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews