【Android安全】Ubuntu 下載、編譯 、刷入Android-8.1.0_r1

0. 環境準備

  • Ubuntu 16.04 LTS(預留至少95GB磁盤空間,實測占94.2GB)
    在這里插入圖片描述

  • Pixel 2 XL
    要買歐版的,不要美版的。
    歐版能解鎖BootLoader、能刷機。
    美版IMEI里一般帶“v”或者"version",這樣不能解鎖BootLoader、也不能刷機。

  • 想刷入Android-8.1.0_r1

1. 下載源碼

參考:https://blog.csdn.net/aichu6610/article/details/116071003
注意改用 python3 ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1

1.1 安裝并配置git和repo

安裝git

sudo apt install git
git config --global user.name “your name”
git config --global user.email “XXX@XXX.com”

安裝并配置repo

sudo apt install curlmkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

安裝JDK 8

sudo apt update
sudo apt install openjdk-8-jdk

創建文件目錄

mkdir  /home/tom/Android-8.1.0_r1
cd /home/tom/Android-8.1.0_r1

修改配置
找到~/bin/repo文件,修改如下配置

REPO_URL = ‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo’

在終端下運行

git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com

執行gedit ~/.bashrc然后在末尾添加:

export PATH=~/bin:$PATH
export REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo’

運行 source ~/.bashrc 使環境變量生效

1.2 使用repo同步代碼

Repo是谷歌提供的一套python腳本,封裝了一系列git命令,用來管理多個git庫

初始化repo倉庫

python3 ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1

如果想用其他版本,在這里查詢:
https://source.android.com/source/build-numbers?hl=zh-cn

同步代碼

repo sync -j8

這個過程會持續數個小時

-j8貌似是并行的意思,如果報錯可以去掉-j8試試

中間有報錯,但不知道是否有影響
在這里插入圖片描述

某些時刻輸出過長,所以最后就多出來一截 應該無大礙
在這里插入圖片描述
以防萬一,又 repo sync 了幾遍
在這里插入圖片描述

2. 準備驅動腳本

地址:https://developers.google.com/android/drivers

要找 android-8.1.0_r1 的 pixel 2xl的驅動

android-8.1.0_r1就是OPM1.171019.011
參考:https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn#source-code-tags-and-builds

所以鎖定:
https://developers.google.com/android/drivers#taimenopm1.171019.011
在這里插入圖片描述
將上面兩個link的內容下載下來,得到兩個sh:

extract-google_devices-taimen.sh 
extract-qcom-taimen.sh

3. 編譯

3.1 編譯

source build/envsetup.sh

在這里插入圖片描述
將下載的兩個驅動腳本 放入源碼根目錄下 并執行

./extract-google_devices-taimen.sh 
./extract-qcom-taimen.sh

一頓敲回車(注意不要敲過油了)
最后敲入I ACCEPT
在這里插入圖片描述
在這里插入圖片描述
執行lunch

lunch

我的是Pixel 2 XL,也就是 taimen,所以選27
(各機型的對照參考:https://blog.csdn.net/guyongqiangx/article/details/123971895)

在這里插入圖片描述
執行 time make
(這里不并行了,并行容易出bug,如果想并行可以time make -j4

time make

3.2 報錯:Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))’ failed.

在這里插入圖片描述

[  4% 5148/105788] Lex: applypatch <= bootable/recovery/edify/lexer.ll
FAILED: out/target/product/taimen/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp 
/bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/target/product/taimen/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp bootable/recovery/edify/lexer.ll"
flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)
[  4% 5153/105788] target arm C++: libaudioprocessing_32 <= frameworks/av/media/libaudioprocessing/AudioResamplerDyn.cpp
ninja: build stopped: subcommand failed.
15:07:08 ninja failed with: exit status 1

解決辦法:參考:https://groups.google.com/g/android-building/c/0kzPnw3akxg/m/ozJe-XlSAQAJ

export LC_ALL=C

然后

make clean
time make

出現了新的報錯

3.3 報錯:Out of memory error GC overhead limit exceeded.

在這里插入圖片描述

[ 62% 65895/105788] Building with Jack: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex
FAILED: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex 
/bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp
Out of memory error (version 1.3-rc7 'Douarn' (445000 d7be3910514558d6715ce455ce0861ae2f56925a by android-jack-team@google.com)).
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx<size>'.
Warning: This may have produced partial or corrupted output.
[ 62% 65900/105788] //art/compiler:libart-compiler clang++ optimizing/optimizing_compiler.cc [linux]
ninja: build stopped: subcommand failed.
20:28:27 ninja failed with: exit status 1

解決辦法:參考 https://blog.csdn.net/liangtianmeng/article/details/86665237

在文件/prebuilts/sdk/tools/jack-admin中修正-Xmx參數

修改變量JACK_SERVER_VM_ARGUMENTS,添加參數 -Xmx2048M

JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -mx2048M}"

然后

make clean
time make

在這里插入圖片描述
在這里插入圖片描述
至此,編譯成功了

4. 刷機

4.1 Ubuntu安裝fastboot和adb

在Ubuntu系統上安裝ADB Fastboot

sudo apt install android-tools-adb
sudo apt install android-tools-fastboot

4.2 手機OEM解鎖

要買歐版的,不要美版的。
歐版能解鎖BootLoader、能刷機。
美版IMEI里一般帶“v”或者"version",這樣不能解鎖BootLoader、也不能刷機。

手機解鎖
參考:https://www.cnblogs.com/ciml/p/13949911.html

adb reboot bootloader
# 先看看設備是否連接成功
fastboot devices
# 解鎖 (用于2015年及之后的設備)
fastboot flashing unlock# 老設備解鎖 (2014及以前的設備)
fastboot oem unlock

這里用fastboot flashing unlock

如果報錯

FAILED (remote: 'Flashing Unlock is not allowed')
fastboot: error: Command failed

說明手機的開發者模式里“OEM解鎖”沒有打開
需要保證網絡暢通,確保能訪問Google

在這里插入圖片描述
再次adb reboot bootloader

手機進入bootloader

adb reboot bootloader
fastboot flashing unlock

之后通過音量加減鍵選中Yes,通過電源鍵確認

4.3 刷入img鏡像

參考:https://www.cnblogs.com/ciml/p/13714036.html

在剛才編譯源碼的同一終端窗口內執行

fastboot flashall 

如果報錯 error: ANDROID_PRODUCT_OUT not set
大概率是沒在同一終端窗口執行

解決方法:執行

export ANDROID_PRODUCT_OUT=~/Android-8.1.0_r1/out/target/product/taimen

其中,~/Android-8.1.0_r1/out/target/product/taimen 是img文件所在的目錄
在這里插入圖片描述
再次執行fastboot flashall
在這里插入圖片描述
在這里插入圖片描述

成功!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45700.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45700.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45700.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡安全-網絡安全及其防護措施2

6.安全設計和日志 安全審計 安全審計是對系統和網絡活動進行檢查和記錄的過程&#xff0c;確保合規性和安全性。審計過程可以幫助發現潛在的安全漏洞和違規行為&#xff0c;并驗證系統配置和操作的正確性。 定期審計 定義&#xff1a;定期檢查系統和網絡的安全配置和活動記錄…

394. 字符串解碼 739. 每日溫度(LeetCode熱題100)

394. 字符串解碼 - 力扣&#xff08;LeetCode&#xff09; curr_str&#xff1a;遍歷整個字符串時 如果左邊有[&#xff0c;且無相應右括號和其匹配&#xff0c;那么curr_str就表示該[到當前位置的解碼字符串如果左邊的[]已經匹配&#xff0c;或者沒有[]&#xff0c;curr_siz…

找不到vcruntime140_1.dll 無法執行的相關解決方法,如何高效率修復vcruntime140_1.dll

當出現“找不到 vcruntime140_1.dll 無法執行”這類提示時&#xff0c;意味著你的系統中的 vcruntime140_1.dll 文件已經缺失或者損壞。為了恢復并正常啟動你的程序&#xff0c;你需要對這個 DLL 文件進行修復。接下來&#xff0c;我們將詳細介紹如何進行這一操作。 一.找不到v…

數學建模·層次分析法

層次分析法 LAF 定義 評價體系的優劣影響&#xff0c;計算評價指標的權重的一種方法 主觀性較強&#xff0c;現在一般不用 主要步驟 關鍵在于一致性檢驗和求權值 權重的計算 注意權重之和為1&#xff0c;需要歸一化 算數平均法 特征值法 矩陣的一致性檢驗 為什么要檢驗…

【C語言】原碼、反碼、補碼詳解 -《碼上有道 ! 》

目錄 原碼、反碼、補碼詳解及其在C語言中的應用一、原碼&#xff08;Sign-Magnitude&#xff09;1.1 定義與表示1.2 歷史來源與作用1.3 示例1.4 C語言示例1.5 代碼運行結果 二、反碼&#xff08;Ones Complement&#xff09;2.1 定義與表示2.2 歷史來源與作用2.3 示例2.4 C語言…

sentinel網關限流配置及使用

sentinel控制臺源碼&#xff1a;https://download.csdn.net/download/yixin605691235/89543923 sentinel控制臺jar包&#xff1a;https://download.csdn.net/download/yixin605691235/89543931 不同環境直接修改jar包中的application.yml文件中的nacos地址就可以了。 一、網關限…

【LeetCode 0169】【摩爾投票算法】主元素

Majority Element Given an array nums of size n, return the majority element. The majority element is the element that appears more than ?n / 2? times. You may assume that the majority element always exists in the array. Example 1: **Input:** nums [3…

大數據信用查詢有哪些問題值得注意呢?

隨著大數據技術的不斷發展&#xff0c;大數據信用報告成為一種新型的信用風險檢測工具&#xff0c;被很多的銀行和機構廣泛用于信用風險評估&#xff0c;那大數據信用查詢有哪些問題值得注意呢?本文就帶大家一起去了解一下&#xff0c;希望對你有一定的幫助。 大數據信用查詢這…

JsonCPP源碼分析——分配器和配置器

1、allocator.h文件 該文件定義了一個分配器模版&#xff0c;該文件主要使用了內存對齊控制、rebind機制(C 標準庫的分配器接口要求提供 rebind 機制&#xff0c;以支持不同類型的分配)、::operator new、std::addressof等技術。 內存對齊控制&#xff1a;之所以先保存當前內存…

《C++ 入門:第一個小程序》

《C 入門&#xff1a;第一個小程序》 在學習 C 的旅程中&#xff0c;編寫第一個小程序是一個令人興奮的時刻。它就像打開一扇通往新編程世界的大門&#xff0c;讓我們初步領略 C 的魅力。 C 是一種強大而靈活的編程語言&#xff0c;廣泛應用于各種領域&#xff0c;從系統編程…

python 方向梯度直方圖(HOG)算法 【附兩種實現方法并可視化】

目錄 一、概述1.1 算法定義1.2 實現過程二、方法1(skimage庫)2.1 代碼實現2.2 結果示例三、方法2(cv2庫)3.1 代碼實現3.2 結果示例四、結果對比?? 結果預覽 一、概述 1.1 算法定義 方向梯度直方圖(Histogram of Oriented Gradient,HOG):是應用在計算機視覺和圖像處…

Telegram Bot、小程序開發(三)Mini Apps小程序

文章目錄 一、Telegram Mini Apps小程序二、小程序啟動方式三、小程序開發小程序調試模式初始化小程序Keyboard Button Mini Apps 鍵盤按鈕小程序【依賴具體用戶信息場景,推薦】**Inline Button Mini Apps內聯按鈕小程序**initData 的自動傳遞使用內聯菜單時候哪些參數會默認傳…

LLM微調

文章目錄 一. 常見微調分類1.1 全量微調&#xff08;FFT&#xff1a;Full Fine-tuning&#xff09;1.2 參數高效微調(PEFT&#xff1a;Parameter-Efficient Fine-Tuning)1.3 指令微調&#xff08;IFT&#xff1a;Instructional Fine-tuning&#xff09;1.3.1 Hard prompt1.3.2 …

Docker存儲目錄問題,如何修改Docker默認存儲位置?(Docker存儲路徑、Docker存儲空間)etc/docker/daemon.json

文章目錄 如何更改docker默認存儲路徑&#xff1f;版本1&#xff08;沒測試&#xff09;版本2&#xff08;可行&#xff09;1. 停止 Docker 服務&#xff1a;2. 創建新的存儲目錄&#xff1a;3. 修改 Docker 配置文件&#xff1a;4. 移動現有的 Docker 數據&#xff1a;5. 重新…

Java-svg格式的oss圖片鏈接轉換為png格式圖片字節流

一、引入依賴 <!--svg轉其他格式依賴--> <dependency><groupId>org.apache.xmlgraphics</groupId><artifactId>batik-transcoder</artifactId><version>1.14</version> </dependency> <dependency><groupId&g…

什么樣的服務器是合乎直銷網站標準

現在社會的發展,有著越來越多的人想要利用互聯網來做直銷。做好直銷行業系統解決方案離不開好的服務器支持,服務器的的穩定性和速度是直接影響網站后期運作,可以看做是網站的根基。 做網站直銷選擇租用服務器需要注意的幾點要素 一些大的直銷互聯網公司如安利、雅芳、康寶萊、玫…

【人工智能】自然語言處理(NLP)的突破,關注NLP在機器翻譯、情感分析、聊天機器人等方面的最新研究成果和應用案例。

自然語言處理&#xff08;NLP&#xff09;作為人工智能的一個重要分支&#xff0c;近年來取得了顯著的突破&#xff0c;特別在機器翻譯、情感分析、聊天機器人等領域取得了顯著的研究成果和廣泛的應用。以下是對這些領域最新研究成果和應用案例的概述&#xff0c;并附帶相應的代…

域名解析記錄與服務器源IP的探索

在互聯網中&#xff0c;域名和IP地址是進行網絡通信的基礎。用戶通常通過域名來訪問網站或服務&#xff0c;而實際的數據交換則發生在IP地址之間。域名解析&#xff08;DNS解析&#xff09;是將易于記憶的域名轉換為計算機可識別的IP地址的過程。本文將探討如何通過域名解析記錄…

Uniapp自定義動態加載組件(2024.7更新)

1.本次介紹如何使用uniapp實現自定義動態加載Loading的組件&#xff0c;可以gif格式&#xff0c;也可以mp4格式等; 編寫自定義Loading組件(CustomLoader.vue)&#xff1b;組件中含有“動態接收圖片路徑”&#xff0c;“10秒超時未false則自動斷開關閉Loading”&#xff1b;在全…

【JavaScript 算法】廣度優先搜索:層層推進的搜索策略

&#x1f525; 個人主頁&#xff1a;空白詩 文章目錄 一、算法原理二、算法實現三、應用場景四、優化與擴展五、總結 廣度優先搜索&#xff08;Breadth-First Search, BFS&#xff09;是一種用于遍歷或搜索圖或樹數據結構的算法。該算法從起始節點開始&#xff0c;逐層向外擴展…