[分享] Build source code to device
官網其實更新蠻慢的,有些資訊已經過時了 (且過時的離譜...)
小弟為了想要放編譯原始碼的文章進精華區,所以自己寫一篇吧
編這東西很容易失敗,就拿錯誤訊息喂狗或上來問吧,祝順利 :)
以下,正文開始
======================================
環境為 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
→
01/14 01:37, , 1F
01/14 01:37, 1F
→
01/14 02:04, , 2F
01/14 02:04, 2F
→
01/14 02:05, , 3F
01/14 02:05, 3F
→
01/14 02:05, , 4F
01/14 02:05, 4F
→
01/14 02:08, , 5F
01/14 02:08, 5F
→
01/14 02:10, , 6F
01/14 02:10, 6F
→
01/14 09:49, , 7F
01/14 09:49, 7F
→
01/14 09:50, , 8F
01/14 09:50, 8F
→
01/14 09:50, , 9F
01/14 09:50, 9F
→
01/14 13:33, , 10F
01/14 13:33, 10F
推
01/14 21:25, , 11F
01/14 21:25, 11F
※ 編輯: nowar100 來自: 114.36.175.16 (02/12 23:04)
推
02/18 16:16, , 12F
02/18 16:16, 12F
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章