sdk中包含fastboot和adb
下載
https://dl.google.com/android/repository/platform-tools-latest-linux.zip
解壓
unzip platform-tools-latest-linux.zip -d ~
html
添加到環境變量linux
gedit ~/.profile
android
輸入:git
# add Android SDK platform tools to path if [ -d "$HOME/platform-tools" ] ; then PATH="$HOME/platform-tools:$PATH" fi
保存。github
使改動生效:shell
source ~/.profile
api
安裝必要庫和工具
sudo apt-get install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
bash
安裝openjdk-8-jdk
sudo apt install -y openjdk-8-jdk
網絡
建立repo存放目錄
mkdir -p ~/bin
curl
建立源碼存放目錄
mkdir -p ~/android/lineage
× 注:請確保該目錄所在的磁盤有足夠的空間(至少80G)
安裝repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
將~/bin
放入環境變量
gedit ~/.profile
加入:
# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
保存。
使改動生效:
source ~/.profile
初始化repo
cd ~/android/lineage
repo init -u https://github.com/LineageOS/android.git -b cm-14.1
× 注:這裏下載的是lineageOS的源碼,cm-14.1是分支名。更多分支請瀏覽:https://github.com/LineageOS/android
repo sync
cd ~/android/lineage
加入vendor源
gedit .repo/local_manifests/roomservice.xml
加入:
<project name="TheMuppets/proprietary_vendor_xiaomi" path="vendor/xiaomi" remote="github" revision="cm-14.1" />
× 注:其中name是遠程項目的路徑;path是本地目錄的路徑;revision是分支名(具體分支請看:https://github.com/TheMuppets/proprietary_vendor_xiaomi)
更新源碼
repo sync
配置構建環境
source build/envsetup.sh
配置設備信息
breakfast land
配置ccache
gedit ~/.bashrc
加入:
export USE_CCACHE=1
保存。
使改動生效:
source ~/.bashrc
執行:
ccache -M 50G
× 注:ccache默認在home目錄,請確保home目錄有足夠的空間。若是想自定義ccache的目錄,能夠在~/.bashrc
文件里加入export CCACHE_DIR=<路徑>
配置jack
gedit ~/.bashrc
加入:
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
保存。
使改動生效:
source ~/.bashrc
croot
brunch land
× 注:在源碼目錄執行cd $OUT
進入編譯好的ROM的存放目錄。lineage-14.1-xxxxxxxx-UNOFFICIAL-land.zip
爲編譯好的刷機包。
mmm <模塊名>
例如構建frameworks中的base
mmm frameworks/base
有時候咱們只修改system模塊裏不須要編譯的文件,不必從新編譯,只須要打包system.img
make snod
有時候咱們只修改system裏的代碼,不必編譯整個Android源碼,只須要編譯system.img
make systemimage
有時候咱們只修改內核裏的代碼,不必編譯整個Android源碼,只須要編譯boot.img
make bootimage
下載twrp
https://dl.twrp.me/land/
刷入trwp
在開機狀態下,打開USB調試。並且設備要先解鎖bootloader。
adb reboot bootloader
fastboot flash recovery twrp.img
fastboot reboot
刷入system.img
咱們調試系統源碼時,若是不想刷入整個ROM,能夠只刷入system.img
fastboot flash system $OUT/system.img
× 注:$OUT指向system.img生成目錄
刷入內核
咱們調試內核源碼時,若是不想刷入整個ROM,能夠只刷入boot.img
fastboot flash boot $OUT/boot.img
刷入ROM
將編譯好的刷機包,經過adb push
命令將刷機包傳輸到手機存儲。進入twrp界面,擦除system分區,data分區。選擇手機存儲中的刷機包,刷入!!!
lsusb
找到相似一行:
Bus 001 Device 005: ID 18d1:4ee7 Google Inc.
編輯51-android.rules:
sudo gedit /etc/udev/rules.d/51-android.rules
輸入:
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee7",MODE="0666",GROUP="plugdev"
×注:idVendor,idProduct分別爲lsusb命令顯示的ID
更改文件權限:
chmod a+r /etc/udev/rules.d/51-android.rules
在device目錄下找到BoardConfig.mk文件,將其中BOARD_xxxx_PARTITION_SIZE
字段後面的值調大點
https://wiki.lineageos.org/devices/land/build
https://www.htcp.net/741.html
https://www.isthnew.com/archives/build-lineageos.html
http://blog.csdn.net/luoshengyang/article/details/6566662/