Apk là gì theo dạng cho người dùng cuối cùng

Gói ứng dụng Android (APK) là định dạng tập tin đóng gói sử dụng bởi hệ điều hành Android khi phân phối và cài đặt ứng dụng di động và middleware.

Tập tin APK tương tự như các gói phần mềm khác như APPX trên Microsoft Windows hay gói Deb trên các hệ điều hành nền Debian như Ubuntu. Để tạo ra tập tin APK, chương trình Android đầu tiên được biên dịch, sau đó tất cả các thành phần của nó sẽ được đóng gói lại vào một tập tin. Một tập tin APK chứa tất cả mã nguồn (ví dụ như các tập tin .dex), tài nguyên, tài sản, chứng nhận, và tập tin manifest. Tương tự như các định dạng tập tin khác, tập tin APK có thể đặt tên bất kì, với tên kết thúc với ".apk".

Tập tin APK là một dạng của tập tin lưu trữ, cụ thể là gói định dạng zip dựa trên định dạng tập tin JAR, với phần mở rộng tên tập tin là .apk. Loại MIME tương ứng với tập tin APK là application/vnd.android.package-archive.

Tập tin APK có thể được cài đặt lên các thiết bị chạy hệ điều hành Android như cách cài đặt phần mềm lên trên PC. Khi người dùng tải về và cài đặt ứng dụng Android từ nguồn chính thức (như Google Play), hoặc từ nguồn không chính thức, nghĩa là họ cài tập tin APK đó lên thiết bị của họ. Người dùng hay lập trình viên còn có thể cài đặt tập tin APK trực tiếp lên thiết bị mà không cần tải thông qua mạng từ máy tính cá nhân, bằng cách sử dụng chương trình giao tiếp như Android Debug Bridge (adb), hay dùng chương trình quản lý tập tin trong quá trình gọi là sideloading. Theo mặc định, tùy chọn cài đặt từ nguồn không chính thức hay cài đặt trực tiếp trên các thiết bị Android bị vô hiệu hóa vì lý do bảo mật. Tuy nhiên, người dùng có thể kích hoạt bằng cách thay đổi tùy chọn "Unknown sources" trong phần Settings của hệ thống.

Ứng dụng Android trước đây được phân phối dưới dạng APK (Android Packages). APK chứa phiên bản đã biên dịch của ứng dụng, cùng với các tài nguyên quan trọng như biểu tượng và âm thanh.

Chúng cũng bao gồm file manifest, cung cấp thông tin ứng dụng cho hệ thống Android và một bộ chứng chỉ và khóa xác minh danh tính của nhà xuất bản ứng dụng.

Apk là gì theo dạng cho người dùng cuối cùng

Vào tháng 5 năm 2018, Google đã tung ra một định dạng gói ứng dụng mới nhằm giải quyết một số thiếu sót của APK. Android App Bundles (AAB) tương tự như APK nhưng lại có khác biệt đáng kể về cách triển khai. Tại Google I/O 2021, Google đã thông báo rằng AAB sẽ trở thành định dạng ứng dụng Android mặc định. Từ cuối tháng 8, CHPlay sẽ yêu cầu gửi các ứng dụng mới dưới dạng AAB. Người dùng cuối chỉ sử dụng CHPlay sẽ không cần phải làm gì cả. Đối với các nhà phát triển, câu chuyện sẽ phức tạp hơn một chút.

Lợi ích của AAB

AAB ban đầu được giới thiệu như một cách để giải quyết một số thách thức đóng gói phổ biến trong hệ sinh thái Android. Android chạy trên hàng nghìn thiết bị với nhiều kích thước màn hình và kiến trúc CPU. Định dạng APK không thể đáp ứng sự đa dạng này vì mỗi gói chứa tất cả các tài nguyên của ứng dụng.

Nếu bạn cài đặt một ứng dụng trên điện thoại của mình, bạn không cần phải tải xuống các biến thể có độ phân giải khác nhau của ứng dụng đó. Tuy nhiên, với APK, thông thường bạn sẽ phải tải mọi biến thể, khiến bạn phải sử dụng nhiều bộ nhớ và băng thông mạng hơn. Nếu nhà phát triển muốn cung cấp các bản dựng hợp lý hơn, họ cần phải biên dịch và thiết lập nhiều file APK khác nhau theo cách thủ công.

App Bundle (AAB) thì lại có một cách tiếp cận khác. Theo thiết kế của AAB, họ “gói” một số phiên bản khác nhau của ứng dụng thành một gói hợp lý. Sau đó, CHPlay chỉ gửi các bit có liên quan đến từng thiết bị muốn cài đặt. Nó sẽ sản xuất gói phù hợp theo yêu cầu cho từng người dùng, vì vậy, nếu người dùng có thiết bị Intel 10 inch sẽ nhận được một bản tải xuống khác người có điện thoại ARM 5 inch. Quan trọng là các thiết bị vẫn nhận được file APK – người dùng sẽ không bao giờ tương tác trực tiếp với AAB. Các file APK này sẽ được tạo theo kiểu dynamic trên đám mây.

App Bundle cũng được hưởng lợi từ việc tải module bổ sung đơn giản hơn và hỗ trợ nâng cao cho các nội dung lớn như game. Theo Google, AAB sẽ làm giảm 15% kích thước tải xuống so với cùng một ứng dụng được phân phối dưới dạng APK.

Điều gì sẽ xảy ra với APK?

Google sẽ loại bỏ dần hỗ trợ cho các định dạng APK từ tháng 8 năm 2021. Các ứng dụng mới gửi đến CHPlay phải có dạng AAB. Các ứng dụng dựa trên APK hiện có sẽ vẫn được hỗ trợ và các nhà phát triển có thể tiếp tục phát hành các bản cập nhật. Các ứng dụng này được mô tả là “currently exempt”, cho thấy các bản cập nhật có thể cần được phát hành dưới dạng AAB trong tương lai.

Theo Google, thay đổi này đang được thực hiện để nhiều người dùng hưởng lợi từ các ưu điểm của App Bundle. Từ góc độ người dùng cuối, App Bundles sẽ giảm dung lượng lưu trữ được nhiều hơn, tốt cho những người dùng sử dụng các thiết bị cấp thấp và có kết nối internet chậm.

Người dùng trên các phiên bản Android cũ hơn sẽ không hưởng được lợi ích này vì thiết bị của họ sẽ không thể tập hợp các gói “chia nhỏ” thành một ứng dụng đang hoạt động. Mặc dù vậy, các phiên bản hệ điều hành lỗi thời vẫn có thể cài đặt ứng dụng AAB từ CHPlay – hệ thống AAB sẽ nhận thấy rằng nó đang xử lý một thiết bị cũ nên sẽ phân phát file APK như thông thường.

Hạn chế của AAB?

Mặc dù lợi ích của AAB là rất nhiều, nhưng App Bundle có một nhược điểm đáng kể đối với các nhà phát triển cũng như người dùng nâng cao là hệ thống App Bundle tập trung vào việc tạo file APK động trên đám mây, nên các nhà phát triển cần chuyển giao khóa ứng dụng của họ cho Google. Thay vì các nhà phát triển ký các bản cập nhật ứng dụng trong cơ sở hạ tầng của riêng họ, Google sẽ sử dụng AAB và chuyển đổi nó thành APK đã ký.

Quá trình ký (signing) cho phép thiết bị Android xác minh rằng các bản cập nhật đến từ cùng một nhà phát triển với ứng dụng đã cài đặt. Đây là một phần quan trọng của hệ sinh thái giúp ngăn chặn những kẻ xấu tạo ra các ứng dụng độc hại ghi đè lên các bản tải xuống chính hãng. Google hứa hẹn rằng các nhà phát triển sẽ có thể cung cấp khóa (signing keys) của riêng họ nhưng chúng vẫn cần được lưu giữ trong CHPlay. Việc tin tưởng Google lưu trữ khóa ký giúp công ty kiểm soát việc phân phối ứng dụng Android tốt hơn. Nhưng bất kỳ ai xâm nhập thành công CHPlay đều có thể phát hành các bản cập nhật ứng dụng vì tất cả các khóa ký đều được tập trung trong cơ sở hạ tầng của Google.

Vậy cơ quan chính phủ có thể yêu cầu Google cài đặt ứng dụng đã sửa đổi trên thiết bị của tội phạm không? Một yêu cầu như vậy có thể cho phép cơ quan xem tin nhắn giữa tội phạm. Về mặt lý thuyết thì Google có thể làm như vậy vì Google nắm giữ khóa ký ứng dụng của nhà phát triển.

Hệ thống “code transparency” sẽ ngăn chặn chuyện đó xảy ra. Điều này nhằm cung cấp cho các nhà phát triển và người dùng cuối một cách để xác minh các file APK đã tải xuống khớp với gói ứng dụng đã được gửi lên CHPlay và loại trừ khả năng Google bị xâm nhập.

Tuy nhiên, code transparency hoàn toàn là tùy chọn và chỉ được bật khi APK bao gồm file transparency. Vì Google đã nắm giữ các khóa cần thiết để tạo file APK mới, nên Google có thể xóa file transparency bất cứ khi nào họ muốn.

App Bundle và cửa hàng ứng dụng của bên thứ ba

App Bundle cũng là một mối đe dọa đối với tính chất mở của hệ sinh thái Android. Trong những năm gần đây, Google đang quản lý mạnh mẽ hệ sinh thái hơn. App Bundle là một đòn khác đối với các cửa hàng ứng dụng bên thứ ba cung cấp file APK.

Vì các nhà phát triển bây giờ sẽ cần phải biên dịch các gói ứng dụng, nên các bản dựng APK đang bị loại bỏ. Có thể chỉ là vấn đề thời gian trước khi Google bỏ hoàn toàn file APK hoặc xóa khả năng tạo APK khỏi Android Studio.

Google đã công bố việc chuyển đổi bắt buộc sang App Bundles chỉ vài ngày sau khi Microsoft công bố Windows 11 hỗ trợ cho các ứng dụng Android từ Amazon App Store. Mặc dù việc chuyển sang App Bundles đã được vài năm nhưng quyết định của Google hiện tại có thể nhằm hạn chế tác động của Microsoft/Amazon.

Kết luận

Android App Bundles là một định dạng tổng hợp ứng dụng mới với hiệu suất cao hơn nhiều so với APK thông thường. Mặc dù người dùng vẫn sẽ nhận được APK, nhưng mỗi APK sẽ được điều chỉnh cụ thể cho phù hợp với thiết bị cài đặt.

Mặc dù App Bundle nên được hầu hết người dùng Android hoan nghênh, nhưng chúng không phải là giải pháp hoàn hảo cho các nhà phát triển và hệ sinh thái Android. Mô hình App Bundle giao cho Google nhiều quyền kiểm soát hơn đối với việc phân phối ứng dụng, tiết lộ khóa ký có thể đe dọa đến các cửa hàng ứng dụng của bên thứ ba.