Gói ứng dụng Android

**Gói ứng dụng Android** hay **Android Package** có phần mở rộng file **apk** là định dạng file được hệ điều hành Android và một số hệ điều hành dựa trên Android khác sử dụng để phân phối và cài đặt ứng dụng di động, trò chơi di động và middleware. Một file sử dụng định dạng này có thể được xây dựng từ mã nguồn được viết bằng Java hoặc Kotlin.

File APK có thể được tạo và ký từ Android App Bundles.

## Tổng quan
APK  tương tự như các gói phần mềm khác như APPX trên Microsoft Windows, APP của HarmonyOS hay Deb trên các hệ điều hành dựa trên Debian. Để tạo tệp APK, trước tiên, chương trình cho Android được biên dịch bằng một công cụ như Android Studio hặc Visual Studio sau đó tất cả các phần của nó được đóng gói thành một file chứa. Một file Apk chứa tất cả mã của chương trình (như tệp .dex), tài nguyên, tài sản, chứng chỉ và file manifest. Giống như nhiều định dạng file khác, file APK có thể có bất kỳ tên nào mong muốn nhưng để hệ thống nhận dạng được chúng, có thể cần có hậu tố tên file .apk.

Hầu hết các triển khai Android cho phép người dùng cài đặt thủ công các tệp APK chỉ sau khi họ bật cài đặt "*Nguồn không xác định*" cho phép cài đặt từ các nguồn khác ngoài các nguồn đáng tin cậy như Google Play. Người ta có thể làm như vậy vì nhiều lý do, chẳng hạn như trong quá trình phát triển ứng dụng, để cài đặt các ứng dụng không có trên cửa hàng hoặc để cài đặt phiên bản cũ hơn của ứng dụng hiện có.

File 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 file JAR, với phần mở rộng tên tập tin là `.apk`. Loại MIME tương ứng với file APK là `application/vnd.android.package-archive`.

## Sử dụng trên hệ điều hành khác
Blackberry Limited  hỗ trợ các ứng dụng Android 4.1 Jelly Bean và lên đến Android Runtime cho đến nay đã ngừng hỗ trợ Blackberry 10  thông qua bản cập nhật firmware 10.2.1 vào tháng 1 năm 2014. Ngày 18 tháng 6 năm 2014, BlackBerry đã công bố mối quan hệ chính thức với Amazon.com, dẫn đến bản cập nhật 10.3 đóng gói Amazon Appstore.

Tại Build 2015, Microsoft cũng đã công bố một runtime environment Android cho Windows 10 Mobile được gọi là "*Astoria*", cho phép các ứng dụng Android chạy trong môi trường mô phỏng với những thay đổi tối thiểu và có quyền truy cập vào các API nền tảng của Microsoft như Bing Maps và Xbox Live như những sự thay thế gần như ngay lập tức cho Google Mobile Services tương đương. Google Mobile Services và một số API cốt lõi sẽ không khả dụng và các ứng dụng có "tích hợp sâu vào các tác vụ nền" được cho là hỗ trợ kém cho môi trường này.

Ngày 25 tháng 2 năm 2016, sau khi đã trì hoãn vào tháng 11 năm 2015, Microsoft đã thông báo rằng "*Astoria*" sẽ bị gác lại, với lý do là nó không phù hợp với bộ công cụ Windows Bridge gốc vì iOS đã là mục tiêu chính để phát triển ứng dụng di động. Công ty cũng khuyến khích sử dụng các sản phẩm từ Xamarin (mà họ đã mua lại vào ngày hôm trước) để phát triển ứng dụng đa nền tảng bằng ngôn ngữ lập trình C# thay thế. Một phần của Astoria được sử dụng làm cơ sở cho nền tảng Windows Subsystem for Linux (WSL) trên phiên bản PC của Windows 10.

Ngày 9 tháng 8 năm 2019, HarmonyOS đã có khả năng tương thích với APK thông qua cơ sở AOSP với hạt nhân Linux trên HarmonyOS 1.0 dành cho TV và vào ngày 2 tháng 6 năm 2021, phiên bản HarmonyOS 2.0 đã mở rộng sang điện thoại thông minh và máy tính bảng cho đến phiên bản Galaxy Edition trong hệ thống HarmonyOS NEXT cho phiên bản HarmonyOS 5 beta tiếp theo thành phiên bản thương mại, bắt đầu từ quý 2, tháng 6 năm 2024.

Tại sự kiện công bố Windows 11 vào tháng 6 năm 2021, Microsoft đã giới thiệu Windows Subsystem for Android (WSA)mới sẽ hỗ trợ Android Open Source Project (AOSP)và cho phép người dùng chạy ứng dụng Android trên máy tính để bàn Windows của họ. Microsoft đã xác nhận rằng người dùng sẽ có thể tải các ứng dụng Android vào Windows và có thể cài đặt các file APK được tải xuống từ các nguồn của bên thứ ba. Ngày 5 tháng 3 năm 2024, Microsoft đã thông báo sẽ chấm dứt các ứng dụng Android trên subsytem Windows 11 vào ngày 5 tháng 3 năm 2025, như một phần trong nỗ lực khấu hao subsytem khỏi nhân Windows NT, loại bỏ khả năng tương thích của các ứng dụng apk Android, bao gồm các ứng dụng Android từ Amazon App Store.

Google đã công bố kế hoạch vào tháng 12 năm 2021 để đưa các trò chơi Android lên Windows vào năm 2022.

## Nội dung gói
File APK là một file ZIP thường chứa các file và thư mục sau:

* `META-INF` : Thư mục
** `MANIFEST.MF`: Manifest file
** Chứng chỉ của ứng dụng.
** `CERT.SF`: Danh sách các tài nguyên và bản tóm tắt SHA-1 của các dòng tương ứng trong tệp MANIFEST.MF; ví dụ:
```text
Signature-Version: 1.0
Created-By: 1.0 (Android)
SHA1-Digest-Manifest: wxqnEAI0UA5nO5QJ8CGMwjkGGWE=
...
Name: res/layout/exchange_component_back_bottom.xml
SHA1-Digest: eACjMjESj7Zkf0cBFTZ0nqWrt7w=
Name: res/drawable-hdpi/icon.png
SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW0WGCA=
```

* `lib`: thư mục chứa mã đã biên dịch phụ thuộc vào nền tảng, ví dụ như các thư viện gốc có thể được tải thông qua JNI; thư mục được chia thành nhiều thư mục bên trong nó:
** `armeabi-v7a`: mã đã biên dịch chỉ dành cho tất cả các bộ xử lý dựa trên ARMv7 trở lên
** `arm64-v8a`: mã đã biên dịch chỉ dành cho tất cả các bộ xử lý dựa trên ARMv8 arm64 trở lên
** `x86`: mã đã biên dịch chỉ dành cho các bộ xử lý x86
** `x86_64`: mã đã biên dịch chỉ dành cho các bộ xử lý x86-64
** `mips` và `armeabi`, đã lỗi thời kể từ NDK r17
* `res`: thư mục chứa các tài nguyên không được biên dịch thành resources.arsc (xem bên dưới).
* `assets`: thư mục chứa các tài sản của ứng dụng, có thể được  `AssetManager` truy xuất.
* `AndroidManifest.xml`: File kê khai Android bổ sung, mô tả tên, phiên bản, quyền truy cập, các file thư viện được tham chiếu cho ứng dụng. File này có thể ở dạng XML nhị phân Android có thể được chuyển đổi thành XML văn bản thuần túy mà con người có thể đọc được bằng các công cụ như AXMLPrinter2, Apktool M hoặc Androguard.
* `classes.dex`: Các lớp được biên dịch theo định dạng file DEX do Android Runtime thực thi (hoặc do máy ảo Dalvik được sử dụng trong Android 4.4 KitKat).
* `resources.arsc`: một tệp chứa các tài nguyên được biên dịch trước, chẳng hạn như XML nhị phân.

## Xem thêm

* Android Runtime
*Android Developer
* Dalvik (software)
* .ipa (file extension)
*Android
*Android Pie (2019)
*Android Nougat
*Android Homepage
*Google Play
*Google

## Tham khảo

## Đọc thêm

*