sdk中包含fastboot和adb
下载
https://dl.google.com/android/repository/platform-tools-latest-linux.zip
解压
unzip platform-tools-latest-linux.zip -d ~
添加到环境变量
gedit ~/.profile
输入:
# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
PATH="$HOME/platform-tools:$PATH"
fi
保存。
使改动生效:
source ~/.profile
安装必要库和工具
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
安装openjdk-8-jdk
sudo apt install -y openjdk-8-jdk
创建repo存放目录
mkdir -p ~/bin
创建源码存放目录
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
加入:
× 注:其中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/