[分享] Build source code to device

看板AndroidDev作者 (拋磚引玉)時間14年前 (2011/01/14 01:34), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串1/1
官網其實更新蠻慢的,有些資訊已經過時了 (且過時的離譜...) 小弟為了想要放編譯原始碼的文章進精華區,所以自己寫一篇吧 編這東西很容易失敗,就拿錯誤訊息喂狗或上來問吧,祝順利 :) 以下,正文開始 ====================================== 環境為 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
收錄至 z-3-3-1
01/14 01:37, 1F

01/14 02:04, , 2F
android官方網站不是說只有支援Java5嗎
01/14 02:04, 2F

01/14 02:05, , 3F
如果使用Java6編出來的image, 會不會導致有些功能異常?
01/14 02:05, 3F

01/14 02:05, , 4F
這就是我說"過時的離譜"的點...
01/14 02:05, 4F

01/14 02:08, , 5F
所以實際上用Java6也是沒問題囉:O
01/14 02:08, 5F

01/14 02:10, , 6F
我自己在 Ubuntu x64 下已經成功編完了 :)
01/14 02:10, 6F

01/14 09:49, , 7F
我有在32bit上的fedora編過image
01/14 09:49, 7F

01/14 09:50, , 8F
可以用emulator跑, 不過不知道裝apk進去
01/14 09:50, 8F

01/14 09:50, , 9F
不知會不會有其他問題,目前只有裝幾個來測試而已
01/14 09:50, 9F

01/14 13:33, , 10F
更新至 z-3-3-1
01/14 13:33, 10F

01/14 21:25, , 11F
推一個好文 學到了m(_ _)m
01/14 21:25, 11F
※ 編輯: nowar100 來自: 114.36.175.16 (02/12 23:04)

02/18 16:16, , 12F
讚! 推一下 :D 做過很多次 不過以前刷 G1 都多少有點問題
02/18 16:16, 12F
文章代碼(AID): #1DBpUzTZ (AndroidDev)
文章代碼(AID): #1DBpUzTZ (AndroidDev)