Tuyên bố miễn trừ trách nhiệm và Giấy phép
Tất cả dữ liệu và thông tin được cung cấp trong hướng dẫn này chỉ nhằm mục đích cung cấp thông tin. Tác giả không đưa ra bất kỳ tuyên bố nào về tính chính xác, đầy đủ, hiện tại, phù hợp hoặc hợp lệ của bất kỳ thông tin nào trong hướng dẫn này và sẽ không chịu trách nhiệm cho bất kỳ lỗi, thiếu sót hoặc chậm trễ nào trong thông tin này hoặc bất kỳ mất mát, thương tích hoặc thiệt hại nào phát sinh từ việc hiển thị hoặc sử dụng thông tin này. Mọi thông tin được cung cấp theo nguyên trạng.
Trong mọi trường hợp, tác giả hoặc howtoforge sẽ không chịu trách nhiệm cho bất kỳ mất mát hoặc thiệt hại nào bao gồm nhưng không giới hạn ở mất mát hoặc thiệt hại gián tiếp hoặc do hậu quả, hoặc bất kỳ mất mát hoặc thiệt hại nào phát sinh từ việc mất dữ liệu hoặc lợi nhuận phát sinh từ hoặc liên quan đến việc sử dụng hướng dẫn này.
Trừ khi có ghi chú khác, nội dung của trang này được cấp phép theo Giấy phép Creative Commons Ghi công 3.0 và các mẫu mã được cấp phép theo Giấy phép Apache 2.0.
Tôi ấn tượng rằng nhiều người dùng đồng ý rằng chạy ROM AOSP tự xây dựng là giải pháp thay thế tốt hơn nhiều so với các tùy chọn khác như chuyển sang ví dụ LineageOS. Có một số lý do chính đáng cho điều này:
Ngoại trừ một bộ sưu tập tập lệnh nhỏ (cần thiết để trích xuất đúng các blob của nhà cung cấp từ các tệp nhị phân do Google cung cấp) và phần phụ thuộc "oatdump" (được tải xuống dưới dạng tệp nhị phân từ một bản chia sẻ công khai), các hướng dẫn không sử dụng bất kỳ tài nguyên của bên thứ ba "không chính thức" (theo nghĩa là "không do Google cung cấp").
Hãy lưu ý các vấn đề về quyền tự do sau:
- Nexus 5X có bộ nạp khởi động đã mở khóa (hướng dẫn này không đề cập đến việc mở khóa)
- Máy (ảo) chạy Debian9 ở biến thể x86_64, được sử dụng riêng cho mục đích của chúng tôi (chúng tôi giả định rằng bạn sử dụng sudo, nếu không, hãy điều chỉnh các lệnh)
- RAM ít nhất 5 GB (càng nhiều càng tốt)
- dung lượng đĩa khoảng 200 MB
- kết nối internet nhanh (chúng tôi cần tải xuống khoảng 30G dữ liệu)
Bây giờ, hãy cài đặt các phụ thuộc bổ sung:
Sau đó, thiết lập đường dẫn bin trong thư mục gốc của bạn (trong Debian 9, đường dẫn này được tự động định cấu hình trong hồ sơ bash):
Cài đặt lệnh repo:
Kiểm tra tổng kiểm tra của tệp nhị phân repo. Tổng kiểm tra này phải là
Tiếp theo, cung cấp danh tính git bằng cách chạy các lệnh sau (bạn có thể để dữ liệu ví dụ nếu muốn ẩn danh):
Thật không may, gói brotli (cần thiết để đóng gói bản dựng) trong Debian 9 đã quá cũ, vì vậy chúng ta cần tự xây dựng phiên bản hiện tại. Trước tiên, hãy lấy mã nguồn và thay đổi trong thư mục của nó:
Chạy bản dựng (thay thế -j15 bằng số luồng CPU của bạn):
Cuối cùng, sao chép tệp nhị phân kết quả vào đường dẫn bin của chúng ta:
Cuối cùng, hãy đăng xuất và đăng nhập lại để hồ sơ bash của bạn được đọc lại.
Đầu tiên, hãy sao chép kho lưu trữ:
Sử dụng trang web của Google [6], hãy tìm thẻ Build mới nhất cho Nexus 5X của bạn (hiện tại là OPM6.171019.030.K1).
Chuyển sang kho lưu trữ, tạo thư mục đầu ra và chạy tập lệnh (chúng tôi chạy tập lệnh dưới dạng root do sự cố với fuse trong Debian 9):
Đầu tiên, hãy tạo một thư mục nơi các nguồn sẽ được lưu trữ:
Biết thẻ xây dựng hiện tại cho Nexus 5X, hãy tìm thẻ Android tương ứng bằng cách sử dụng tổng quan có sẵn tại [6]. Sau đó, hãy kiểm tra Android manifest cho nhánh tương ứng (trong ví dụ này, chúng tôi sử dụng android-8.1.0_r46):
Bây giờ, bạn có thể chỉnh sửa ~/aosp.repo/manifest.xml để loại trừ một số kho lưu trữ nhất định hoặc bao gồm các kho lưu trữ khác (lưu ý: đây hoàn toàn là tùy chọn). Sử dụng <!-- và --> như thường lệ trong XML để chú thích các kho lưu trữ. Tôi khuyên bạn nên loại trừ/thay thế các mục sau:
Cuối cùng, hãy sao chép các blob nhà cung cấp đã tạo trước đó dưới dạng root (điều này là bắt buộc, nếu không qmus và các blob khác sẽ bị thiếu và gây ra lỗi biên dịch sau này) vào thư mục nhà cung cấp của cây AOSP của bạn (thay thế số bản dựng gốc bằng số hiện tại):
Đặt người dùng của bạn làm chủ sở hữu thư mục nhà cung cấp (nếu không bản dựng sẽ thất bại sau này). Thay thế yourusername bằng tên người dùng thực tế của bạn:
Xây dựng công cụ cần thiết để tạo khóa verity:
Tạo thư mục để lưu trữ khóa của bạn (tài liệu CopperheadOS [2] khuyến nghị sử dụng khóa riêng cho từng thiết bị, trong trường hợp này là bullhead):
Chuyển đổi khóa verity sang định dạng mà AOSP yêu cầu:
Tạo user-lunchconfig cho thiết bị bullhead (thay thế user bằng userdebug nếu bạn muốn cấu hình userdebug):
Vô hiệu hóa Jack (thường gây ra sự cố biên dịch và đã bị loại bỏ trong Android 9):
Biên dịch target-files-package (thay thế -j15 bằng số luồng CPU của bạn):
Chạy mục tiêu dist (thay thế -j15 bằng số luồng CPU của bạn):
Tạo một gói signed-target-files, thay thế các khóa kiểm tra mặc định bằng các khóa của bạn (thay thế yourusername bằng tên người dùng thực tế của bạn trên hệ thống):
Tạo một OTA đã ký gói:
Kết nối thiết bị của bạn qua USB với máy của bạn (và làm cho nó khả dụng với VM trong trường hợp bạn xây dựng trong VM). Bạn cũng có thể sao chép nội dung từ thư mục dist sang máy khác và flash từ đó, nhưng chúng tôi cho rằng bạn flash bằng cách sử dụng tệp nhị phân fastboot/adb được xây dựng từ nguồn AOSP (nếu bạn flash từ bên ngoài, hãy đảm bảo tệp nhị phân fastboot của bạn là mới nhất).
Giải nén các hình ảnh từ signed-target-files.zip:
Bây giờ, hãy flash tất cả các hình ảnh:
Chọn "reboot system" bằng các nút vật lý trên thiết bị và đảm bảo hệ thống mới của bạn hoạt động.
Cuối cùng, khởi động lại bộ nạp khởi động và khóa lại (sẽ xóa tất cả dữ liệu):
Vậy là xong!
Sau đó, xóa bản kê khai cũ (tạo bản sao lưu, trong trường hợp bạn đã thực hiện các thay đổi mà bạn muốn làm lại trên bản đã cập nhật):
Ngoài ra, hãy xóa các blob nhà cung cấp (đã lỗi thời) và kho lưu trữ prepare-vendor:
Ngoài ra, hãy dọn dẹp cây dựng và các hiện vật dựng:
Sau đó, hãy làm lại CHỈ các bước sau:
Về lý thuyết, có thể tạo và flash các bản cập nhật OTA đã ký từ quá trình khôi phục. Tuy nhiên, mọi nỗ lực của tôi để thực hiện điều này đều dẫn đến lỗi "Xác minh chữ ký không thành công". Vì điều này hoạt động khi sử dụng trực tiếp các tệp nhà cung cấp do Google cung cấp thay vì sử dụng android-prepare-vendor, tôi cho rằng nó liên quan đến các tệp nhà cung cấp hoặc các tệp khác (như bộ nạp khởi động hoặc hình ảnh radio) không được ký đúng cách.
Tạo gói OTA đã ký như sau:
Khởi động lại vào chế độ khôi phục bằng các nút vật lý của thiết bị.
Trong quá trình khôi phục, bạn sẽ thấy một biểu tượng android nhỏ. Nhấn giữ nút nguồn và nhấn tăng âm lượng để vào menu phục hồi.
Bây giờ, hãy chọn "cập nhật từ adb" bằng các nút vật lý trên thiết bị của bạn.
Tải xuống gói OTA đã ký của bạn:
[2] https://copperhead.co/android/docs/building
[3] https://wiki.lineageos.org/devices/bullhead/build
[4] https://source.android.com/setup/build/downloading
[5] https://github.com/anestisb/android-prepare-vendor
[6] https://source.android.com/setup/start/build-numbers.html#source-code-tags-and-builds
Tất cả dữ liệu và thông tin được cung cấp trong hướng dẫn này chỉ nhằm mục đích cung cấp thông tin. Tác giả không đưa ra bất kỳ tuyên bố nào về tính chính xác, đầy đủ, hiện tại, phù hợp hoặc hợp lệ của bất kỳ thông tin nào trong hướng dẫn này và sẽ không chịu trách nhiệm cho bất kỳ lỗi, thiếu sót hoặc chậm trễ nào trong thông tin này hoặc bất kỳ mất mát, thương tích hoặc thiệt hại nào phát sinh từ việc hiển thị hoặc sử dụng thông tin này. Mọi thông tin được cung cấp theo nguyên trạng.
Trong mọi trường hợp, tác giả hoặc howtoforge sẽ không chịu trách nhiệm cho bất kỳ mất mát hoặc thiệt hại nào bao gồm nhưng không giới hạn ở mất mát hoặc thiệt hại gián tiếp hoặc do hậu quả, hoặc bất kỳ mất mát hoặc thiệt hại nào phát sinh từ việc mất dữ liệu hoặc lợi nhuận phát sinh từ hoặc liên quan đến việc sử dụng hướng dẫn này.
Trừ khi có ghi chú khác, nội dung của trang này được cấp phép theo Giấy phép Creative Commons Ghi công 3.0 và các mẫu mã được cấp phép theo Giấy phép Apache 2.0.
Động lực
Nexus 5X và 6P là thiết bị đầu tiên hỗ trợ khởi động đã xác minh dựa trên khóa ký do người dùng cung cấp (và không phải do nhà cung cấp thực thi). Trước khi "tan rã" [1], CopperheadOS (một biến thể AOSP được tăng cường bảo mật) từng cung cấp tài liệu và tập lệnh tốt để xây dựng và flash phiên bản AOSP an toàn [2]. Tuy nhiên, dự án đã ngừng cung cấp bất kỳ bản cập nhật nào trong những tháng gần đây, vì vậy hầu hết người dùng trước đây đang tìm kiếm các giải pháp thay thế khả thi.Tôi ấn tượng rằng nhiều người dùng đồng ý rằng chạy ROM AOSP tự xây dựng là giải pháp thay thế tốt hơn nhiều so với các tùy chọn khác như chuyển sang ví dụ LineageOS. Có một số lý do chính đáng cho điều này:
- AOSP là bản gốc và chỉ có một vài tính năng có thể không mong muốn
- AOSP có thể được xây dựng dưới dạng "user" thay vì "userdebug" build varitiant và do đó, được kỳ vọng là an toàn hơn (tôi đã thử biên dịch các bản dựng người dùng của LineageOS, nhưng chúng có vẻ bị hỏng do những thay đổi xâm lấn mà LineageOS thực hiện đối với các nguồn AOSP)
- Sau khi các nguồn được lấy, AOSP có thể được xây dựng một cách đơn giản. Không giống như LineageOS, nó không bắt đầu tải xuống các nguồn bổ sung trong quá trình xây dựng.
- bao gồm các tệp nhị phân của nhà cung cấp bằng cách làm theo tài liệu chính thức sẽ dẫn đến các bản dựng không đầy đủ không thể sử dụng cho các bản cập nhật gia tăng mà không cần mở khóa và xóa mỗi lần (phân vùng của nhà cung cấp, ROM radio, v.v. không được bao gồm trong bản dựng)
- tài liệu chính thức không mô tả cách sử dụng bản dựng đã xác minh theo cách có thể áp dụng trực tiếp. Có tài liệu tốt hơn trong tài liệu CopperheadOS [05], nhưng các hướng dẫn dựa trên các tập lệnh lỗi thời không áp dụng cho AOSP.
- không có tài liệu nào về cách sử dụng mã PIN "yếu" làm cụm mật khẩu nhưng sử dụng mật khẩu mạnh làm khóa mã hóa đĩa (không giống như các thiết bị Pixel mới hơn, Nexus 5X dựa trên phương pháp FDE cũ hơn). Các phương pháp áp dụng cho thiết bị LineageOS không áp dụng được vì chúng cho rằng thiết bị đã được root, điều này không đúng với các bản dựng AOSP thông thường do người dùng tạo.
Ngoại trừ một bộ sưu tập tập lệnh nhỏ (cần thiết để trích xuất đúng các blob của nhà cung cấp từ các tệp nhị phân do Google cung cấp) và phần phụ thuộc "oatdump" (được tải xuống dưới dạng tệp nhị phân từ một bản chia sẻ công khai), các hướng dẫn không sử dụng bất kỳ tài nguyên của bên thứ ba "không chính thức" (theo nghĩa là "không do Google cung cấp").
Hãy lưu ý các vấn đề về quyền tự do sau:
- Cây nguồn AOSP chứa một số tệp nhị phân được dựng sẵn (ví dụ: toolchain, hạt nhân Linux, ...). Mặc dù các tệp nhị phân này có thể được xây dựng lại từ nguồn, nhưng các bước cần thiết không được đề cập trong hướng dẫn này.
- Mã nguồn cho các blob của nhà cung cấp cần thiết để sử dụng nhiều thành phần phần cứng của Nexus 5X không được công khai!
- Công cụ "android-prepare-vendor" được sử dụng để trích xuất các tệp nhà cung cấp độc quyền sử dụng chính các tệp nhị phân được dựng sẵn (một số thậm chí được lưu trữ bên ngoài).
Yêu cầu và giả định
Hướng dẫn này giả định rằng bạn có các điều kiện tiên quyết sau (các phiên bản/bản phân phối khác cũng có thể hoạt động tốt nhưng có thể yêu cầu các gói khác hoặc bổ sung):- Nexus 5X có bộ nạp khởi động đã mở khóa (hướng dẫn này không đề cập đến việc mở khóa)
- Máy (ảo) chạy Debian9 ở biến thể x86_64, được sử dụng riêng cho mục đích của chúng tôi (chúng tôi giả định rằng bạn sử dụng sudo, nếu không, hãy điều chỉnh các lệnh)
- RAM ít nhất 5 GB (càng nhiều càng tốt)
- dung lượng đĩa khoảng 200 MB
- kết nối internet nhanh (chúng tôi cần tải xuống khoảng 30G dữ liệu)
Cài đặt các gói phụ thuộc
Trước tiên, hãy cài đặt các gói phụ thuộc như được mô tả trong hướng dẫn xây dựng LineageOS [3] (hướng dẫn xây dựng AOSP không cung cấp danh sách này):
Mã:
sudo apt install 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
Mã:
sudo apt install cmake zip unzip openjdk-8-jdk-headless
Mã:
mkdir -p ~/bin
Mã:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5
đối với phiên bản hiện tại 1.23. đối với các phiên bản sau, hãy kiểm tra trang hướng dẫn xây dựng AOSP [4]. Sử dụng lệnh sau để tính tổng kiểm tra:
Mã:
sha256sum ~/bin/repo
Mã:
git config --global user.email "[emailprotected]"
Mã:
git config --global user.name "Tên của bạn"
Mã:
git clone https://github.com/google/brotli.git
Mã:
cd ~/brotli
Mã:
./configure-cmake
Mã:
make -j15
Mã:
cp brotli ~/bin/
Lấy các blob nhà cung cấp
Có một số vấn đề khi sử dụng các blob nhà cung cấp từ các gói trình điều khiển nhị phân do Google cung cấp (xem [5]). Để giải quyết chúng, chúng tôi sử dụng bộ tập lệnh bên ngoài "android-prepare-vendor" của "anestisb" để trích xuất các blob của nhà cung cấp từ các hình ảnh gốc.Đầu tiên, hãy sao chép kho lưu trữ:
Mã:
git clone https://github.com/anestisb/android-prepare-vendor.git
Chuyển sang kho lưu trữ, tạo thư mục đầu ra và chạy tập lệnh (chúng tôi chạy tập lệnh dưới dạng root do sự cố với fuse trong Debian 9):
Mã:
cd android-prepare-vendor
Mã:
mkdir bullhead-blobs
Mã:
sudo ./execute-all.sh -k -d bullhead -a bullhead -b OPM6.171019.030.K1 -o bullhead-blobs
Tải xuống các nguồn AOSP
Lưu ý: Các bước sau đây không có hướng dẫn để xác minh nguồn đã tải xuống.Đầu tiên, hãy tạo một thư mục nơi các nguồn sẽ được lưu trữ:
Mã:
mkdir -p ~/aosp
Mã:
cd ~/aosp
Mã:
repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r46
- <project path="packages/apps/QuickSearchBox" name="platform/packages/apps/QuickSearchBox" groups="pdk-fs" /> - QuickSearchBox hầu như bị hỏng trong AOSP
- <project path="device/lge/bullhead" name="device/lge/bullhead" groups="device,bullhead,pdk" /> - thay thế bằng kho lưu trữ có chứa cây thiết bị đã vá, trong đó hai lõi CPU bị lỗi bị vô hiệu hóa. Điều này đi kèm với hình phạt hiệu suất ~30%. Tuy nhiên, vẫn nên dùng, ngay cả khi bạn có Nexus 5X không bị ảnh hưởng bởi vòng lặp khởi động, vì có khả năng nó sẽ bị ảnh hưởng trong tương lai.
- <project path="packages/apps/Calendar" name="platform/packages/apps/Calendar" groups="pdk-fs" /> - có những lựa chọn thay thế tốt hơn cho lịch AOSP gốc mà bạn có thể cài đặt sau (chẳng hạn như Etar)
- <project path="packages/apps/Messaging" name="platform/packages/apps/Messaging" groups="pdk-fs" /> - Silence.im là lựa chọn thay thế tốt hơn cho ứng dụng nhắn tin AOSP
- <project path="packages/apps/Camera2" name="platform/packages/apps/Camera2" groups="pdk-fs" /> - OpenCamera là giải pháp thay thế tốt hơn cho camera gốc
Mã:
repo sync
Mã:
sudo cp -av ~/android-prepare-vendor/bullhead-blobs/bullhead/opm6.171019.030.k1/vendor .
Mã:
sudo cp -av ~/android-prepare-vendor/bullhead-blobs/bullhead/opm6.171019.030.k1/vendor_overlay .
Mã:
sudo chown -R yourusername:yourusername ~/aosp/vendor
Mã:
sudo chown -R yourusername:yourusername ~/aosp/vendor_overlay
Tạo khóa
Đặt biến dựng:
Mã:
source build/envsetup.sh
Mã:
make generate_verity_key
Mã:
mkdir -p keys/bullhead
Bây giờ là lúc tạo khóa (không đặt mật khẩu cho khóa của bạn):
Mã:
cd keys/bullhead
Mã:
../../development/tools/make_key releasekey '/C=DE/ST=Hometown/L=XX/O=yournamehere/OU=yournamehere/CN=yournamehere/[emailprotected]'
Mã:
../../development/tools/make_key platform '/C=DE/ST=Hometown/L=XX/O=yournamehere/OU=yournamehere/CN=yournamehere/[emailprotected]'
Mã:
../../development/tools/make_key shared '/C=DE/ST=Quê quán/L=XX/O=têncủabạnởđây/OU=têncủabạnởđây/CN=têncủabạnởđây/[emailprotected]'
Mã:
../../development/tools/make_key media '/C=DE/ST=Quê quán/L=XX/O=têncủabạnởđây /OU=têncủabạnởđây/CN=têncủabạnởđây/[emailprotected]'
Mã:
../../development/tools/make_key verity '/C=DE/ST=Quê quán/L=XX/O=têncủabạnởđây/OU=têncủabạnởđây/CN=têncủabạnởđây/[emailprotected]'
Mã:
cd ~/aosp
Mã:
out/host/linux-x86/bin/generate_verity_key -convert keys/bullhead/verity.x509.pem keys/bullhead/verity_key
Biên dịch
Đảm bảo các biến dựng của bạn được đặt:
Mã:
cd ~/aosp
Mã:
source build/envsetup.sh
Mã:
lunch aosp_bullhead-user
Mã:
export ANDROID_COMPILE_WITH_JACK=false
Mã:
make target-files-package -j15
Đóng gói và ký
Tạo một thư mục để lưu trữ các tệp đầu ra (bên ngoài thư mục dựng thông thường có tên out):
Mã:
mkdir dist
Mã:
make dist -j15
Mã:
build/tools/releasetools/sign_target_files_apks -o -d keys/bullhead --replace_verity_public_key keys/bullhead/verity_key.pub --replace_verity_private_key keys/bullhead/verity --replace_verity_keyid keys/bullhead/verity.x509.pem out/dist/aosp_bullhead-target_files-eng.yourusername.zip dist/signed-target-files.zip
Mã:
build/tools/releasetools/ota_from_target_files -k keys/bullhead/releasekey dist/signed-target-files.zip dist/signed-ota-update.zip
Đang flash
Khởi động thiết bị Nexus 5X của bạn vào bộ nạp khởi động (giữ phím giảm âm lượng, sau đó nhấn nguồn).Kết nối thiết bị của bạn qua USB với máy của bạn (và làm cho nó khả dụng với VM trong trường hợp bạn xây dựng trong VM). Bạn cũng có thể sao chép nội dung từ thư mục dist sang máy khác và flash từ đó, nhưng chúng tôi cho rằng bạn flash bằng cách sử dụng tệp nhị phân fastboot/adb được xây dựng từ nguồn AOSP (nếu bạn flash từ bên ngoài, hãy đảm bảo tệp nhị phân fastboot của bạn là mới nhất).
Giải nén các hình ảnh từ signed-target-files.zip:
Mã:
cd ~/aosp/dist
Mã:
unzip [ICODE]signed-target-files.zip IMAGES/*
[/ICODE]
Mã:
../out/host/linux-x86/bin/fastbootflash boot boot.img
Mã:
../out/host/linux-x86/bin/fastbootflash recovery recovery.img
Mã:
../out/host/linux-x86/bin/fastbootflash vendor vendor.img
Mã:
../out/host/linux-x86/bin/fastbootflash system system.img
Cuối cùng, khởi động lại bộ nạp khởi động và khóa lại (sẽ xóa tất cả dữ liệu):
Mã:
out/host/linux-x86/bin/fastbootflash oem khóa
Thiết lập bí mật màn hình khóa/khởi động riêng
Có thể thiết lập mật khẩu màn hình khóa/khởi động riêng bằng một mẹo nhỏ:- Mở khóa bộ nạp khởi động (xóa tất cả dữ liệu)
- Biên dịch và flash bản dựng userdebug (xem ở trên)
- Khóa bộ nạp khởi động
- Đặt mã PIN/mật khẩu màn hình khóa bằng Android Giao diện người dùng. Hãy đảm bảo bạn chọn đúng vì bạn sẽ không thể thay đổi lại mà không xóa dữ liệu khi chuyển sang bản dựng người dùng.
- Kết nối với thiết bị qua adb
- Với tư cách là root, hãy chạy lệnh sau: vdc cryptfs changepw password your-new-password
- Khởi động lại và đảm bảo nó hoạt động
- Biên dịch bản dựng người dùng thông thường (không mở khóa bộ nạp khởi động!)
- Flash bản dựng người dùng
Xử lý cập nhật
Nếu bạn muốn nâng cấp lên bản phát hành AOSP mới hơn, trước tiên bạn cần tìm số bản phát hành mới.Sau đó, xóa bản kê khai cũ (tạo bản sao lưu, trong trường hợp bạn đã thực hiện các thay đổi mà bạn muốn làm lại trên bản đã cập nhật):
Mã:
cd ~/aosp
Mã:
rm -rf .repo/manifests.git
Mã:
rm -rf .repo/manifest.xml
Mã:
rm -rf ~/android-prepare-vendor
Mã:
rm -rf vendor
Mã:
rm -rf vendor_overlay
Mã:
rm -rf out
Mã:
rm -rf dist
- Lấy các blob của nhà cung cấp
- Tải xuống các nguồn AOSP (việc này sẽ nhanh hơn nhiều, vì chỉ những thay đổi mới được đưa vào)
- Biên dịch
- Đóng gói và ký
- Sao lưu toàn bộ dữ liệu của bạn
- Mở khóa bộ nạp khởi động (dữ liệu của bạn sẽ bị xóa)
- Flash các hình ảnh đã cập nhật và khóa lại bộ nạp khởi động của bạn như mô tả trong phần "Flashing"
WIP: Bản cập nhật OTA đã ký
Phần này đang trong quá trình WIP, các hướng dẫn được mô tả vẫn chưa có tác dụng!Về lý thuyết, có thể tạo và flash các bản cập nhật OTA đã ký từ quá trình khôi phục. Tuy nhiên, mọi nỗ lực của tôi để thực hiện điều này đều dẫn đến lỗi "Xác minh chữ ký không thành công". Vì điều này hoạt động khi sử dụng trực tiếp các tệp nhà cung cấp do Google cung cấp thay vì sử dụng android-prepare-vendor, tôi cho rằng nó liên quan đến các tệp nhà cung cấp hoặc các tệp khác (như bộ nạp khởi động hoặc hình ảnh radio) không được ký đúng cách.
Tạo gói OTA đã ký như sau:
Mã:
build/tools/releasetools/ota_from_target_files -k keys/bullhead/releasekey dist/signed-target-files.zip dist/signed-ota-update.zip
Trong quá trình khôi phục, bạn sẽ thấy một biểu tượng android nhỏ. Nhấn giữ nút nguồn và nhấn tăng âm lượng để vào menu phục hồi.
Bây giờ, hãy chọn "cập nhật từ adb" bằng các nút vật lý trên thiết bị của bạn.
Tải xuống gói OTA đã ký của bạn:
Mã:
out/host/linux-x86/bin/adb sideload dist/[ICODE]signed-ota-update.zip[/ICODE]
Tài liệu tham khảo
[1][2] https://copperhead.co/android/docs/building
[3] https://wiki.lineageos.org/devices/bullhead/build
[4] https://source.android.com/setup/build/downloading
[5] https://github.com/anestisb/android-prepare-vendor
[6] https://source.android.com/setup/start/build-numbers.html#source-code-tags-and-builds