Hỗ trợ kiến trúc 64 bit

Các ứng dụng được phát hành trên Google Play cần hỗ trợ kiến trúc 64 bit. Việc thêm phiên bản 64 bit cho ứng dụng của bạn sẽ cải thiện hiệu suất và giúp bạn đáp ứng các thiết bị chỉ có phần cứng 64 bit.

Dưới đây là các bước giúp đảm bảo rằng ứng dụng 32 bit của bạn hỗ trợ thiết bị 64 bit.

Đánh giá ứng dụng

Nếu ứng dụng chỉ dùng mã viết bằng ngôn ngữ lập trình Java hoặc Kotlin, bao gồm tất cả các thư viện hoặc SDK, thì ứng dụng sẽ hỗ trợ thiết bị 64 bit. Nếu ứng dụng dùng mã gốc hoặc bạn không chắc rằng ứng dụng có dùng mã gốc hay không, hãy tiến hành đánh giá ứng dụng.

Kiểm tra nhanh trạng thái

Truy cập vào Play Console để xem các bản phát hành hiện tại có tuân thủ hay không.

Play Console cũng sẽ hiện cảnh báo đối với bản phát hành nháp nếu có vấn đề liên quan đến yêu cầu về phiên bản 64 bit. Dưới đây là hình ảnh minh hoạ.

Nếu nhìn thấy cảnh báo, hãy xem và thực hiện các bước sau đây để ứng dụng của bạn tương thích với thiết bị 64 bit.

Ứng dụng có sử dụng mã gốc không?

Ứng dụng sử dụng mã gốc nếu ứng dụng đó:

  • Có sử dụng mã C/C++ (gốc) bất kỳ trong ứng dụng.
  • Liên kết với thư viện gốc của bên thứ ba.
  • Do một trình tạo ứng dụng bên thứ ba sử dụng các thư viện gốc tạo ra.

Ứng dụng có bao gồm thư viện 64 bit không?

Kiểm tra cấu trúc của tệp APK. Sau khi tạo, APK sẽ được đóng gói cùng với mọi thư viện gốc mà ứng dụng cần. Thư viện gốc lưu trữ trong nhiều thư mục dựa trên ABI (Giao diện nhị phân ứng dụng). Bạn không bắt buộc phải hỗ trợ mọi kiến trúc 64 bit. Tuy nhiên, nếu đã hỗ trợ kiến trúc 32 bit gốc, bạn phải hỗ trợ cả kiến trúc 64 bit tương ứng.

Đối với kiến trúc ARM, thư viện phiên bản 32 bit nằm trong armeabi-v7a. Thư viện 64 bit tương đương nằm trong arm64-v8a.

Đối với kiến trúc x86, hãy tìm từ khoá x86 cho 32 bit và x86_64 cho 64 bit.

Hãy đảm bảo rằng bạn có thư viện gốc trong cả hai thư mục này. Tóm lại:

Nền tảng Thư mục thư viện 32 bit Thư mục thư viện 64 bit
ARM lib/armeabi-v7a lib/arm64-v8a
x86 lib/x86 lib/x86_64

Hãy lưu ý rằng tuỳ thuộc vào ứng dụng, có thể có hoặc không có cùng một bộ thư viện trong mỗi thư mục. Mục tiêu là để đảm bảo rằng ứng dụng chạy chính xác trong môi trường chỉ hỗ trợ 64 bit.

Trong trường hợp thông thường, tệp APK hoặc gói được tạo cho cả kiến trúc 32 bit và 64 bit sẽ có các thư mục cho cả hai ABI (Giao diện nhị phân ứng dụng), mỗi ABI có một bộ thư viện gốc tương ứng. Nếu không hỗ trợ phiên bản 64 bit, bạn sẽ chỉ thấy thư mục ABI 32 bit chứ không thấy thư mục 64 bit.

Tìm thư viện gốc bằng Công cụ phân tích APK

Công cụ phân tích APK là công cụ giúp bạn đánh giá nhiều khía cạnh của tệp APK đã dựng. Hãy sử dụng công cụ này để tìm mọi thư viện gốc và đảm bảo có thư viện 64 bit.

  1. Mở Android Studio rồi mở dự án bất kỳ.
  2. Từ trình đơn, hãy chọn Build > Analyze APK (Tạo > Phân tích APK)…

    chạy Công cụ phân tích APK

  3. Chọn tệp APK mà bạn muốn đánh giá.

  4. Tìm trong thư mục lib, thư mục này lưu trữ các tệp ".so" (nếu có). Nếu không có tệp ".so" nào trong đó, nghĩa là ứng dụng sẽ hỗ trợ thiết bị 64 bit và bạn không cần làm gì thêm. Nếu bạn thấy armeabi-v7a hoặc x86, thì tức là bạn có thư viện 32 bit.

  5. Hãy kiểm tra xem bạn có các tệp ".so" tương tự trong thư mục arm64-v8a hoặc x86_64 hay không.

    chạy Công cụ phân tích APK

  6. Nếu bạn không có thư viện arm64-v8a hoặc x86_64 nào, hãy cập nhật quy trình xây dựng để bắt đầu tạo bản dựng và đóng gói các cấu phần phần mềm đó trong tệp APK.

  7. Nếu thấy cả hai thư viện đã đóng gói, bạn có thể bỏ qua bước này để kiểm thử ứng dụng trên phần cứng 64 bit.

Tìm thư viện gốc bằng cách giải nén tệp APK

Tệp APK có cấu trúc như tệp zip. Giải nén tệp APK qua dòng lệnh hoặc công cụ trích xuất bất kỳ khác. Tuỳ theo công cụ trích xuất, bạn có thể phải đổi tên tệp thành .zip.

Duyệt qua các tệp được giải nén rồi làm theo hướng dẫn ở trên để xác định xem ứng dụng của bạn có hỗ trợ thiết bị 64 bit hay không. Bạn có thể chạy ví dụ về lệnh sau đây từ dòng lệnh:

:: Command Line
> zipinfo -1 YOUR_APK_FILE.apk | grep \.so$
lib/armeabi-v7a/libmain.so
lib/armeabi-v7a/libmono.so
lib/armeabi-v7a/libunity.so
lib/arm64-v8a/libmain.so
lib/arm64-v8a/libmono.so
lib/arm64-v8a/libunity.so

Lưu ý trong ví dụ này: sự hiện diện của các thư viện armeabi-v7aarm64-v8a có nghĩa là ứng dụng sẽ hỗ trợ các kiến trúc 64 bit.

Xây dựng ứng dụng bằng thư viện 64 bit

Các hướng dẫn sau đây trình bày cách xây dựng thư viện 64 bit. Xin lưu ý rằng các bước này chỉ bao gồm mã bản dựng và các thư viện mà bạn có thể tạo từ nguồn.

Dùng Android Studio hoặc Gradle để tạo bản dựng

Hầu hết dự án Android Studio đều dùng Gradle làm hệ thống xây dựng cơ bản. Vì vậy, mục này áp dụng cho cả 2 trường hợp. Để bật các bản dựng cho mã gốc, hãy thêm arm64-v8a và/hoặc x86_64 (tuỳ thuộc vào kiến trúc bạn muốn hỗ trợ) vào ndk.abiFilters trong tệp 'build.gradle' của ứng dụng:

Groovy

// Your app's build.gradle
plugins {
  id 'com.android.app'
}

android {
   compileSdkVersion 27
   defaultConfig {
       appId "com.google.example.64bit"
       minSdkVersion 15
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"
       ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
// ...

Kotlin

// Your app's build.gradle
plugins {
    id("com.android.app")
}

android {
    compileSdkVersion(27)
    defaultConfig {
        appId = "com.google.example.64bit"
        minSdkVersion(15)
        targetSdkVersion(28)
        versionCode = 1
        versionName = "1.0"
        ndk {
            abiFilters += listOf("armeabi-v7a","arm64-v8a","x86","x86_64")
        }
// ...

Dùng CMake để tạo bản dựng

Nếu ứng dụng được tạo bằng CMake, bạn có thể tạo bản dựng cho ABI 64 bit bằng cách truyền arm64-v8a vào thông số "-DANDROID_ABI":

:: Command Line
> cmake -DANDROID_ABI=arm64-v8a … or
> cmake -DANDROID_ABI=x86_64 …

Dùng ndk-build để tạo bản dựng

Nếu ứng dụng được tạo bằng ndk-build, thì bạn có thể tạo cho ABI 64 bit bằng cách sửa đổi tệp "Application.mk" qua biến APP_ABI:

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64

Chuyển đổi đoạn mã 32 bit sang 64 bit

Nếu mã đã chạy trên máy tính hoặc iOS, bạn không cần thực hiện thêm bất kỳ hành động nào trong Android. Nếu đây là lần đầu tiên mã được dùng để tạo bản dựng cho hệ thống 64 bit, thì vấn đề chính bạn cần giải quyết là con trỏ không còn phù hợp với kiểu dữ liệu số nguyên 32 bit như int.

Cập nhật mã lưu trữ con trỏ trong kiểu dữ liệu như int, unsigned hoặc uint32_t. Trên các hệ thống Unix, long khớp với kích thước con trỏ nhưng điều này không đúng trên Windows. Thay vào đó, hãy sử dụng kiểu dữ liệu dạng rõ nghĩa uintptr_t hoặc intptr_t. Sử dụng kiểu ptrdiff_t để lưu trữ sự khác biệt giữa 2 con trỏ.

Bạn nên luôn ưu tiên sử dụng các kiểu số nguyên có số bit cố định cụ thể được xác định trong <stdint.h> thay vì các kiểu có số bit không cố định như int hoặc long, ngay cả khi dùng cho các biến không phải là con trỏ.

Sử dụng cờ trình biên dịch sau đây để phát hiện những trường hợp mã đang chuyển đổi không chính xác giữa con trỏ và số nguyên:

-Werror=pointer-to-int-cast
-Werror=int-to-pointer-cast
-Werror=shorten-64-to-32

Lớp Java có trường int chứa con trỏ đến đối tượng C/C++ cũng gặp vấn đề tương tự. Hãy tìm jint trong nguồn JNI và đảm bảo rằng bạn chuyển sang long ở phía Java và jlong ở phía C++.

Việc khai báo hàm ngầm định sẽ nguy hiểm hơn rất nhiều đối với mã 64 bit. C/C++ giả định rằng kiểu dữ liệu trả về của một hàm được khai báo ngầm (nghĩa là một hàm mà trình biên dịch không thấy khai báo) là int. Nếu kiểu dữ liệu trả về thực tế của hàm là con trỏ, thì phương thức này sẽ hoạt động tốt trên hệ thống 32 bit mà con trỏ khớp với một giá trị số nguyên, nhưng trên hệ thống 64 bit, trình biên dịch sẽ bỏ qua nửa trên của con trỏ. Ví dụ:

// This function returns a pointer:
// extern char* foo();

// If you don't include a header that declares it,
// when the compiler sees this:
char* result = foo();

// Instead of compiling that to:
result = foo();

// It compiles to something equivalent to:
result = foo() & 0xffffffff;

// Which will then cause a SIGSEGV if you try to dereference `result`.

Cờ trình biên dịch sau đây sẽ biến các cảnh báo khai báo hàm ngầm thành các lỗi để bạn có thể tìm thấy và khắc phục sự cố này dễ dàng hơn:

-Werror=implicit-function-declaration

Nếu bạn có lệnh hợp ngữ cùng dòng, hãy viết lại hoặc sử dụng phương thức triển khai C/C++ thuần tuý.

Nếu bạn có kích thước được cố định giá trị trong mã là các kiểu (ví dụ: 8 hoặc 16 byte), hãy thay thế bằng biểu thức sizeof(T) tương đương, chẳng hạn như sizeof(void*).

Nếu cần biên dịch có điều kiện mã 32 bit khác với mã 64 bit, bạn có thể dùng #if defined(__LP64__) cho các điểm khác biệt chung 32/64 hoặc __arm__, __aarch64__ (arm64), __i386__ (x86) và __x86_64__ cho kiến trúc cụ thể mà Android hỗ trợ.

Bạn sẽ cần phải điều chỉnh chuỗi định dạng cho các hàm giống như printf hoặc scanf, vì thông số định dạng truyền thống không cho phép bạn chỉ định kiểu 64 bit theo cách chính xác cho cả thiết bị 32 bit và 64 bit. Macro PRISCN trong <inttypes.h> sẽ giải quyết vấn đề này, PRIxPTRSCNxPTR để ghi/đọc con trỏ thập lục phân và PRId64 cùng SCNd64 để ghi/đọc giá trị 64 bit theo cách có thể chuyển đổi.

Khi chuyển đổi, bạn có thể cần phải sử dụng 1ULL để lấy hằng số 64 bit dùng để chuyển đổi thay vì sử dụng 1 (vốn chỉ 32 bit).

Dùng Android App Bundle để hạn chế việc gia tăng kích thước

Việc thêm tính năng hỗ trợ kiến trúc 64 bit vào ứng dụng có thể làm kích thước APK tăng lên. Bạn nên tận dụng tính năng Android App Bundle để giảm thiểu tác động đến kích thước từ cả mã gốc 32 và 64 bit trong cùng một tệp APK.

Nhà phát triển trò chơi

3 công cụ hỗ trợ 64 bit được dùng nhiều nhất:

  • Unreal kể từ năm 2015
  • Cocos2d kể từ năm 2015
  • Unity kể từ năm 2018

Nhà phát triển Unity

Nâng cấp lên các phiên bản có tính khả thi cao

Unity hỗ trợ 64 bit trên các phiên bản 2018.22017.4.16.

Nếu bạn đang dùng phiên bản Unity không hỗ trợ 64 bit, hãy xác định phiên bản bạn muốn nâng cấp lên rồi làm theo hướng dẫn do Unity cung cấp để chuyển môi trường, đảm bảo ứng dụng được nâng cấp lên phiên bản có thể tạo thư viện 64 bit. Theo đề xuất của Unity, bạn nên dùng các tính năng và bản cập nhật mới nhất bằng cách nâng cấp lên phiên bản LTS mới nhất của trình chỉnh sửa này.

Sau đây là biểu đồ tóm tắt các phiên bản Unity và việc bạn nên làm:

Phiên bản Unity Phiên bản có hỗ trợ 64 bit? Hành động đề xuất

2020.x

✔️

Đảm bảo rằng các chế độ cài đặt bản dựng xuất ra thư viện 64 bit.

2019.x

✔️

Đảm bảo rằng các chế độ cài đặt bản dựng xuất ra thư viện 64 bit.

2018.4 (LTS)

✔️

Đảm bảo rằng các chế độ cài đặt bản dựng xuất ra thư viện 64 bit.

2018.3

✔️

Đảm bảo rằng các chế độ cài đặt bản dựng xuất ra thư viện 64 bit.

2018.2

✔️

Đảm bảo rằng các chế độ cài đặt bản dựng xuất ra thư viện 64 bit.

2018.1

Có tính năng hỗ trợ thử nghiệm 64 bit.

2017.4 (LTS)

✔️

Được hỗ trợ kể từ 2017.4.16. Đảm bảo rằng các chế độ cài đặt bản dựng xuất ra thư viện 64 bit.

2017.3

✖️

Nâng cấp lên phiên bản hỗ trợ 64 bit.

2017.2

✖️

Nâng cấp lên phiên bản hỗ trợ 64 bit.

2017.1

✖️

Nâng cấp lên phiên bản hỗ trợ 64 bit.

<=5.6

✖️

Nâng cấp lên phiên bản hỗ trợ 64 bit.

Thay đổi chế độ cài đặt bản dựng để xuất ra thư viện 64 bit

Nếu đang sử dụng phiên bản Unity hỗ trợ thư viện Android 64 bit, bạn có thể tạo phiên bản ứng dụng 64 bit bằng cách điều chỉnh chế độ cài đặt bản dựng. Sử dụng phần phụ trợ IL2CPP làm Phần phụ trợ tập lệnh. Để thiết lập dự án Unity nhằm tạo bản dựng có kiến trúc 64 bit, hãy làm như sau:

  1. Chuyển đến phần Build Settings (Cài đặt bản dựng) và hãy chắc chắn rằng bạn đang xây dựng cho Android qua việc xác minh biểu tượng Unity nằm bên cạnh Android trong phần Platform (Nền tảng). 1. Nếu biểu tượng Unity không nằm bên cạnh nền tảng Android, hãy chọn Android rồi nhấp vào Switch Platform (Chuyển nền tảng).
  2. Nhấp vào Player Settings (Cài đặt trình phát).

    Phần Player Settings (Cài đặt trình phát) trong Unity

  3. Chuyển đến Player Settings Panel > Settings for Android > Other settings > Configuration (Bảng cài đặt trình phát > Cài đặt cho Android > Cài đặt khác > Cấu hình)

  4. Đặt Scripting Backend (Phần phụ trợ tập lệnh) thành IL2CPP.

  5. Chọn hộp đánh dấu Target Architecture > ARM64 (Kiến trúc mục tiêu > ARM64).

    đặt target architectures (kiến trúc mục tiêu) trong Unity

  6. Tạo bản dựng như bình thường!

Xin lưu ý rằng nếu muốn tạo bản dựng cho ARM64, bạn phải tạo riêng tất cả nội dung cho nền tảng này. Hãy làm theo hướng dẫn của Unity để giảm kích thước tệp APK, đồng thời cân nhắc tận dụng tính năng Android App Bundle để giúp giảm mức tăng kích thước của tệp này.

Tuân thủ nhiều tệp APK và 64 bit

Nếu bạn đang sử dụng tính năng hỗ trợ nhiều tệp APK của Google Play để xuất bản ứng dụng, hãy lưu ý rằng việc tuân thủ yêu cầu 64 bit sẽ được đánh giá ở cấp độ bản phát hành. Tuy nhiên, yêu cầu về phiên bản 64 bit không áp dụng cho tệp APK hoặc gói ứng dụng không phân phối cho thiết bị chạy Android 9 Pie trở lên.

Nếu một trong các tệp APK được đánh dấu là không tuân thủ nhưng đó lại là phiên bản cũ hơn và không thể đưa vào trạng thái tuân thủ, thì bạn nên thực hiện chiến lược thêm thuộc tính maxSdkVersion="27" trong phần tử uses-sdk ở tệp kê khai của tệp APK đó. Tệp APK này không được phân phối cho thiết bị chạy Android 9 Pie trở lên và không còn cản trở việc tuân thủ nữa.

Tuân thủ RenderScript và 64 bit

Nếu ứng dụng sử dụng RenderScript và được xây dựng bằng các công cụ Android phiên bản cũ hơn, thì bạn có thể thấy vấn đề về tuân thủ 64 bit của ứng dụng. Với các công cụ tạo trước phiên bản 21.0.0, trình biên dịch có thể tạo mã bit vào tệp .bc bên ngoài. Các tệp .bc cũ này không còn được hỗ trợ cho kiến trúc 64 bit, vì vậy, việc tệp này có trong tệp APK sẽ gây ra vấn đề về tính tuân thủ.

Để khắc phục vấn đề này, hãy xoá mọi tệp .bc có trong dự án, nâng cấp môi trường lên build-tools-21.0.0 trở lên rồi đặt renderscriptTargetApi trong Android Studio thành 21 trở lên để yêu cầu trình biên dịch không phát hành tệp .bc. Sau đó, hãy tạo lại ứng dụng, kiểm tra các tệp .bc rồi tải lên Play Console.

Kiểm thử ứng dụng trên phần cứng 64 bit

Phiên bản 64 bit của ứng dụng phải có cùng bộ tính năng và chất lượng giống như phiên bản 32 bit. Hãy kiểm thử ứng dụng để đảm bảo rằng người dùng sử dụng các thiết bị 64 bit mới nhất có trải nghiệm tốt với ứng dụng của bạn.

Thiết bị chỉ hỗ trợ 64 bit

Bất cứ khi nào có thể, bạn nên kiểm thử ứng dụng của mình trong môi trường nghiêm ngặt chỉ hỗ trợ 64 bit bằng cách sử dụng một trong các phương án sau:

Google Pixel với hình ảnh hệ thống chỉ hỗ trợ 64 bit

Để tạo điều kiện cho việc phát triển và kiểm thử ứng dụng, chúng tôi cung cấp hình ảnh hệ thống đặc biệt với môi trường nghiêm ngặt chỉ hỗ trợ 64 bit cho một số thiết bị Pixel. Ban đầu, những hình ảnh chỉ 64 bit này được cung cấp đồng thời với hình ảnh hệ thống gốc đạt tiêu chuẩn cho bản thử nghiệm Android 13 và 14. Tuy nhiên, bạn có thể tiếp tục sử dụng những hình ảnh này khi kiểm thử khả năng tương thích với thiết bị 64 bit trên ứng dụng.

Lấy hình ảnh chỉ hỗ trợ 64 bit

Tương tự như hình ảnh hệ thống gốc, bạn có thể cài đặt ROM hình ảnh chỉ hỗ trợ 64 bit vào thiết bị của mình bằng cách sử dụng Android Flash Tool hoặc cài đặt ROM cho thiết bị theo cách thủ công, như minh hoạ trong mục sau.

Cài đặt ROM thiết bị bằng Android Flash Tool

Android Flash Tool cho phép bạn cài đặt ROM hình ảnh hệ thống một cách bảo mật vào thiết bị Pixel được hỗ trợ. Android Flash Tool hoạt động được với mọi trình duyệt Web hỗ trợ WebUSB, chẳng hạn như Chrome hoặc Edge 79 trở lên.

Android Flash Tool sẽ hướng dẫn bạn từng bước thực hiện việc cài đặt ROM thiết bị (bạn không cần cài đặt công cụ này), nhưng bạn cần phải mở khoá thiết bị và bật tính năng Gỡ lỗi USB trong Tuỳ chọn cho nhà phát triển. Để được hướng dẫn đầy đủ, hãy xem tài liệu về Android Flash Tool.

Kết nối thiết bị của bạn qua USB, sau đó, tuỳ vào loại hình ảnh hệ thống bạn muốn cài đặt ROM, hãy chuyển đến Android Flash Tool bằng một trong các đường liên kết sau rồi làm theo hướng dẫn trên màn hình:

Cài đặt ROM thiết bị theo cách thủ công

Bạn cũng có thể tải hình ảnh hệ thống mới nhất xuống rồi cài đặt ROM hình ảnh đó vào thiết bị của mình theo cách thủ công. Hãy xem bảng sau đây để tải hình ảnh hệ thống xuống thiết bị kiểm thử của bạn: Việc cài đặt ROM theo cách thủ công cho thiết bị sẽ hữu ích nếu bạn cần kiểm soát chính xác môi trường kiểm thử hoặc nếu cần cài đặt lại thường xuyên, chẳng hạn như khi thực hiện kiểm thử tự động.

Sau khi sao lưu dữ liệu thiết bị và tải hình ảnh hệ thống phù hợp xuống, bạn có thể cài đặt ROM hình ảnh đó vào thiết bị.

Bạn có thể chọn trở về bản dựng công khai mới nhất bất cứ lúc nào.

Hình ảnh gốc chỉ 64 bit cho Android 14 (Beta 5.3)

Những hình ảnh này cung cấp một môi trường 64 bit nghiêm ngặt chỉ để kiểm thử khả năng tương thích của ứng dụng 64 bit. Những cấu hình chỉ 64 bit này chỉ dành cho nhà phát triển.

Thiết bị Đường liên kết để tải xuống Giá trị tổng kiểm SHA-256
Pixel 4a (5G) 7e6731fab811ae389f5ff882d5c5a2b8b942b8363b22bbcc038b39d7c539e60a
Pixel 5 c4da6a19086a02f2cd2fa7a4054e870916954b8e5a61e9a07ee942c537e4b45a
Pixel 6 98943384284cbc7323b8867d84c36151757f67ae7633012fb69cb5d6bec2b554
Pixel 6 Pro 67ec40be5bd05a40fa5dabc1ce6795aae75d1904193d52e2da00425ed7cb895b
Hình ảnh gốc chỉ 64 bit cho Android 13 (QPR3 Beta 3.2)

Những hình ảnh này cung cấp một môi trường 64 bit nghiêm ngặt chỉ để kiểm thử khả năng tương thích của ứng dụng 64 bit. Những cấu hình chỉ 64 bit này chỉ dành cho nhà phát triển.

Thiết bị Đường liên kết để tải xuống Giá trị tổng kiểm SHA-256
Pixel 4a (5G) b4be40924f62c3c2b3ed20a9f7fa4303aa9c39649d778eb96f86c867fe3ae59a
Pixel 5 6e5e027a4f64f9f786db9bb69d50d1a551c3f6aad893ae450e1f8279ea1b761a
Pixel 6 becb9b81a5bddad67a4ac32d30a50dcb372b9d083cb7c046e5180510e479a0b8
Pixel 6 Pro b0ef544ed2312ac44dc827f24999281b147c11d76356c2d06b2c57a191c60480
Trở về bản dựng công khai

Bạn có thể sử dụng Android Flash Tool để cài đặt ROM theo hình ảnh gốc hoặc lấy ảnh hệ thống có thông số kỹ thuật gốc trên trang Hình ảnh gốc cho thiết bị Nexus và Pixel sau đó cài đặt ROM cho thiết bị theo cách thủ công.

Trình mô phỏng Android

Kể từ Android 12 (API cấp 31), hình ảnh hệ thống của Trình mô phỏng Android chỉ hỗ trợ phiên bản 64 bit. Tạo Thiết bị Android ảo (AVD) bằng hình ảnh hệ thống Android 12 (API cấp 31) trở lên để có được một môi trường nghiêm ngặt chỉ hỗ trợ 64 bit phục vụ mục đích kiểm thử ứng dụng.

Lựa chọn khác về thiết bị

Nếu bạn không có một trong những thiết bị này hoặc không thể sử dụng Trình mô phỏng Android, thì lựa chọn tốt nhất tiếp theo là sử dụng một thiết bị hỗ trợ 64 bit, chẳng hạn như Google Pixel hoặc các thiết bị hàng đầu khác gần đây của các nhà sản xuất khác.

Cài đặt và kiểm thử ứng dụng

Cách dễ nhất để kiểm thử tệp APK là cài đặt ứng dụng bằng Cầu gỡ lỗi Android (adb). Trong hầu hết trường hợp, bạn có thể cung cấp --abi dưới dạng một tham số để cho biết cần cài đặt thư viện nào vào thiết bị. Thao tác này sẽ chỉ cài đặt ứng dụng đó cùng với các thư viện 64 bit trên thiết bị.

:: Command Line
# A successful install:
> adb install --abi armeabi-v7a YOUR_APK_FILE.apk
Success

# If your APK does not have the 64-bit libraries:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
adb: failed to install YOUR_APK_FILE.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

# If your device does not support 64-bit, an emulator, for example:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
ABI arm64-v8a not supported on this device

Sau khi cài đặt thành công, hãy kiểm thử ứng dụng như bình thường để đảm bảo chất lượng giống như phiên bản 32 bit.

Kiểm tra để tìm các vấn đề đã biết về khả năng tương thích

Khi kiểm thử, hãy kiểm tra ứng dụng để tìm các vấn đề sau đây ảnh hưởng đến ứng dụng đang chạy trên thiết bị 64 bit. Ngay cả khi ứng dụng của bạn không phụ thuộc trực tiếp vào thư viện bị ảnh hưởng, thư viện và SDK của bên thứ ba trong các phần phụ thuộc của ứng dụng vẫn có thể bị ảnh hưởng.

SoLoader

Nếu bạn đang dùng SDK trình tải mã gốc SoLoader, hãy cập nhật lên phiên bản 0.10.4 trở lên. Nếu ứng dụng của bạn dùng SDK phụ thuộc vào SoLoader, đừng quên cập nhật lên phiên bản ổn định mới nhất trên SDK bị ảnh hưởng.

SoLoader v0.9.0 trở xuống giả định rằng các thư viện hệ thống có trong /vendor/lib:/system/lib. Lỗi này không quan sát được trên các thiết bị như Pixel 7 (dù cóđường dẫn này), nhưng giả định này lại gây ra sự cố trên những thiết bị mà chỉ có thư viện hệ thống trong /vendor/lib64:/system/lib64.

Để biết thêm thông tin về cách khắc phục vấn đề này và các vấn đề khác do SoLoader gây ra, hãy xem câu trả lời tương ứng trong Trung tâm trợ giúp của Google.

OpenSSL

Nếu bạn đang dùng thư viện OpenSSL, hãy cập nhật lên OpenSSL 1.1.1i trở lên. Nếu ứng dụng của bạn dùng SDK giao tiếp qua giao thức HTTPS hoặc SDK khác phụ thuộc vào OpenSSL, đừng quên cập nhật lên phiên bản mới nhất của SDK (sử dụng phiên bản OpenSSL mới hơn). Hãy liên hệ với nhà cung cấp SDK nếu SDK không có sẵn.

ARMv8.3 PAC giúp đảm bảo tính toàn vẹn của luồng điều khiển được phần cứng hỗ trợ bằng cách xác thực con trỏ trong thời gian chạy. Các phiên bản cũ của OpenSSL sử dụng chức năng này không chính xác, gây ra sự cố trong thời gian chạy trên tất cả thiết bị có bộ xử lý dựa trên ARMv8.3a trở lên.

Để biết thêm thông tin về cách khắc phục vấn đề này và các vấn đề khác do OpenSSL gây ra, hãy xem câu trả lời tương ứng trong Trung tâm trợ giúp của Google.

BTI

ARMv8.5 trở lên sử dụng Hướng dẫn mục tiêu nhánh (BTI) để giúp bảo vệ khỏi các cuộc tấn công JOP. Các phiên bản cũ của SDK làm rối (phân chia thành các nhánh ngẫu nhiên của thư viện được tạo bằng BTI) có thể khiến ứng dụng gặp sự cố. Vì hướng dẫn được mã hoá dưới dạng HINT, nên bạn không thể quan sát lỗi này trên các thiết bị không hỗ trợ BTI.

Xuất bản

Khi thấy ứng dụng đã sẵn sàng, hãy xuất bản như bình thường. Như thường lệ, hãy tiếp tục làm theo các phương pháp hay nhất để triển khai ứng dụng. Bạn nên tận dụng kênh kiểm thử khép kín để xuất bản cho số lượng người dùng có hạn, nhằm đảm bảo chất lượng của ứng dụng được nhất quán.

Khi ra mắt một bản cập nhật lớn, hãy đảm bảo rằng bạn đã thử nghiệm kỹ lưỡng trên các thiết bị hỗ trợ 64 bit trước khi phát hành cho thêm nhiều đối tượng.

Download Android 14 factory system image (64-bit-only)

Before downloading, you must agree to the following terms and conditions.

Terms and Conditions

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 14 factory system image (64-bit-only)

bramble_beta_64-upb5.230623.006-factory-7e6731fa.zip

Download Android 14 factory system image (64-bit-only)

Before downloading, you must agree to the following terms and conditions.

Terms and Conditions

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 14 factory system image (64-bit-only)

redfin_beta_64-upb5.230623.006-factory-c4da6a19.zip

Download Android 14 factory system image (64-bit-only)

Before downloading, you must agree to the following terms and conditions.

Terms and Conditions

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 14 factory system image (64-bit-only)

oriole_beta_64-upb5.230623.006-factory-98943384.zip

Download Android 14 factory system image (64-bit-only)

Before downloading, you must agree to the following terms and conditions.

Terms and Conditions

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 14 factory system image (64-bit-only)

raven_beta_64-upb5.230623.006-factory-67ec40be.zip

Download Android 13 factory system image (64-bit-only)

Before downloading, you must agree to the following terms and conditions.

Terms and Conditions

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 13 factory system image (64-bit-only)

bramble_64-t3b3.230413.009-factory-b4be4092.zip

Download Android 13 factory system image (64-bit-only)

Before downloading, you must agree to the following terms and conditions.

Terms and Conditions

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 13 factory system image (64-bit-only)

redfin_64-t3b3.230413.009-factory-6e5e027a.zip

Download Android 13 factory system image (64-bit-only)

Before downloading, you must agree to the following terms and conditions.

Terms and Conditions

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 13 factory system image (64-bit-only)

oriole_64-t3b3.230413.009-factory-becb9b81.zip

Download Android 13 factory system image (64-bit-only)

Before downloading, you must agree to the following terms and conditions.

Terms and Conditions

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 13 factory system image (64-bit-only)

raven_64-t3b3.230413.009-factory-b0ef544e.zip