编译 Syberia Project
编译Syperia Project
更新
1
19.11.15 初始
导语
- 备忘.
准备
硬件上
- 大于100G的硬盘剩余空间.SSD最好.
- i7以上配置.(4代i7+SSD编译时间3.5h参考)
软件
- 网络环境.
其他
- 足够耐心,以及大半问题都是网络问题.
编译环境
依赖组件
1
2
3sudo apt install -y bc bison build-essential curl flex gcc-multilib git git-core gnupg gperf g++-multilib libesd0-dev libgl1-mesa-dev liblz4-tool libncurses5-dev libreadline6-dev \
libsdl1.2-dev libwxgtk3.0-dev libxml2 libxml2-utils libx11-dev lib32ncurses5-dev lib32z1-dev lzop pngcrush schedtool squashfs-tools \
unzip xsltproc zip zlib1g-dev额外组件,可能会使用.
1
sudo apt install imagemagick libbz2-dev libssl-dev lzma ncftp bash-completion
jdk
1
sudo apt install -y openjdk-8-jdk
- 安装完成后输入
java -version
,返回1.8
即正确安装.
- 安装完成后输入
安装repo
repo是google用来管理android源码的工具,基于git实现.android源码的代码量级,直接使用git….你可以试试….
repo实际上是个python2的脚本.
下载并设置环境变量
1
2
3
4
5mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo "export PATH=~/bin:$PATH" >> ~/.bashrc
source ~/.bashrcps
- 实在下载不下来,手动拖下来.
- 或者转清华源.
初始化存储库
设置git等,不加赘述.
初始化存储库
1
repo init -u https://github.com/syberia-project/manifest.git -b 9.0
同步源码
1
repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags
- 注解:
-f : 强制
–no-clone-bundle : 忽略 clone 失败的信息 - 源码大约80G,需要很长一段时间了.
- 如果遇到同步失败,网络没问题情况下,执行
repo sync
即可,已经下载的数据不会再次重复.
- 注解:
获取 vendor , kernel 等.可以从设备直接获取,此处不表了.需要 adb root,但是大部分手头设备都没有.这里直接在github上下载了.
加载环境变量,设置机型.
1
2. build/envsetup.sh
lunch syberia_<device-codename>-userdebug打开 /device/下对应厂商和机器的 syberia.dependencies,将文件中所有依赖都加入到
.repo/local_manifests/roomservice.xml
文件中.要特别注意文件路径.因为是首次编译,还有内核的代码等.
再次同步
1
repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags
编译
设置ccache,这里设置缓存50G
1
2
3sudo apt install ccache -y
echo export USE_CCACHE=1 >> ~/.bashrc
prebuilts/misc/linux-x86/ccache/ccache -M 50G设置 jack 使用更多的内存
1
2export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
source ~/.bashrc有时需要重启jack
1
2out/host/linux-x86/bin/jack-admin kill-server
out/host/linux-x86/bin/jack-admin start-server
编译
1
2
3. build/envsetup.sh
lunch syberia_<device-codename>-userdebug
make bacon- 首次编译包括内核等,大概3.5h.第二次以后1.5h.
结束
- 在OUT文件夹中,有编译完成的ROM
相关文章