hi,学员朋友,大家好!
前期一直有同学在问我这边,学习framework需要什么额外设备么?这里其实我一直前期也是给学员说的,如果你是个新手,刚刚开始可以不用,完全可以跟着课程一起学习(需要可以找我要优惠q群:422901085),用课程里面的模拟器。哈哈资格模拟器不要钱,也不存在变砖的可能性。当你已经学完课程入门部分了,这个时候你觉得模拟器不能满足你了,你可以考虑pixel(相对比较贵)或者其他二手android手机,比如经典小米,联想,一加,nubia等基本上很多二手(基本便宜,而且自己手里一般都有一两个不用的二手机器)。pixel刷入aosp这个我前期已经写过相关文章,可以关注我之前blog,但针对非pixel相关机器今天我这边来分享一下怎么刷入一个基于aosp魔改了的lineage os。
首先确认好自己手上机器到底是否支持,看如下地址:
https://wiki.lineageos.org/devices/
1 准备机器,oem解锁
设置中开发者选项开启oem开关
接下来需要进入fastboot模式
执行:
adb reboot bootloader
进入后需要fastboot命令对手机进行解锁,这里我这边手上刚好有nubia的z17,blog就以他为例子,(其他xiaomi解锁相对可能复杂一些,大家自己百度就行,实在不行你可以淘宝花点钱让别人帮你刷个lineageos)
进入fastboot模式后,需要用fastboot命令解锁oem:
1、fastboot device
//这里只是看看到的fastboot下面有没有设备,没有实际意义
2、fastboot oem nubia_unlock NUBIA_NX563J
//这一部非常关键,相对每个手机还有点区别,大家自己根据机型百度
2 刷入第三方的recovery,并刷入官方lineage os版本
1、解锁完成,解锁后需要刷入第三方recovery,这个recovery我们直接lineageos官网就有,一般刷几包和recovery都是配套的,这里不得不说lineageos真的是服务到位,外国友人无私奉献万岁
(参考地址https://wiki.lineageos.org/devices/nx563j/install)
具体命令:
fastboot flash recovery <recovery_filename>.img
这里的recovery的img可以直接lineage官网下载:
https://download.lineageos.org/nx563j
左边770多M的是刷机包,右边是对应的recovery.img的包
确定是否刷入成功,这里可以看命令输出,如果出现OKAY。。那就ok了,如果有fail一般可能解锁不成功
2、上面刷入recovery成功,在手机的fastboot模式上按音量上下按键,
选址 : reboot to recovery mode,再按power按键
(注意不要直接重启进入系统)
lineage官方也是这样说的:
Now reboot into recovery to verify the installation. Do not reboot into the existing OS, since it will overwrite the recovery you just installed!
这个非常关键哈
3、进入recovery后,刷入上面下载的770多m刷包系统系统
到达recovery主页
***然后选择 “Apply Update”, then “Apply from ADB”***
接下来就需要我们电脑端通过adb发送下载的zip过去:
adb sideload xxxx.zip
(如果提示xxx签名不一致,可以直接选择继续)
3、下载对应的lineagos代码及编译:
前面已经先把手机刷成了lineage os系统了,但是始终系统是别人的,我们自己不可以随便改变,所以我们就要进入最重要的构建我们自己的代码系统,这样再刷入我们自己编译的lineage os才算成功
参考lineage os官方链接:
https://wiki.lineageos.org/devices/nx563j/build
其实也可以通过以下链接直接点击进入:
https://wiki.lineageos.org/devices/nx563j/
点击上面的“Build for yourself”
这里因为构建部分内容较多,大家严格按照https://wiki.lineageos.org/devices/nx563j/build 链接一步步来就可以,我这里只需要提出以下几个点,也算我这边踩坑点:
1、安装库一定不要省略
安装库和我们以前aosp编译还是有一些区别,所以这里严格按照链接提供的库来
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 libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsyncschedtool squashfs-tools xsltproc zip zlib1g-dev
2、ccache 这个部分大家可以根据自己情况,我这边没有配置
3、国内需要对repo下载后需要修改REPO_URL
修改方法:
vi ~/bin/repo
修改后:
REPO_URL ='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
4、repo init后,需要对.repo的xml进行修改(非常关键)
如果repo init后直接repo sync,国内会报出很多错误,错误原因还是因为国内网络,解决方法如下
对 .repo/manifests/default.xml进行修改,修改具体点如下,用git diff给大家看:
test@test:~/nx563j/.repo/manifests$ git diff
diff --git a/default.xml b/default.xml
index 672a8c3..da6b283 100644
--- a/default.xml
+++ b/default.xml
@@ -1,20 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
- <remote name="github"
- fetch=".."
+ <remote name="github"
+ fetch="https://github.com/" />
+ <remote name="lineage"
+ fetch="https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/"
review="review.lineageos.org" />
<remote name="private"
fetch="ssh://git@github.com" />
<remote name="aosp"
- fetch="https://android.googlesource.com"
:...skipping...
diff --git a/default.xml b/default.xml
index 672a8c3..da6b283 100644
--- a/default.xml
+++ b/default.xml
@@ -1,20 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
- <remote name="github"
- fetch=".."
+ <remote name="github"
+ fetch="https://github.com/" />
+ <remote name="lineage"
+ fetch="https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/"
review="review.lineageos.org" />
<remote name="private"
fetch="ssh://git@github.com" />
<remote name="aosp"
- fetch="https://android.googlesource.com"
- review="android-review.googlesource.com"
+ fetch="https://mirrors.tuna.tsinghua.edu.cn/git/AOSP"
revision="refs/tags/android-12.1.0_r22" />
<default revision="refs/heads/lineage-19.1"
- remote="github"
+ remote="lineage"
sync-c="true"
sync-j="4" />
4、breakfast nx563j第一次有报错
第一次repo sync成功后,开始编译
source build/envsetup.sh
breakfast nx563j
但是发现breakfast nx563j执行非常慢,而且有报错说没有xxxx product
其实这里是正常的,因为这个时候才开来下载和563相关的git,也就是这个时候在repo设备相关的库,当然慢,而且整个系统中当然还没有nx563j这个目标
等待一会后,我们就可以把大部分nx563j的依赖下载豪,但是有一些无法下载的就需要从我们目前已经刷了lineage os手机上拉下来
这里怎么拉呢?当然是我们的adb pull 。。。。,具体拉哪些我们不需要关心,lineage已经给我们写了extract-files.sh脚本,执行它就行
cd 源码根目录/device/nubia/nx563j //这个目录有就有extract-files.sh
./extract-files.sh
上面执行完成后再执行
croot
brunch nx563j
最后上一下我们的编译ok截图