編譯環境是Ubuntu12.04。手機nexus 5,編譯安卓6.0.1源碼並燒錄到真機。 源碼用的是科大的鏡像:http://mirrors.ustc.edu.cn/aosp-monthly/,下載完之後會有一個aosp-latest.tar文件,然後新建一個倉庫,把它解壓到你的倉庫里。這裡下載會 ...
編譯環境是Ubuntu12.04。手機nexus 5,編譯安卓6.0.1源碼並燒錄到真機。
源碼用的是科大的鏡像:http://mirrors.ustc.edu.cn/aosp-monthly/,下載完之後會有一個aosp-latest.tar文件,然後新建一個倉庫,把它解壓到你的倉庫里。這裡下載會需要點時間。
然後repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b 你的版本,比如現在我們編譯6.0.1的版本,就直接repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-6.0.1_r1
完了之後執行 repo sync ,同步更新你的代碼,這裡會花費點時間。
註:這裡有些人如果第一次用repo的話,得先要安裝repo。然後才能用
repo sync 完了之後,會在你的倉庫裡面出現很多文件。如下圖,剛開始第一次編譯的時候是沒有out生成的。
因為還要刷入真機,所以我們還需要驅動,你們可以看自己用的是什麼機型,然後去官網找相對應的驅動,
驅動網址 https://developers.google.com/android/nexus/drivers#hammerheadmra58k
我這裡用的是Nexus5,所以我自己下了一個,如果官網進不了的話,我這裡有一個Nexus5的驅動,鏈接:https://pan.baidu.com/s/1kx4J8pf2CV3yH54tgwEXUA 密碼:s9n6
裡面有三個.sh文件,把它們放在你們項目的根目錄,然後分別執行.sh文件,執行之後,它會有說明,一直按回車,這時要註意,在執行每個文件最後的時候,它會提示讓你輸入 I ACCEPT。輸入完了之後,就會在當前目錄生成vendor文件。
這時所有東西都就緒了,下一步就可以開始編譯源碼。
source build/envsetup.sh
執行lunch命令,選擇你要編譯的手機的版本,我這裡nexus 5選擇hammerhead。如下圖所示
選擇完之後,然後執行以下make clobber,清除無用的編譯。
然後執行prebuilts/misc/linux-x86/ccache/ccache -M 50G設置緩存大小。
通常是根據你機器cup的核心來確定:core*2,即當前cpu的核心的2倍.
查看核心數量
grep 'core id' /proc/cpuinfo | sort -u | wc -l
查看線程數
grep 'processor' /proc/cpuinfo | sort -u | wc -l
比如,我現在的筆記本是雙核四線程的,因此根據公式,最快速的編譯可以make -j8.
然後就直接等編譯了。
PS:在編譯的過程中有可能會遇到以下的失敗:
out/host/linux-x86/bin/jack-admin: 行 37: SETTING_VERSION: 為綁定變數
make: *** [out/host/linux-x86/framework/jack.jar] 錯誤 1
make: *** 正在刪除文件“out/host/linux-x86/framework/jack.jar”
修改方法:在./prebuilts/sdk/tools/jack-admin裡面SETTING添加SETTING_VERSION=2
在“SETTING_VERSION -lt 2”改為“SETTING_VERSION -eq 2”。然後重新編譯即可。
大概編譯2個多小時,就編譯成功了。生成的鏡像文件在out/target/product/文件下麵。
這時候可以燒錄到真機了。把調試模式打開,然後接上USB調試。
輸入一個命令提示符:adb reboot bootloader。
然後手機屏幕顯示 等待bootloader界面在屏幕上出現: fastboot oem unlock
接著一個unlock bootloader的選擇確認頁面會出現。用音量來選擇到“YES,”,用電源鍵來確定。
這時你手機上的所有數據都將被抹去,LOCK STATE將變成unlocked。不應該超過一兩分鐘。
重新開機後的畫面下麵出現了一個打開的鎖,以後刷機都會在解鎖狀態下了。
然後進入到你剛剛的那個目錄下,裡面有.img鏡像文件。通過fastboot刷入即可,首先你先看看你的fastboot 能不能識別到設備,輸入fastboot devices
如果出現 no permissions fastboot ,就直接進入到out/host/linux-x86/bin 下麵輸入以下的命令:
sudo chown root:root fastboot
sudo chmod +s fastboot
然後再重新看下設備是否能識別到,輸入fastboot devices
如果識別到了,再進入到鏡像文件img那個文件裡面執行以下命令進行燒錄。
fastboot flash boot boot.img
fastboot flash cache cache.img
fastboot flash recovery recovery.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot reboot
最後一條命令是重啟命令,等大約兩分鐘,就會出現
至此,源碼編譯燒錄真機完成。