Từ ngày 1 tháng 8 năm 2019, các ứng dụng phát hành trên Google Play sẽ cần hỗ trợ kiến trúc 64 bit. CPU 64 bit mang lại trải nghiệm nhanh hơn và phong phú hơn cho người dùng. Phiên bản 64 bit của ứng dụng sẽ giúp cải thiện hiệu suất, tạo điều kiện để cải tiến trong tương lai và giúp bạn chuẩn bị cho các thiết bị chỉ có phần cứng 64 bit. Show
Hướng dẫn này giải thích các bước bạn có thể thực hiện ngay để đảm bảo rằng ứng dụng 32 bit sẵn sàng hỗ trợ các thiết bị 64 bit. Đánh giá ứng dụngNếu ứng dụng chỉ sử dụng mã viết bằng ngôn ngữ lập trình Java hoặc Kotlin, bao gồm tất cả thư viện hoặc SDK, thì ứng dụng đã sẵn sàng cho thiết bị 64 bit. Nếu ứng dụng sử dụng bất kỳ mã gốc nào hoặc bạn không chắc rằng ứng dụng có sử dụng mã gốc hay không, bạn sẽ cần đánh giá ứng dụng và hành động. Kiểm tra trạng thái nhanhMột phương pháp kiểm tra nhanh để xem ứng dụng đã sẵn sàng đáp ứng yêu cầu đối với phiên bản 64 bit hay chưa là truy cập vào Play Console và xem các bản phát hành hiện có để xem các bản phát hành này có tuân thủ hay không: Play Console cũng sẽ hiển thị các cảnh báo áp dụng cho các bản phát hành nháp nếu có bất cứ vấn đề nào liên quan đến yêu cầu về phiên bản 64 bit. Sau đây là một ví dụ: Nếu bạn thấy cảnh báo, hãy làm theo các bước dưới đây để chuẩn bị ứng dụng. Ứng dụng có sử dụng mã gốc không?Điều đầu tiên cần làm là kiểm tra xem ứng dụng có sử dụng bất kỳ mã gốc nào không. Ứng dụng sử dụng mã gốc nếu ứng dụng đó:
Ứng dụng có bao gồm các thư viện 64 bit không?Cách đơn giản nhất để kiểm tra thư viện 64 bit là kiểm tra cấu trúc tệp APK. Khi được tạo, APK sẽ được đóng gói với bất kỳ thư viện gốc nào ứng dụng cần. Các thư viện gốc được lưu trữ trong nhiều thư mục khác nhau dựa trên ABI. Không bắt buộc phải hỗ trợ mọi kiến trúc 64 bit, nhưng đối với mỗi kiến trúc 32 bit gốc mà bạn hỗ trợ, bạn phải đưa vào 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 được đặt tại armeabi-v7a. Thư viện tương ứng cho phiên bản 64 bit là 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. Điều đầu tiên cần làm là đả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:
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 64 bit. Trong trường hợp thông thường, một 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, 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, thì có thể bạn sẽ thấy thư mục ABI 32 bit chứ không phải thư mục 64 bit. Tìm thư viện gốc bằng Công cụ phân tích APKCông cụ phân tích APK là công cụ cho phép bạn đánh giá nhiều khía cạnh khác nhau của APK đã dựng. Trong trường hợp này, chúng ta sẽ sử dụng công cụ này để tìm bất kỳ thư viện gốc nào và đảm bảo có thư viện 64 bit.
Tìm thư viện gốc bằng cách giải nén tệp APKTệp APK có cấu trúc như tệp zip và cũng có thể được giải nén như tệp zip. Nếu bạn muốn sử dụng dòng lệnh hoặc bất cứ công cụ trích xuất nào, hãy giải nén tệp APK. Bạn chỉ cần giải nén tệp APK (tuỳ thuộc vào công cụ trích xuất của bạn, có thể bạn sẽ phải đổi tên tệp thành .zip) và duyệt qua các tệp được giải nén theo hướng dẫn ở trên để tìm hiểu xem bạn đã sẵn sàng cho thiết bị 64-bit hay chưa. Ví dụ: bạn có thể chạy lệnh sau đây qua dòng lệnh:
Lưu ý trong ví dụ này: sự hiện diện của các thư viện armeabi-v7a và arm64-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 bitSau đây là hướng dẫn cách xây dựng thư viện 64 bit. Tuy nhiên, bạn cần hiểu rằng phần này sẽ 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. Nếu bạn đang sử dụng SDK hoặc thư viện bên ngoài nào đó, hãy đảm bảo rằng bạn đang sử dụng phiên bản 64 bit bằng cách làm theo các bước ở trên. Hãy liên hệ với chủ sở hữu của SDK hoặc thư viện nếu phiên bản 64 bit chưa sẵn có và lưu ý điều này khi lập kế hoạch hỗ trợ cho thiết bị 64 bit. Xây dựng bằng Android Studio hoặc GradleHầu hết dự án Android Studio đều sử dụng Gradle làm hệ thống tạo bản dựng cơ bản. Vì vậy, phần này áp dụng cho cả hai trường hợp. Việc bật bản dựng cho mã gốc cũng đơn giản như việc thêm arm64-v8a và/hoặc x86_64, tuỳ thuộc vào kiến trúc bạn muốn hỗ trợ đối với tuỳ chọn cài đặt ndk.abiFilters trong tệp "build.gradle" của ứng dụng:
Xây dựng bằng CMakeNếu ứng dụng được xây dựng 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":
Tuỳ chọn này không có
hiệu lực khi sử dụng Xây dựng bằng ndk-buildNếu ứng dụng được xây dựng bằngndk-build, bạn có thể tạo cho ABI 64 bit bằng cách sửa đổi tệp
"Application.mk" bằng cách sử dụng biến
Tuỳ chọn này không có hiệu lực khi sử dụng Chuyển đổi 32 bit sang 64 bitNế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 cho Android. Nếu đây là lần đầu tiên mã được xây dựng cho một 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 loại dữ liệu số nguyên 32 bit như Bạn nên luôn ưu tiên các loại số nguyên có chiều rộng cố định cụ thể được xác định trong Sử dụng cờ sau của trình biên dịch để phát hiện các trường hợp mã đang chuyển đổi không chính xác giữa con trỏ và số nguyên:
Lớp Java có trường Việc khai báo hàm ngầm sẽ nguy hiểm hơn rất nhiều đối với mã 64 bit. C/C++ giả định rằng loại 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à
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:
Nếu có trình tập hợp cùng dòng, bạn sẽ phải 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 mã hoá cứng là các loại (ví
dụ: 8 hoặc 16 byte), hãy thay thế bằng biểu thức Nếu cần biên dịch có điều kiện mã khác cho 32 bit so với 64 bit, bạn có thể dùng Bạn sẽ cần phải điều chỉnh chuỗi định dạng cho các hàm giống như Khi chuyển đổi, bạn có thể cần phải sử dụng Dùng Android App Bundle để hạn chế việc gia tăng kích thướcViệ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. Việc chuyển ứng dụng sang sử dụng Android App Bundle thực sự có thể là điểm cải tiến cho kích thước APK, giảm kích thước ứng dụng xuống mức thấp hơn so với hiện tại. Nhà phát triển trò chơiChúng tôi hiểu rằng việc di chuyển công cụ phát triển trò chơi của bên thứ ba là một quá trình chuyên sâu với thời gian thực hiện dài. Rất may là ba công cụ được sử dụng nhiều nhất hiện nay đều hỗ trợ 64 bit:
Nhà phát triển UnityNâng cấp lên các phiên bản có tính khả thi caoUnity bắt đầu hỗ trợ phiên bản 64 bit với các phiên bản 2018.2 và 2017.4.16. Nếu bạn thấy mình đang sử dụng phiên bản Unity không hỗ trợ 64 bit, hãy xác định phiên bản mà bạn muốn nâng cấp và làm theo hướng dẫn mà Unity cung cấp để di 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. Unity khuyến nghị bạn nên có quyền truy cập vào 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 đồ trình bày các phiên bản Unity và việc bạn nên làm:
Thay đổi chế độ cài đặt bản dựng để xuất thư viện 64 bitNế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. Bạn cũng sẽ cần sử dụng phần phụ trợ IL2CPP làm Phần phụ trợ tập lệnh (xem thông tin chi tiết tại đây). Để thiết lập dự án Unity nhằm xây dựng kiến trúc 64 bit, hãy làm như sau:
Lưu ý rằng bạn phải tạo tất cả nội dung riêng cho nền tảng nếu muốn xây dựng cho ARM64. 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 này. Nhiều tệp APK và tuân thủ 64 bitNếu bạn đang sử dụng tính năng hỗ trợ nhiều APK của Google Play để phát hành ứ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 các tệp APK hoặc gói ứng dụng không được 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 RenderScript và tuân thủ 64 bitNế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 các 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 Để khắc phục vấn đề này, hãy xoá mọi tệp Kiểm thử ứng dụng trên phần cứng 64 bitPhiê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 trên các thiết bị 64 bit mới nhất có trải nghiệm tuyệt vời trong ứng dụng. Để bắt đầu kiểm thử ứng dụng, bạn cần có một thiết bị hỗ trợ 64 bit. Có rất nhiều thiết bị phổ biến hỗ trợ 64 bit, chẳng hạn như Pixel và các thiết bị hàng đầu khác của Google. Cách dễ nhất để kiểm tra tệp APK là cài đặt ứng dụng bằng adb. Trong hầu hết trường hợp, bạn có thể cung cấp
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. Phát hànhKhi thấy ứng dụng đã sẵn sàng, hãy phát hành 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 các kênh thử nghiệm khép kín để phát hành cho số lượng người dùng có giới 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. |