IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【源码编译】android-8.0.0_r21 for Pixel 2 XL for Youpk on ubuntu20.04-server -> 正文阅读

[移动开发]【源码编译】android-8.0.0_r21 for Pixel 2 XL for Youpk on ubuntu20.04-server

前言

感谢看雪,简书,CSDN等各个平台上的前辈的编译教程,感谢Google让android编译越来越简单,以前编译基本各种问题,现在直接一步到底,超级流畅

配置环境

  • ubuntu20.04-server(已切换清华镜像)
  • 4 core
  • 8G RAM
  • 2T disk
  • 物理主机
  • 必备代理,速度够快,70Mb/s左右
  • Pixel 2 XL 手机一部
  • 配置proxychains

选择分支

这里我选择android-8.0.0_r21,因为这是支持Pixel 2 XL的初始分支,Youpk使用的是android-7.1.2_r33,我这里主要为了移植Youpk到Pixel 2 XL上,所以选择了一个最接近该分支而又支持Pixel 2 XL机型的android-8.0.0_r21分支

注意:分支需要与设备型号匹配,并不是一个机型就可以通刷所有分支的,具体匹配列表参看:Here

下载源码

sudo apt-get update

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig python

mkdir ~/bin
export PATH=~/bin:$PATH

proxychains curl https://storage.googleapis.com/git-repo-downloads/repo -o ~/bin/repo
chmod a+x ~/bin/repo

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

git config --global user.name Your Name
git config --global user.email you@example.com

# -b 后面代号选择,访问:https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds
proxychains repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r21

# -j 的数字根据机器性能而定
proxychains repo sync -c -j8

android-8.0.0_r21 大约需要54G流量

导入设备驱动(可选,刷入真实设备需要)

  • 下载Pixel 2 XL对应版本驱动文件,地址:taimenopd1.170816.010
  • 将两个压缩包放入源码根目录
  • 执行解压命令 tar -zxvf xxxxx.tgz
  • 执行解压出的sh文件,不要回车太快,在最后会让输入I ACCEPT
  • 执行完后可在源码根目录下找到vector目录

配置jdk

android-8.1.0_r1之前需要自己安装jdk,之后源码里就自带了,路径:prebuilts/jdk,所以android-8.0.0_r21需要配置jdk,因为我之前有下载android 10的源码,所以我这里直接省了安装步骤,将android 10里的jdk路径添加到$PATH里即可

export  PATH=/{your_path}/android-10.0.0/prebuilts/jdk/jdk8/linux-x86/bin/:$PATH

构建源码

cd WORKING_DIRECTORY

sudo apt-get install libncurses5

# run_soong_ui] Error 1
export LC_ALL=C

export _JAVA_OPTIONS="-Xmx4g"

source build/envsetup.sh

lunch aosp_taimen-user

m 

这里循环执行m,报错就继续执行,有给修复提示,就按提示做,否则默认一直m,只要不是每次错误都一样

刷入镜像

cd WORKING_DIRECTORY/out/target/product/taimen/
fastboot flashall -w

刷入镜像(远程服务器编译,本地Window)(On Xshell 5)

  • xshell下
cd WORKING_DIRECTORY/out/target/product/taimen/
sz *.txt
sz *.img
  • window下
    切换到sz命令下载的目录,在该目录打开cmd,执行如下命令
set ANDROID_PRODUCT_OUT=./
fastboot flashall -w

移植Youpk

Youpk4Pixel2XL

Youpk是一种通过修改系统源码实现主动调用进行脱壳的工具,基于android-7.1.2_r33分支做的定制,仅支持Pixel机型,但该机型问题太多了,买了两个,一个时不时无限重启,一个充不进去电,正好身边有一部Pixel 2 XL用着还不错,并且Pixel 2 XL支持的最初始分支android-8.0.0_r21android-7.1.2_r33分支挺近的,代码差别应该不是很大,就想把Youpk移植到Pixel 2 XL,正好也学习下Youpk的工作原理。

在此特感谢Youpk工具作者的开源精神,否则要凭空研究出来对于我来说真是太难了,需要对越来越庞大的android源码有充分的了解。因此,我这个移植也会依照Youpk的格式开源。以及感谢在移植过程中,在网上搜索到的各种填坑文章,以及Google开源的Android源码,还有各种在线源码搜索服务,还有各种编译系统以及填坑的文章,以及现在越来越快的科学速度,以及各种涉及到的效率工具。

具体原理就不用讲了,参考Youpk即可,其实我也不太懂,我就只管移植完事即可,哈哈。

很少研究这方面,若是有遗漏地方大佬勿喷,欢迎提出来哈

与Youpk不同的地方

  • CompilerFilter::kVerifyAtRuntime换成了CompilerFilter::kVerify
  • mirror::ClassLoader*换成了ObjPtr<mirror::ClassLoader>
  • StringPrintf换成了android::base::StringPrintf
  • ReaderMutexLock mu(self, *class_linker->DexLock());换成了ReaderMutexLock mu(self, *Locks::dex_lock_);
  • ClassLinker里好几个函数返回值变成了ObjPtr<T>格式
  • PrettyMethod(method)换成了method->PrettyMethod()
  • NATIVE_METHODREGISTER_NATIVE_METHODS位置发生了改变

最后

附上开源地址:Humenger/Youpk4Pixel2XL

成品

CSDN下载地址
或者加入星球《逆向涉猎》获取

🍟彩蛋:有个地方可以免费下载,若你能找到的话ψ(`?′)ψ

参考

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:39:30  更:2022-11-05 00:41:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 21:52:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码