华为荣耀4x-Lineageos 15.1编译笔记

华为荣耀4x是一款很经典的千元机,质量ok,硬件还凑活,高通410处理器A53,支持64位,2G ram,却苦于存储rom只有8g,可用存储随着升级到安卓6.0日渐不足(<4g),在微信、QQ以及支付宝们每个软件都要占用1g以上的情况下,完全不能满足使用了,于是换成了有墨水屏的双屏手机海信A2PRO,可惜海信也是不积极更新系统的主,也不开放bootloader和源代码,算了,不提了,至少墨水屏可以满足日常使用了,知足了。

话说回4x,华为虽然早已不给更新emui系统,至少也升级过两次安卓版本,也不错了。还良心地开放了内核源代码,于是,ROM大神开使为其适配,从miui, flyme和魔趣,到国外的Lineageos,当然,只是限于高通版本的全网通和电信版,估计麒麟CPU适配难度大,源码没有开放。看到好多旧机型已经升级了15.1(安卓8.1),但是这款旧机型已经迟迟没有动静,就想自己DIY一下,手头有个去年大神的15.0的非官方rom,中间从其中提取了vendor文件。下面把我的编译过程记录如下:

1.环境准备

我的环境是Ubuntu 16.04.4,E431的配置,I3-3120M   2*2.5GHz 8G RAM,勉强及格的编译安卓配置。

https://wiki.lineageos.org/devices/cherry/build 仓库的配置文件按这个网址的修改 https://mirrors.tuna.tsinghua.edu.cn/help/lineageOS/
#####1.下载adb和fastboot,并安装
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
unzip platform-tools-latest-linux.zip -d ~
#并将两个程序添加到环境变量
geit ~/.profile
# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/platform-tools:$PATH"
fi
source ~/.profile
sudo apt install -y 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 openjdk-8-jdk
#########2.创建工作目录,下载repo
mkdir -p ~/bin
mkdir -p ~/android/lineage
#打开缓存,加快编译速度
gedit ~/.bashrc
export USE_CCACHE=1
ccache -M 50G
export CCACHE_COMPRESS=1
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx8G"
source ~/.bashrc
#安装repo程序(清华镜像源) curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo chmod +x repo geit ~/.profile export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi source ~/.profile ##########3.初始化仓库 repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-15.1 repo sync #这里会报错好多次,fetch error,大概是网速不好的原因,我还用腾讯云香港的服务器测试了一下直接用官方地址,试了三次才成功的,于是我觉得我尝试十几次同步成功也还好啦。

不得不说,国内的网络环境还是比较令人无语的,特别是aosp官网竟然被封。。。还好有各大高校的镜像源,造福大众了。

2.开始编译

######1.准备针对设备的代码
cd ~/android/lineage
source build/envsetup.sh
breakfast cherry
#这里报错说需要make文件什么的,其实是缺vendor系列文件,于是提取之。由于这款手机电信版有nfc,全网通版没有,第一种方法提取的时候会报错找不到相关文件,于是决定按第二个方法从rom文件中提取。第一种方法从手机中提取很简单,只需要打开手机调试和root权限(前提是lineage os的系统),然后到 device/huawei/cherry中执行./extract-files.sh就好了。
#第二种方法
mkdir ~/android/system_dump/
cd ~/android/system_dump/
#我的包是这种二进制文件格式的
unzip path/to/lineage-*.zip system.transfer.list system.new.dat
#还需要一个小软件
git clone https://github.com/xpirt/sdat2img
python sdat2img/sdat2img.py system.transfer.list system.new.dat system.img
mkdir system/
sudo mount system.img system/
cd ~/android/lineage/device/huawei/cherry
./extract-files.sh ~/android/system_dump/
##然后再回头执行编译的第一步
cd ~/android/lineage
source build/envsetup.sh
breakfast cherry

编译的时候有个报错,我根据提示修改了下 gedit device/cyanogen/msm8916-common/init/../../../../device/huawei/msm8916-common/init/init_cherry.cpp #根据报错信息把propety替换android:… croot brunch cherry #编译过程还有/system/sepolicy中的文件报错,一个注释掉了nerverallolowxperm表示不知道什么情况,不知道有什么后果,另一个从neverallow中去除了前面加-。 编译顺利进行中,祈祷顺利点!

[100% 6409/6409] build bacon
Package Complete: /home/zd200572/android/system/out/target/product/cherry/lineage-15.1-20180707-UNOFFICIAL-cherry.zip

#### build completed successfully (02:07:23 (hh:mm:ss)) ####

比较遗憾的是,可能由于前面报错太多,包安装不成,twrp recovery直接闪退,只能再次等待官方包了。加油,好好学习,坚持学习,相信有一天我可以实现rom的制作梦想。虽然,第三方rom的市场越来越小。

发表评论

电子邮件地址不会被公开。 必填项已用*标注