作者nowar100 (拋磚引玉)
看板AndroidDev
標題[分享] Build source code to device
時間Fri Jan 14 01:34:49 2011
官網其實更新蠻慢的,有些資訊已經過時了 (且過時的離譜...)
小弟為了想要放編譯原始碼的文章進,所以自己寫一篇吧
編這東西很容易失敗,就拿錯誤訊息喂狗或上來問吧,祝順利 :)
以下,正文開始
======================================
環境為 Ubuntu 10.04
在下載原始碼之前,必須先把一些工具給裝好
首先先把 sun-jdk 的來源加進去,否則會找不到這個套件
$ sudo add-apt-repository \
"deb http://archive.canonical.com/ lucid partner"
$ sudo aptitude install \
git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev \
libwxgtk2.6-dev squashfs-tools build-essential zip curl \
libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush
x64 的要多安裝一些庫,才能相容
$ sudo aptitude install \
g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev \
gcc-4.3-multilib g++-4.3-multilib
該原始碼的管理程式是 git,Google 將他包裝一層成新的工具 repo
$ curl http://android.git.kernel.org/repo > repo
$ chmod +x repo
把抓下來的 repo 放到你的 $PATH 裡面
(不知道 $PATH 的請左轉 Linux 板)
好,前置工作結束,接著開始下載原始碼
$ mkdir mydroid
$ cd mydroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git
(如果想指定 branch 版本,就在後面加上 -b version_name)
(例如: repo init -u git://... -b gingerbread)
$ repo sync
好,現在開始抓原始碼了,可以起來去上個廁所,喝杯咖啡
這需要花點時間,等結束之後,開始編譯
(這更久,我第一次體會到什麼叫做大專案...)
$ export USE_CCACHE=1 && make
編譯完,可以看到多一個資料夾 out/ ,裡面會放編出來的東西
恭喜你,本文的前半部到此結束
想開 emulator 來玩的話,猜猜他在 out/ 資料夾下的哪邊吧 :D
======================================
有人有疑問了,我想燒進手機玩,可是網站沒寫怎麼燒阿!?
所以這就是這篇文下半部的內容了
由於 Google 官方開發的手機是 Nexus 系列,目前只有兩隻 (One, S)
因此剛剛抓下來的原始碼能燒的也只有這兩隻
(如果想燒進別的手機,請找非官方的,例 CyanogenMod)
將剛剛編好的東西直接燒進去就可以了嗎?當然不是
每隻手機都有自己 device-specific 檔案,例如驅動
所以我們要調一下設定,首先回到剛剛的資料夾
$ cd mydroid
$ source build/envsetup.sh
如果剛剛沒有先編好一次,現在請先編出 adb
$ make adb
接著運行 adb
$ ./out/host/linux-x86/bin/adb root
插上您的手機,將一些 device-specific 檔案抓到電腦來
$ cd device/{htc,samsung}/{passion,crespo}
$ ./extract-files.sh
$ cd ../../../
前置作業到此完成,接著選擇你要編的 target
$ lunch
這時候有看到幾個選項,其中有兩個
3. full_passion-userdebug <= for Nexus One
4. full_crespo-userdebug <= for Nexus S
選好之後,再 make 一次
$ export USE_CCACHE=1 && make
編好之後,最後一步,將相關映像檔燒進手機
先要確定好手機是連上電腦的, 也有解鎖,進入 fastboot 模式
(不知道怎麼進的請左轉 Android 板)
開始燒錄
$ ./out/host/linux-x86/bin/fastboot flash system \
out/target/product/{passion,crespo}/system.img
$ ./out/host/linux-x86/bin/fastboot flash boot \
out/target/product/{passion,crespo}/boot.img
$ ./out/host/linux-x86/bin/fastboot flash recovery \
out/target/product/{passion,crespo}/recovery.img
$ ./out/host/linux-x86/bin/fastboot flash userdata \
out/target/product/{passion,crespo}/userdata.img
$ ./out/host/linux-x86/bin/fastboot reboot
走到這一步,恭喜您,大功告成
本文也功德圓滿,在此結束
謝謝您的閱讀
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.167.13
1F:→ nowar100:收錄至 z-3-3-1 01/14 01:37
2F:→ coolkevin:android官方網站不是說只有支援Java5嗎 01/14 02:04
3F:→ coolkevin:如果使用Java6編出來的image, 會不會導致有些功能異常? 01/14 02:05
4F:→ nowar100:這就是我說"過時的離譜"的點... 01/14 02:05
5F:→ coolkevin:所以實際上用Java6也是沒問題囉:O 01/14 02:08
6F:→ nowar100:我自己在 Ubuntu x64 下已經成功編完了 :) 01/14 02:10
7F:→ coolkevin:我有在32bit上的fedora編過image 01/14 09:49
8F:→ coolkevin:可以用emulator跑, 不過不知道裝apk進去 01/14 09:50
9F:→ coolkevin:不知會不會有其他問題,目前只有裝幾個來測試而已 01/14 09:50
10F:→ nowar100:更新至 z-3-3-1 01/14 13:33
11F:推 yienge:推一個好文 學到了m(_ _)m 01/14 21:25
※ 編輯: nowar100 來自: 114.36.175.16 (02/12 23:04)
12F:推 nfsnfs:讚! 推一下 :D 做過很多次 不過以前刷 G1 都多少有點問題 02/18 16:16