android原始碼學習之原始碼編譯並nexus s真機刷機
一、使用原廠映象對nexus s刷機
在開啟的頁面中選擇Factory Images "soju" for Nexus S下面的三個鏡象,這裡選擇4.0.4 (IMM76D),
下載好是soju-imm76d-factory-ca4ae9ee.tgz,解壓,並把fastboot.zip包下面的那些工具拷到soju目錄下,
adb reboot bootloader // bootloader介面,fastboot介面
sh flash-all.sh或者雙擊flash-all.bat
2. 解鎖並刷入recovery.img
1) 解鎖。
要想獲得root許可權,必須解鎖。如果已解鎖就不要再執行unlock了。
adb reboot bootloader // 進入bootloader介面。 開機時按住音量上+電源
fastboot oem unlock //注意這步會刪除掉SD卡、ROM中的原有內容,請在之前做好備份
2) 刷入recovery並root
把ROOT&BusyBox_Patch.zip放入手機sdcard,執行:
adb reboot bootloader // 開機時按住音量上+電源
fastboot flash recovery recovery.img // v4.0.1.4
刷完後不要重啟,否則recovery會被恢復到原版。直接由bootloader介面進入recovery,點選install zip from sdcarcd,選擇ROOT&BusyBox_Patch.zip,搞完後重啟。
獲取root失敗,需要通過百度一鍵root工具進行root.
i9300的root:
adb reboot bootloader // 進入bootloader介面
開啟執行Odin3v3.06.exe,勾選AutoReboot/F.Reset Time兩項,點選PDA按鈕,從刷機工具包中選擇CF-Root-SGS3-recovery.tar。
開啟執行Odin3v3.06.exe,勾選AutoReboot/F.Reset Time兩項,點選PDA按鈕,從刷機工具包中選擇CF-Root-SGS3-recovery.tar。
adb reboot recovery //進入recovery介面
二、自己編譯android原始碼並刷到nexus s裝置中
1. 下載原始碼(這裡我選擇android4.0.4_r1.1):
mkdir android4.0.4_r1.1
cd android4.0.4_r1.1
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ./repo
chmod a+x repo
開啟https://android.googlesource.com/new-password開啟,申請結果拷貝到~/.netrc
./repo init -u https://android.googlesource.com/platform/manifest -b android4.0.4_r1.1
cd android4.0.4_r1.1
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ./repo
chmod a+x repo
開啟https://android.googlesource.com/new-password開啟,申請結果拷貝到~/.netrc
./repo init -u https://android.googlesource.com/platform/manifest -b android4.0.4_r1.1
如果下載失敗,則改為以下重試:
./repo init -u https://android.googlesource.com/a/platform/manifest -b android4.0.4_r1.1
最後./repo sync下載
注:關於版本的選擇
從https://developers.google.com/android/nexus/images 上看,我手上的裝置港版i9023只能刷soju,
2.3.6 (GRK39F)
4.0.4 (IMM76D)
4.1.2 (JZO54K)
所以我就選擇以上的原始碼之一進行編譯,從http://source.android.com/source/build-numbers.html中查一下,以上三種原始碼對應的括號裡的程式碼,這裡我選擇IMM76D,找到android-4.0.4_r1.1
2. 編譯原始碼
1) 在編譯之前要設定好vendor目錄。開啟http://source.android.com/source/building-devices.html,找到“Obtaining proprietary
binaries”,按說明操作:
開啟https://developers.google.com/android/nexus/drivers,搜尋IMM76D,在Binaries
for Nexus S ("crespo")目錄下找到Nexus S binaries for Android 4.0.4 (IMM76D to IMM76L),這裡有五個link連結,下載下來,各自解壓放到原始碼根目錄下,依次執行sh extract-xxxx.sh並輸入I ACCEPT。最後你會發現原始碼根目錄下增加了vendor目錄。
2) 編譯
. build/envsetup.sh
lunch (顯示所有選項,輸入full_crespo-userdebug前面的數字)
make clobber //刪除所有配置所編譯輸出的結果檔案。類似於:rm –rf ./out/
make -j16
注:其他make命令
make clean 刪除本次配置所編譯輸出的結果檔案。類似於:rm –rf ./out/ <configuration>
make LOCAL_MODULE:編譯一個單獨得模組(需要有Android.mk檔案存在)。
make targets:將輸出所有擬可以編譯的模組名稱列表。
3. 將編好的img檔案刷到nexus s手機中:
編譯完成後進入out/target/product/crespo目錄檢視,
將boot.img和system.img拷到fastboot目錄下,
adb reboot bootloader
執行:
fastboot -w -p flashall
fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash recovery recovery.img
fastboot flash system system.img
fastboot flash userdata userdata.img
//fastboot flash cache cache.img
//fastboot flash ramdisk ramdisk.img
完了以後重啟手機檢視手機版本號4.0.3
總結:這樣就可以在真機上執行我們自己編譯原始碼的鏡象,就不用每次依賴模擬器來學習原始碼了。
其他falsh命令參考:
fastboot flash recovery recovery.img
fastboot flash userdata userdata.img
fastboot flash ramdisk ramdisk.img
更多fastboot命令參考上文中flash-all.sh
參考:
===========================
2015.10.31
編譯android4.1.2_r1 需要java6,ubuntu12.04上安裝java6的方法:
1. 在/etc/apt/sources.list 末尾加上如下行:
###for install Java6
deb http://ppa.launchpad.net/ferramroberto/java/ubuntu natty main
2. sudo apt-get update
更新索引時候提示:
W: GPG 錯誤:http://ppa.launchpad.net natty Release: 由於沒有公鑰,無法驗證下列簽名: NO_PUBKEY B725097B3ACC3965
3. 下載安裝這個key
sudo apt-key adv --recv-key --keyserver keyserver.ubuntu.com B725097B3ACC3965
4. sudo apt-get update
5. sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-plugin ( 你也許還要:sudo apt-get install sun-java6-demo sun-java6-source)
6. 安裝完後,系統默任被切換到 java6上來
7. 安裝完畢後把 /etc/sources.list 增加的兩行註釋掉然後sudo apt-get update 以避免升級安裝之混亂
8. 如果你的系統之前安裝過預設java7,如果你覺得想回來練練。可以這樣來回切換java的版本:
sudo update-java-alternatives -s java-7-oracle
sudo update-java-alternatives -s java-6-sun
當然驗證java的版本的方法是: java -version; javac -version
============================
2015年11月2日 星期一
刷機
adb reboot bootloader//重啟進入fastboot模式
adb reboot recovery // recovery介面
編譯
make snod//產生一個新的系統映像system.img
make ramdisk//編譯ramdisk
make userdataimage//編譯userdata
make systemimage//編譯system
make bootimage//編譯kernel
相關文章
- Ubuntu 15.04編譯Android 6.0.1原始碼-Nexus5真機編譯Ubuntu編譯Android原始碼
- Mac 10.14 編譯Android 8.1原始碼及刷入nexus 6pMac編譯Android原始碼
- Android FrameWork 之原始碼編譯AndroidFramework原始碼編譯
- 編譯Android原始碼編譯Android原始碼
- Android原始碼閱讀-編譯8.0原始碼Android原始碼編譯
- PostgreSQL原始碼學習 win10原始碼編譯安裝SQL原始碼Win10編譯
- Android原始碼編譯--整理Android原始碼編譯
- Android原始碼學習之handlerAndroid原始碼
- Android學習系列(38)--Android原始碼下載和編譯Android原始碼編譯
- 學習Hibernate原始碼一_下載hibernate原始碼並編譯為eclipse專案原始碼編譯Eclipse
- Ubuntu14.04下編譯Android8.1.0原始碼並刷入到裝置Ubuntu編譯Android原始碼
- FFmpeg學習之一(FFmpeg原始碼編譯)原始碼編譯
- 【Android原始碼】Handler 機制原始碼分析Android原始碼
- 【轉】編譯Android系統原始碼和核心原始碼編譯Android原始碼
- Kubernetes原始碼學習之一:下載和編譯原始碼原始碼編譯
- MacOS X 編譯Android原始碼Mac編譯Android原始碼
- Spring原始碼學習一_下載Spring專案原始碼並編譯為Eclipse專案Spring原始碼編譯Eclipse
- 如何學習 PHP 原始碼 – 從編譯開始PHP原始碼編譯
- Macbook Pro下載並編譯Android原始碼並匯入Android StudioMac編譯Android原始碼
- Dubbo原始碼之動態編譯原始碼編譯
- React 原始碼學習(五):事件機制React原始碼事件
- Android 原始碼中的編譯命令Android原始碼編譯
- Android原始碼編譯整理總結Android原始碼編譯
- android 反編譯APK取原始碼。Android編譯APK原始碼
- Ubuntu 18.04(虛擬機器)環境下編譯Android 原始碼Ubuntu虛擬機編譯Android原始碼
- jQuery原始碼學習之$()jQuery原始碼
- android原始碼學習-Handler機制及其六個核心點Android原始碼
- Unity飛機大戰 原始碼 分享 學習Unity原始碼
- Android 11 原始碼下載+編譯教程Android原始碼編譯
- 記一次編譯Android原始碼編譯Android原始碼
- Android Apk反編譯得到Java原始碼AndroidAPK編譯Java原始碼
- 原始碼編譯Vim 8原始碼編譯
- MongoDB(0)- 原始碼編譯MongoDB原始碼編譯
- 編譯hibernate原始碼編譯原始碼
- Docker編譯Azerothcore原始碼Docker編譯原始碼
- Spring原始碼編譯Spring原始碼編譯
- goFrame 原始碼學習之 ServerGoFrame原始碼Server
- jQuery原始碼學習之eventjQuery原始碼