Android下載、編譯系統源碼和刷機(很是詳細)

下載源代碼

1)安裝repo,repo是一個批量管理git庫的腳本html

準備環境變量目錄,並添加到環境變量
 $  mkdir ~/bin
 $  PATH=~/bin:$PATH
執行以下語句,將repo下載到你的環境變量目錄下(例如~/bin)java

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo  (若是這個地址被牆, 請自行在google上搜索相應的repo)android

固然,你也能夠去GitHub下載這個repo文件,地址:git

https://github.com/Jhuster/AOSP/blob/master/repogithub

修改執行權限 macos

chmod a+x ~/bin/repoubuntu

B) 創建你的工做目錄(隨便什麼名字,例如work),並進入api

mkdir workandroid-studio

cd workoracle

C)  設置你的郵箱和用戶名(例如)

git config --global user.email xiaoming@xxx.com

git config --global user.name xiaoming

2)repo init初始化,根據下面網址,

    repo init -u https://android.googlesource.com/platform/manifest

注:須要先cd進你想下載的目錄,否則下在根目錄

3)開始同步,時長超過1小時,中間遇到各種問題網上搜索嘗試解決

     $ repo sync -j4

更多信息能夠用repo sync -help查看

若是出現exited sync due to fetch errors,嘗試增長-f選項

注: repo init會出現一個.repo文件(隱藏的)。在下載過程當中對應文件夾下並無文件,要等下載完了纔有的。

安裝編譯Android源碼須要的相關包,安裝JDK

 請參考 http://source.android.com/source/initializing.html

安裝JDK,編譯不一樣的安卓版本時須要不一樣的JDK,注意切換,可參考如下安裝步驟,或按須要安裝:

Android Version

Ubuntu JDK Requirements

Mac OS

master branch OpenJDK 8 jdk 8u45 or newer
Android 7.x (Nougat) OpenJDK 8 jdk 8u45 or newer
Android 5.x (Lollipop) - Android 6.0 (Marshmallow) OpenJDK 7 jdk-7u71-macosx-x64.dmg
Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat) Java JDK 6 Java JDK 6
Android 1.5 (Cupcake) - Android 2.2.x (Froyo) Java JDK 5

openjdk-7 (Android L使用)
 $ sudo apt-get update
 $ sudo apt-get install openjdk-7-jdk
 若是在加入上述的源後,仍是不可以成功,那麼能夠嘗試加入源 sudo add-apt-repository ppa:ferramroberto/java 而後update
 通常不用配置環境變量    
注意:使用ppa時可能存在加載超時等問題
解決辦法:修改源,從新添加。

openjdk-8-jdk
     AOSP master 分支須要, Ubuntu >= 15.04: sudo apt-get install openjdk-8-jdk

     若是系統是Ubuntu16.04或者基於Ubuntu16.04的衍生版,在安裝openjdk8後編譯miui時會產生相似以下錯誤:Your version is: openjdk1.8.x , The required version is: 1.7.x  Please follow the machine setup instructions at https://source.android.com/source/initializing.html

     openjdk7已經從ubuntu官方軟件源中移除,這時能夠在每次編譯源碼時,在執行make 這一步加入EXPERIMENTAL_USE_JAVA8,如:

make bootimage EXPERIMENTAL_USE_JAVA8=true

編譯源碼的時候可能須要切換jdk

經過如下指令切換java jdk和javac版本

sudo update-alternatives --config java

sudo update-alternatives --config javac

安裝Jack

本地編譯Android 7.x版本的源碼時,須要使用jack-server
sudo apt-get install jack-tools

編譯MIUI源代碼生成刷機包

1.編譯系統源代碼(前提是已經下好源代碼)

 (1)進入已源碼目錄(例:cd cancro-kk-alpha)

 (2)source build/envsetup.sh(或  . build/envsetup.sh)

 (3)lunch    選擇機型(如cancro:高通)

 (4)make -j4   target-files-package   開始編譯(4表明使用幾個線程編譯) (如要編譯系統設置執行 make -j4 Settings)

 (5)編譯成功會顯示#### make completed successfully (24:37 (mm:ss)) ####而且生成一個out目錄,裏面有新生成的鏡像

 (6)當某個模塊編譯成功後,對該模塊代碼進行修改後再次編譯可進入對應模塊目錄下(含Android.mk文件)執行mm命令,可更快完成編譯 (如在根目錄下執行make -j4 Settings後再次編譯可進入package/apps/Settings目錄下執行mm)

 (7)編譯framework:   在根目錄下執行make framework,將編譯生成的out路徑下的兩個文件framework.jar和framework-res.apk用adb push命令裝到system/framework下,以後要重啓手機修改纔會生效

刷機

  1. 手機打開USB權限,鏈接到計算機
  2. adb reboot bootloader (手機進入fastboot)或者音量下+開機鍵+米鍵手動進入fastboot
  3. cd到編譯後源碼生成的out/target/product下,裏面會有編譯是選擇的平臺的文件夾,進入之
  4. 使用fastboot flash boot boot.img燒寫boot分區,使用fastboot flash system system.img燒寫系統分區
  5. 使用erase清除制定分區的數據,例如erase userdata清除用戶數據
  6. 更多功能使用fastboot --help
     

注:Linux: fastboot 須要Root權限: sudo <腳本名>

可能刷機不成功,須要安裝一下fastboot

sudo apt-get install android-tools-fastboot

若是遇到一下問題:

fastboot flash boot out/target/product/generic/boot.img無論用,提示< waiting for device >

緣由查找:

用fastboot命令查看設備提示無權限,以下:

$ fastboot -l devices
no permissions         fastboot usb:2-1.3

因而知道是由於權限問題,是fastboot沒有權限, 解決步驟:

1. 將fastboot的全部者屬性改爲root

用which fastboot命令找到fastboot所在的目錄,而後進入此目錄;再用命令chown改其屬性:

sudo chown root:root fastboot

2. 將其權限更改一下:

sudo chmod a+s fastboot

Android Studio 導入系統源碼

  1. 登陸http://www.android-studio.org/ 下載Android studio的Linux版本,默認下載目錄是~/下載,解壓,cd到bin目錄下運行studio.sh便可
  2. Android studio導入源碼  

          建議先修改development/tools/idegen /exclude-paths文件,在文件最後面逐行添加^external,^vendor,^.*\.jar$,可加快執行速度,避免遍歷不須要的文件,並且IDE能夠查找到SDK源碼當中,有助於代碼分析。

  • 執行以下命令生成idegen.jar文件
    mmm development/tools/idegen/ -B
  • 執行idegen.sh腳本
    development/tools/idegen/idegen.sh

        這條命令執行完成後就在Android源碼的根目錄中生成了android.iml, android.ipr和android.iws三個文件。

  • 最後用Android studio打開android.ipr文件便可
相關文章
相關標籤/搜索