Câu hỏi thường gặp về Android App Bundle

Giới thiệu về Android App Bundle

Android App Bundle (AAB) là gì?

Ra mắt vào năm 2018, Android App Bundle (AAB) là một định dạng phát hành dành cho Android được Google Play, các cửa hàng ứng dụng cũng như các công cụ xây dựng như Android Studio, Bazel, Buck, Cocos Creator, Gradle, Unity và Unreal hỗ trợ.

Có gì khác biệt giữa AAB và APK?

Gói ứng dụng chỉ dùng để phát hành và không thể cài đặt trên thiết bị Android. Gói Android (APK) là định dạng có thể cài đặt và thực thi của Android dành cho ứng dụng. Gói ứng dụng phải được trình phân phối nội dung xử lý thành tệp APK để có thể cài đặt trên thiết bị.

Có phải AAB là định dạng độc quyền chỉ có thể sử dụng trên Google Play không?

Không. AAB không phải là định dạng độc quyền chỉ dành cho Google Play. Gói ứng dụng (app bundle) dùng nguồn mở, vì vậy, mọi cửa hàng ứng dụng đều có thể hỗ trợ. Các gói ứng dụng được Google Play và một số cửa hàng ứng dụng khác hỗ trợ.

Việc tạo tệp AAB có ngăn tôi phát hành lên các cửa hàng ứng dụng khác không?

Không, bạn sẽ không bị chặn xuất bản lên các cửa hàng ứng dụng khác. Khi tạo ứng dụng, bạn có thể cùng lúc tạo các tệp AAB và APK tuỳ theo định dạng phát hành theo yêu cầu của từng cửa hàng ứng dụng.

Có cần nhiều công sức để sử dụng tệp AAB không?

Đối với hầu hết ứng dụng, quy trình xây dựng tệp AAB cũng tốn ngang công sức như khi xây dựng tệp APK do chỉ yêu cầu chọn AAB thay vì APK trong thời gian xây dựng. Tuy vậy, một số ứng dụng có thể cần thực hiện chút thay đổi để khai thác được toàn bộ lợi thế của AAB.

Hiện có nhà phát triển nào sử dụng tệp AAB không?

Có. Hơn 1 triệu ứng dụng và trò chơi đang sử dụng các gói ứng dụng để phát hành bản chính thức trên Google Play, bao gồm đa số ứng dụng phổ biến đại diện cho hàng tỷ thiết bị đã cài đặt đang hoạt động. Nếu bạn sử dụng Google Play để cài đặt ứng dụng thì nhiều ứng dụng trên thiết bị của bạn được phát hành dưới dạng gói ứng dụng.

Tệp AAB có ngăn người dùng "cài đặt không qua cửa hàng" không?

Không, AAB không ngăn người dùng cài đặt tệp APK qua bất kỳ nguồn nào. Vì AAB chỉ là một định dạng phát hành nên sẽ không ảnh hưởng cách thức hoạt động của nền tảng Android.

Nếu một nhà phát triển sử dụng tệp AAB để phân phối các tệp APK được tối ưu hoá thì có phải những người dùng chia sẻ các tệp APK đó có khả năng sẽ gặp sự cố không?

Đã có một số trường hợp hiếm gặp trên Android khi tệp APK không thể chuyển trực tiếp từ thiết bị này sang thiết bị khác bất kể ứng dụng được phát hành qua tệp APK hay AAB. Cụ thể, khi tệp APK được tối ưu hoá cho một thiết bị (ví dụ: cho một cấu trúc chip cụ thể), thì việc chuyển trực tiếp các tệp APK đó sang một thiết bị khác có thể gặp sự cố nếu thiết bị mục tiêu không khớp với các thuộc tính của thiết bị gốc. Trong các trường hợp này, bạn cần cài đặt tệp APK hoặc tập hợp tệp APK phù hợp với thiết bị mục tiêu.

Tôi có thể phát hành lên nhiều cửa hàng ứng dụng chứ?

Có, bạn có thể phát hành lên nhiều cửa hàng ứng dụng cho dù bạn có sử dụng tệp AAB hay không. Bạn có thể phát hành tệp AAB lên Google Play và các cửa hàng ứng dụng khác hỗ trợ AAB đồng thời phát hành tệp APK lên các cửa hàng ứng dụng hoặc trang web không hỗ trợ AAB.

Yêu cầu đối với tệp AAB có áp dụng cho các ứng dụng riêng tư đã phát hành trên Managed Google Play không?

Không, các ứng dụng riêng tư phát hành trên Managed Google Play có thể phát hành qua tệp APK hoặc AAB. Khi tạo ứng dụng riêng tư mới, bạn có thể chọn Thay đổi khoá ký ứng dụng, sau đó chọn không sử dụng Tính năng ký ứng dụng của Play nếu muốn phát hành tệp APK riêng tư tự ký.

Giới thiệu về Tính năng ký ứng dụng của Play

Tính năng ký ứng dụng của Play là gì?

Mọi tệp APK trên Android đều phải ký mã hoá qua khoá ký ứng dụng để có thể cài đặt. Nền tảng Android sử dụng khoá để đảm bảo rằng mọi bản cập nhật đều khớp với ứng dụng đã cài đặt trên thiết bị. Nhờ đó, sau mỗi lần cài đặt đầu tiên, từng bản cập nhật ứng dụng sẽ có cùng một giá trị khoá. Điều này giúp giảm nguy cơ tải nhầm bản cập nhật ứng dụng độc hại. Ra mắt năm 2017, Tính năng ký ứng dụng của Play là dịch vụ quản lý khoá của Google Play giúp bảo vệ và quản lý khoá ký ứng dụng của nhà phát triển của Play cho ứng dụng được phân phối trên Google Play. Ngoài ra, tính năng Ký ứng dụng của Play thực hiện thao tác ký trên các tệp APK mà Play tạo qua các tệp AAB được tải lên. Các ứng dụng mới cần đến tính năng Ký ứng dụng của Play để có thể sử dụng tệp AAB.

Tại sao Google ra mắt tính năng Ký ứng dụng của Play?

Khoá ký ứng dụng là một thách thức đối với các nhà phát triển Google Play trong nhiều năm. Nếu làm mất khoá, bạn sẽ không thể phân phối bản cập nhật ứng dụng cho người dùng, đồng thời khoá bị xâm phạm có thể khiến người dùng có nguy cơ tải nhầm các bản cập nhật độc hại. Do đó, việc trao quyền lưu trữ và quản lý các khoá của phần mềm cho các kênh phân phối trở nên phổ biến vì sẽ giúp giảm thiểu rủi ro. Tính năng Ký ứng dụng của Play được ra mắt năm 2017 để loại bỏ rủi ro mất khoá phân phối Play, giúp bảo vệ người dùng Play sau khi khoá bị xâm phạm, đồng thời giúp nhà phát triển được hưởng lợi nhờ sự đầu tư liên tục vào công tác bảo mật của Google.

Google đảm bảo tính bảo mật của Tính năng ký ứng dụng của Play bằng cách nào?

Google bảo vệ khoá dành cho nhà phát triển trong chính cơ sở hạ tầng an toàn hàng đầu trong ngành dùng để bảo vệ các khoá của chính Google. Các khoá được lưu trữ qua mã hoá trên các máy chủ quản lý khoá chuyên dụng và tách biệt bằng các tệp ACL và đường dẫn kiểm tra phát hiện tháo trộm chặt chẽ bao trùm mọi thao tác. Các phương pháp hay nhất và hoạt động bảo mật trên đám mây của Google đều được đăng tải chi tiết trên mạng.

Tôi có thể chọn khoá ký ứng dụng mà Google Play dùng cho ứng dụng không?

Có, khi tạo ứng dụng mới, bạn có thể chọn để Google, thay mặt bạn, tạo và lưu trữ khoá ký ứng dụng, hoặc bạn có thể chọn khoá ký ứng dụng của riêng mình rồi sau đó tải bản sao lên.

Tôi muốn dùng cùng một khoá ký ứng dụng cho Google Play và các cửa hàng ứng dụng khác. Tôi vẫn có thể làm như vậy chứ?

Nếu đã quyết định dùng cùng một khoá ký trên nhiều cửa hàng ứng dụng sau khi xem xét cách hoạt động của bản cập nhật ứng dụng, thì bạn vẫn có thể làm như vậy. Xin lưu ý rằng điều này sẽ cho phép mỗi cửa hàng ứng dụng thực hiện cập nhật ứng dụng trên nhiều cửa hàng cho ứng dụng của bạn. Bạn có hai lựa chọn:

  • Bạn có thể tạo một khoá cục bộ rồi tải bản sao lên Google Play. Nhờ đó, bạn có thể dùng cùng một khoá được Google Play sử dụng khi bạn tạo ứng dụng cho các cửa hàng ứng dụng khác.
  • Bạn có thể dùng khoá do Google tạo cho tính năng Ký ứng dụng của Play, sau đó tải xuống các tệp APK phân phối qua Play Console đã được ký bằng khoá do Google tạo và dùng những tệp APK đó để phân phối trên các cửa hàng ứng dụng hoặc trang web khác.

Tôi có thể sử dụng tính năng Ký ứng dụng của Play cho một ứng dụng tạo trước tháng 8 năm 2021 mà không cần cung cấp bản sao khoá ký ứng dụng được không?

Có, tính năng Ký ứng dụng của Play hỗ trợ tuỳ chọn "nâng cấp khoá" cho các ứng dụng tạo trước tháng 8 năm 2021. Việc này cho phép ứng dụng bắt đầu sử dụng tính năng Ký ứng dụng của Play bằng khoá ký ứng dụng mới. Tuy nhiên, để sử dụng tuỳ chọn này, sau khi thực hiện nâng cấp, trong mỗi bản phát hành bạn sẽ phải tải hai nội dung lên: một gói ứng dụng và một tệp APK cũ ký qua khoá ký ứng dụng cũ. Google Play sẽ sử dụng tệp AAB để tạo các tệp APK được ký qua khoá nâng cấp cho lần cài đặt mới và bản cập nhật của chúng. Đồng thời, Google Play sẽ sử dụng các tệp APK cũ để cập nhật ứng dụng cho những người dùng đã cài đặt ứng dụng của bạn. Theo thời gian, các lượt cài đặt cũ sẽ chuyển sang khoá đã nâng cấp (ví dụ: khi người dùng chuyển sang thiết bị di động mới).

Có cách nào để sử dụng cùng một khoá ký ứng dụng cho những ứng dụng tạo trước và sau tháng 8 năm 2021 không?

Thường thì bạn không nên dùng cùng một khoá ký ứng dụng cho nhiều ứng dụng. Hãy sử dụng khoá riêng biệt cho từng ứng dụng sẽ an toàn hơn. Tuy nhiên, bạn vẫn có thể dùng cùng một khoá ký ứng dụng cho nhiều ứng dụng khi cần. Bạn có thể dùng một bản sao khoá ký ứng dụng hiện có để tải lên khi định cấu hình Tính năng ký ứng dụng của Play. Hoặc, nếu không muốn chia sẻ khoá ký ứng dụng hiện có, bạn có thể sử dụng tuỳ chọn "nâng cấp khoá" sắp tới dành cho ứng dụng phát hành trước tháng 8 năm 2021 để bắt đầu sử dụng Tính năng ký ứng dụng của Play. Nhờ vậy, cả ứng dụng phát hành trước lẫn sau tháng 8 năm 2021 đều có thể sử dụng cùng một khoá mới.

Tôi có thể thay đổi khoá ký ứng dụng mà tính năng Ký ứng dụng của Play sử dụng không?

Có, các ứng dụng có thể thay đổi khoá của chúng bằng cách yêu cầu nâng cấp khoá trong Play Console.

Làm cách nào để kiểm tra nhằm đảm bảo rằng Google Play chưa thực hiện thay đổi nào ngoài dự kiến đối với mã của tôi?

Bạn có thể tải và kiểm tra cấu phần phần mềm qua Google Play bất cứ lúc nào trong trình khám phá gói ứng dụng trên Play Console. Ngoài ra, Play Developer API sẽ sớm cung cấp khả năng xác minh tệp APK trước khi bạn đưa các tệp APK này vào kênh phát hành. Bạn cũng có thể sử dụng một tính năng tuỳ chọn có tên là tính minh bạch của mã cho gói ứng dụng (code transparency). Nhờ có tính minh bạch của mã, bạn và người dùng cuối có thể yêu cầu một cửa hàng ứng dụng như Google Play chịu trách nhiệm với mã họ phân phối.

Cơ chế tính minh bạch của mã cho gói ứng dụng hoạt động như thế nào?

Tính minh bạch của mã là một tính năng tuỳ chọn giúp bạn có thể yêu cầu một cửa hàng ứng dụng chịu trách nhiệm với mã cửa hàng ứng dụng đó phân phối. Để sử dụng cơ chế tính minh bạch của mã, tại thời gian xây dựng, hãy tạo một tệp tính minh bạch của mã trong ứng dụng đại diện cho mã của bạn (cụ thể là một tệp chứa các hàm băm của mã ứng dụng). Sau đó, ký ứng dụng qua khoá tính minh bạch của mã riêng chỉ mình bạn nắm giữ. Bạn không cần phải cung cấp khoá tính minh bạch của mã cho Google. Tiếp theo, trên một thiết bị, bạn có thể kiểm tra tệp APK đã cài đặt rồi xác minh rằng tệp tính minh bạch của mã bạn đã ký vẫn khớp với mã của tệp APK. Việc này giúp bảo đảm rằng dù tệp APK được ký lại trong quá trình phân phối, thì mã đã được tính minh bạch của mã xác minh vẫn không bị sửa đổi. Nếu có thông tin không khớp thì đó là bằng chứng cho thấy mã được thay đổi trong quá trình phân phối. Tính minh bạch của mã không thay thế chữ ký tệp APK và không phải là một phần của nền tảng Android.

Phát hành ứng dụng và trò chơi có kích thước lớn trên Google Play

Giới hạn kích thước ứng dụng của Google Play khi dùng tệp AAB là bao nhiêu?

Kích thước tải xuống tối đa được nén của mọi tập hợp APK tạo qua tệp AAB là 200 MB. Tức là Google Play sẽ tạo mọi tệp APK hiện có từ tệp AAB của bạn. Sau đó, Google Play sẽ kiểm tra để đảm bảo rằng kích thước tải xuống tối đa được nén mà mọi thiết bị cá nhân nhận được không vượt quá 200 MB. Tệp AAB mà bạn tải lên có thể lớn hơn gấp nhiều lần kích thước này, đây là điều mà bạn không thể làm được với tệp APK trên Google Play.

Google Play có hỗ trợ tệp mở rộng (OBB) cho tệp AAB không?

Không, Google Play không hỗ trợ tệp mở rộng cho tệp AAB. Tệp mở rộng (OBB) là một giải pháp cũ của Google Play dành riêng cho việc xuất bản ứng dụng và trò chơi có kích thước lớn qua tệp APK. Hiện đã có giải pháp thay thế của Google và bên thứ ba cho các tệp AAB lớn hơn 200 MB.

Làm cách nào để xuất bản ứng dụng hoặc trò chơi có kích thước trên 200 MB lên Google Play?

Ứng dụng và trò chơi có dung lượng lớn sử dụng tệp AAB có thể dùng các dịch vụ phân phối của Play (chẳng hạn như Play Asset Delivery hoặc Play Feature Delivery) để vượt giới hạn kích thước 200 MB hoặc có thể sử dụng các mạng phân phối nội dung của bên thứ ba.

So với tệp mở rộng (OBB), Play Asset Delivery mang lại những lợi ích gì?

Trong Google Play, tệp APK cần các tệp mở rộng riêng biệt (OBB) để phân phát tài nguyên bổ sung cho người dùng. Tuy nhiên, do các tệp OBB được lưu trữ trên bộ nhớ ngoài của ứng dụng và không được ký nên chúng không an toàn. Với Play Asset Delivery (PAD), trò chơi có dung lượng lớn hơn 200 MB có thể thay thế tệp OBB bằng cách xuất bản toàn bộ dưới dạng một gói ứng dụng duy nhất trên Cửa hàng Play. Ngoài việc giúp quá trình xuất bản suôn sẻ hơn và mang đến các chế độ phân phối linh hoạt, PAD còn giúp bản cập nhật cần ít bộ nhớ thiết bị hơn. Do đó, việc này có thể giúp tăng tỷ lệ cài đặt. Cuối cùng, với ASTC nay được hỗ trợ trên gần 80% thiết bị, tính năng nhắm mục tiêu theo định dạng nén kết cấu của PAD cho phép bạn phân phát ASTC cho các thiết bị hỗ trợ. Bạn có thể nhắm đến các loại thiết bị đa dạng nhất có thể trong khi vẫn sử dụng hiệu quả phần cứng và bộ nhớ có sẵn của thiết bị.

Các tính năng phân phối trên Google Play mà AAB đem đến

Đâu là ví dụ về các tính năng mới Google Play cung cấp cho nhà phát triển đang dùng AAB?

Các cửa hàng ứng dụng như Google Play xử lý tệp AAB thành tệp APK có thể cài đặt. Việc chịu trách nhiệm về tệp APK sẽ giúp chúng tôi có thể cung cấp các tính năng và dịch vụ mới mang lại lợi ích cho nhà phát triển và người dùng. Google Play cung cấp các dịch vụ được nhà phát triển sử dụng rộng rãi và đánh giá cao, trong đó có Play Feature DeliveryPlay Asset Delivery.

Play Feature Delivery là gì?

Một trong những tính năng của gói ứng dụng là bạn có thể phân tách ứng dụng thành nhiều mô-đun gọi là "mô-đun tính năng" (feature module). Sau đó, các mô-đun này có thể được phân phối linh động cho người dùng và thiết bị tại nhiều thời điểm (không giống như trước đây khi mọi thứ phải được phân phối dưới dạng một tệp tại thời điểm cài đặt). Play Feature Delivery cho phép bạn tuỳ chỉnh thời điểm những mô-đun tính năng được phân phối cho thiết bị, cùng chế độ phân phối thời gian cài đặt theo điều kiện và theo yêu cầu. Điều này cho phép bạn giảm kích thước ứng dụng, dẫn đến tăng lượt cài đặt đồng thời điều chỉnh trải nghiệm ứng dụng sao cho phù hợp. Ví dụ: bạn có thể phân phối một tính năng ít dùng như hỗ trợ khách hàng theo yêu cầu cho người dùng đang cần tính năng đó thay vì ngay tại thời điểm cài đặt, giúp giảm kích thước bản cài đặt ban đầu cho tất cả người dùng. Hoặc bạn có thể cung cấp trải nghiệm ứng dụng hoàn chỉnh cho các thiết bị cao cấp, đồng thời cung cấp trải nghiệm ứng dụng dung lượng nhỏ hơn cùng các tính năng tuỳ chọn, theo yêu cầu cho các thiết bị cấp thấp có hạn chế về dữ liệu và bộ nhớ.

Play Asset Delivery là gì?

Play Asset Delivery cho phép nhà phát triển trò chơi cải thiện trải nghiệm người dùng và giảm thời gian chờ của người dùng bằng cách linh động phân phối nội dung lớn tại thời điểm tối ưu. Các trò chơi sử dụng Play Asset Delivery cũng có thể sử dụng tiêu chí nhắm mục tiêu theo định dạng nén kết cấu, vì vậy, người dùng sẽ chỉ nhận được những tài sản phù hợp với thiết bị mà không bị lãng phí dung lượng hoặc băng thông.

Các tính năng phân phối này của Google Play có xuất hiện trên các cửa hàng ứng dụng khác không?

Không, Play Feature Delivery và Play Asset Delivery chỉ xử lý những ứng dụng và trò chơi trực tiếp tương tác với Cửa hàng Google Play. Những dịch vụ tuỳ chọn này thể hiện việc Google Play là một cửa hàng ứng dụng khác biệt, đồng thời mang lại thêm giá trị và tính năng hữu ích cho nhà phát triển và người dùng. Các cửa hàng ứng dụng khác sử dụng gói ứng dụng và APK cung cấp dịch vụ cửa hàng ứng dụng của riêng họ cho nhà phát triển.