cd .repo/manifests
git branch -a
Beta:
repo init -b android-s-beta-5
Released:
repo init -b android-12.0.0_r2
@github
拉取blob配置文件,首先我们同步完lineage源码后,进入到vendor/lineage/build/templates 这个目录,拷贝这两个extract-files.sh和setup-makefiles.sh这个两个sh文件到你适配的机型设备树中,打开这两个文件,对其文本进行一些小修改。
The contents of proprietary-files.txt
is a list of blobs with optional comments (lines beginning with #
). Each blob line is of the form:
vendor厂商配置:首先在手机system.img和vendor.img 中拉取所有文件,然后将其文件路径写入proprietary-files.txt中,然后由设备树中的extract-files.sh负责调用
,目前为了减轻一些工作量,会有两种样式 类似像htc u11(设备代号:ocean ,设备树应该是htc/ocean)就没有将设备树柴分开成ocean和msm8998-common两个树,准确来说,安卓9之后貌似是为了减轻工作量,出现了(还是以htc u11举例子):htc/ocean && msm8998-common,这个以芯片命名的树则是一些公共的配置文件树,里面存放了同厂商&&同平台的配置文件,相应的evndor也是如此。 vendor tree的编写则由设备树这边完成, 在breakfast 设备代号之后,允行extract-files.sh,由extract-files去调用已经编写好的proprieatary-files,然后将其写入vendor tree中 ,至此就完成了vendor的编写,后续按需简精,使设备树变得更小。 日后会重组语言,写得有点小乱。
1.接下来就是ubuntu的环境搭建了
sudo apt-get update
sudo apt-get install curl
//repo需要用到python,不然会报错
sudo apt -get install python
sudo apt-get install vim
sudo apt-get install git
(Git装完以后 顺便配置Git信息 git config --global user.name "你的用户名" && git config --global user.email "你的油箱")
(例如 : git config --global user.name xiaoming git config --global user.email 123456789@qq.com )
2.安装安卓编译所需要安装包:(不推荐了)
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 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
Ubuntu 16.04 及以上系统, 替换(怎么安装这玩意?请问问百度,多看/装几次就学会了):
libwxgtk2.8-dev → libwxgtk3.0-dev
关于jdk是否要安装,具体看你要编译的版本来定 由于谷歌在最新的安卓9和安卓10的aosp源码中已经自带了jdk了,所以我们不需要去安装jdk,但是你装了也没关系。
为了简化过程,这里推荐直接使用OrangeFox提供的脚本,快速安装依赖
cd ~
sudo apt install git aria2 -y
git clone https://gitlab.com/OrangeFox/misc/scripts
cd scripts
sudo bash setup/android_build_env.sh
sudo bash setup/install_android_sdk.sh
依赖安装完成后(下面3,4,5步骤跳过),直接开始拉源码,进行测试环境是否正常
To initialize your local repository using the LineageOS trees, use a command like this:
repo init -u https://github.com/LineageOS/android.git -b lineage-20.0 --git-lfs
Then to sync up:
repo sync
测试源码是否正常
source build/envsetup.sh
lunch lineage_tv_x86-userdebug
emulator
以上信息来源(https://wiki.lineageos.org/emulator)
以下内容适用安卓11以前
3.下载并解压SDK
sdk中包含fastboot和adbwget https://dl.google.com/android/repository/platform-tools-latest-linux.zip && unzip platform-tools-latest-linux.zip -d ~
4.下载repo
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
~bin 和sdk添加环境变量
gedit ~/.profile
复制--粘贴?:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
PATH="$HOME/platform-tools:$PATH"
fi
保存--退出
使修改生效source ~/.profile
5.新建文件夹并进入:
mkdir LineageOS && cd LineageOS
初始化LineageOS
repo init --no-clone-bundle -u git://github.com/LineageOS/android.git -b lineage-17.1
or
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -blineage-17.1
上述步骤执行完后使用vim进行修改配置文件:
vim /WORKING_DIRECTORY/.repo/manifests/default.xml
(请参照清华大学镜像站修改) 按下i进行编辑 按下esc退出编辑 按下shift + : 输入wq 然后按下回车 保存退出 然后repo sync 等上一段时间,具体等多久看你网速咯。
6.拉取源码:
repo sync
or
repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags
接下来分为三种情况:
1.有官方维护:
brunch <设备代号> 即可。
2.无官方维护,但已有非官方源码:
- 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是
<device/kernel/vendor>/设备厂商名/设备代号
)。 - 使用
brunch <设备代号>
命令开始编译。
- 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是
3.无官方维护,且无非官方源码,但是有其他自定义 ROM 的源码:
- 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是
<device/kernel/vendor>/设备厂商名/设备代号
)。 - 在此基础上作 ify(参考这里)。
- 使用
brunch <设备代号>
命令开始编译。 - -----------------------------------------------------------------------------------------------
- 这里由于LG V40不属于Lineage官方维护,所以找到以下源码
LG V40源码来自xda开发者 SGCMarkus
git clone https://github.com/SGCMarkus/android_kernel_lge_sdm845.git kernel/lge/sdm845
git clone https://github.com/SGCMarkus/android_device_lge_judypn.git device/lge/judypn
git clone https://github.com/SGCMarkus/android_device_lge_sdm845-common.git device/lge/sdm845-common
git clone https://github.com/SGCMarkus/proprietary_vendor_lge.git vendor/lge
- 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是
- 通用提取vendor配置文件
- 给手机赋予root权限
adb shell su -c setenforce 0
cd device/设备厂商名/设备代号
./extract-files.sh
croot
source build/envsetup.sh or . build/envsetup.sh
breakfast 设备名
编译完成
编译完成后,你可以在 out/target/product/<设备代号> 下找到你编译出来的刷机包,刷入即可。
同步最小源码:
repo init -u git://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git -b twrp-9.0
repo init --depth=1 -u git://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git -b twrp-9.0
repo sync
开始编译:
为具有恢复分区的设备生成:
cd <source-dir>; export ALLOW_MISSING_DEPENDENCIES=true; . build/envsetup.sh; lunch omni_<device>-eng; mka recoveryimage
为没有恢复分区的设备生成:
cd <source-dir>; export ALLOW_MISSING_DEPENDENCIES=true; . build/envsetup.sh; lunch omni_<device>-eng; mka bootimage
git clone git://codeaurora.org/tools/repo.git
vim repo/repo
将 REPO_URL='git://android.git.kernel.org/tools/repo.git'
改成 REPO_URL='git://codeaurora.org/tools/repo.git'
拉取代码:
./repo/repo init -u git://codeaurora.org/platform/manifest.git -b release -m LA.UM.9.3.r1-00700-sdm845.0.xml --repo-url=git://codeaurora.org/tools/repo.git --repo-branch=caf-stable
./repo/repo sync
------------------------------------------------------------------------------------