Gói ứng dụng Android

APK
Phần mở rộng tên file.apk
Kiểu phương tiệnapplication/vnd.android.package-archive
Kiểu định dạngĐịnh dạng đóng gói
Dùng để chứaỨng dụng trên thiết bị di động
Được mở rộng từJAR và ZIP

Gói ứng dụng Android (APK)[1]định dạng tập tin được sử dụng để phân phối và cài đặt ứng dụng di động trên hệ điều hành Android và các hệ điều hành dựa trên Android. Các ứng dụng này có thể được viết bằng Java hoặc Kotlin.[2][3] Các tệp APK có thể được tạo và ký từ Android App Bundles.[4][5][6]

Tổng quan

APK là định dạng tệp được sử dụng để đóng gói và phân phối các ứng dụng Android. APK tương tự như các gói phần mềm khác, chẳng hạn như APPX trong Windows, APP trong HarmonyOS hoặc gói Debian. Để tạo tệp APK, trước tiên một chương trình Android được biên dịch bằng công cụ như Android Studio[7] hoặc Visual Studio. Sau đó, tất cả các phần của chương trình được đóng gói thành một tệp APK. Tệp APK chứa tất cả mã chương trình, tài nguyên, nội dung, chứng chỉ và tệp kê khai của ứng dụng. Tên tệp APK có thể được đặt bất kỳ, nhưng thường được khuyến nghị kết thúc bằng .apk để dễ nhận biết.[8][9][10]

Điện thoại Android, ví dụ như Galaxy Nexus, cho phép cài đặt ứng dụng trực tiếp bằng tập tin APK hay gián tiếp qua Google Play

Trên hầu hết các thiết bị Android, người dùng chỉ có thể cài đặt các ứng dụng từ Google Play. Để cài đặt ứng dụng từ các nguồn khác, người dùng cần bật cài đặt "Nguồn không xác định". Việc bật cài đặt này có thể làm tăng nguy cơ cài đặt ứng dụng độc hại, vì vậy người dùng nên cân nhắc kỹ trước khi thực hiện.[11]

Sử dụng trên các hệ điều hành khác

BlackBerry 10 từng hỗ trợ chạy các ứng dụng Android từ phiên bản 4.1 Jelly Bean trở lên. Tính năng này được thực hiện thông qua Android Runtime, cho đến bản cập nhật firmware 10.2.1 vào tháng 1 năm 2014.[12] Sau đó, BlackBerry hợp tác với Amazon.com để cung cấp kho ứng dụng Amazon Appstore trên BlackBerry 10. Tính năng này được tích hợp trong bản cập nhật 10.3, ra mắt vào ngày 18 tháng 6 năm 2014.

Microsoft công bố môi trường nền Android Astoria tại hội nghị Build 2015. Môi trường này cho phép chạy các ứng dụng Android trong môi trường giả lập với những thay đổi tối thiểu, đồng thời cung cấp quyền truy cập vào các API nền tảng của Microsoft như Bing MapsXbox Live. Tuy nhiên, 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 tác vụ nền có thể hoạt động kém.[13][14]

Vào ngày 25 tháng 2 năm 2016, Microsoft chính thức ngừng phát triển dự án Astoria.[15][16] Dự án này cho phép chạy các ứng dụng Android trên Windows 10, nhưng đã bị trì hoãn vào tháng 11 năm 2015. Microsoft cho rằng Astoria là dư thừa so với bộ công cụ Windows Bridge, vốn đã hỗ trợ phát triển ứng dụng đa nền tảng cho Windows 10. Ngoài ra, công ty cũng khuyến khích các nhà phát triển sử dụng sản phẩm của Xamarin, một công ty chuyên về phát triển ứng dụng đa nền tảng[17][18]. Một phần của Astoria đã được sử dụng làm nền tảng cho Windows Subsystem for Linux (WSL) trên phiên bản Windows 10 dành cho PC, Androidmentor.[19]

Vào ngày 2 tháng 6 năm 2021, HarmonyOS 2.0 cho điện thoại thông minh và máy tính bảng đã tích hợp khả năng tương thích với APK.[20] Tại sự kiện ra mắt Windows 11 vào tháng 6 năm 2021, Microsoft đã giới thiệu Windows Subsystem for Android (WSA), một tính năng mới cho phép chạy các ứng dụng Android trên máy tính Windows. WSA hỗ trợ Android Open Source Project (AOSP), nghĩa là nó có thể chạy các ứng dụng Android được xây dựng cho Android Open Source Project. Người dùng có thể sideload các ứng dụng Android lên Windows bằng cách tải xuống các tệp APK từ các nguồn bên thứ ba.[21]

Vào tháng 12 năm 2021, Google đã công bố kế hoạch mang trò chơi Android lên Windows vào năm 2022.[22][23]

Nội dung gói

Tệp APK là một kho lưu trữ ZIP[24] thường chứa các tệp và thư mục sau:

  • Thư mục META-INF
    • MANIFEST.MF: Tệp kê khai, chứa thông tin về ứng dụng như tên, phiên bản, quyền hạn, v.v.
    • Chứng chỉ của ứng dụng: Xác minh danh tính và tính xác thực của nhà phát triển ứng dụng.
    • CERT.SF: Danh sách các tài nguyên trong ứng dụng cùng với hàm băm SHA-1 tương ứng của các dòng trong tệp MANIFEST.MF. Hàm băm này giúp đảm bảo tính toàn vẹn của các tài nguyên ứng dụng. Ví dụ như:
      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=
      
  • Thư mục lib: thư mục chứa mã được 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 này được chia thành các thư mục con bên trong nó:
    • armeabi-v7a: Mã được biên dịch chỉ dành cho các bộ xử lý dựa trên ARMv7 trở lên.
    • arm64-v8a: Mã được biên dịch chỉ dành cho các bộ xử lý dựa trên ARMv8 arm64 trở lên.[25]
    • x86: Mã được biên dịch chỉ dành cho các bộ xử lý x86.
    • x86_64: Mã được biên dịch chỉ dành cho các bộ xử lý x86-64.
    • mipsarmeabi, không còn được hỗ trợ kể từ NDK r17[26][27]
  • res: Thư mục chứa các tài nguyên không được biên dịch vào tệp 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 truy xuất bằng AssetManager.
  • AndroidManifest.xml: Tệp kê khai Android bổ sung, mô tả tên, phiên bản, quyền truy cập, các tệp thư viện được tham chiếu cho ứng dụng. Tệp 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 dễ đọ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 ở định dạng tệp dex được thực thi bởi Android Runtime (hoặc bởi máy ảo Dalvik được sử dụng trong Android 4.4 KitKat).
  • resources.arsc: 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

Tham khảo

  1. ^ “Application Fundamentals”. Android Developers (bằng tiếng Anh). Lưu trữ bản gốc 21 Tháng mười một năm 2020. Truy cập 3 Tháng mười hai năm 2018.
  2. ^ mattwojo (13 tháng 7 năm 2021). “Native Android development on Windows”. learn.microsoft.com (bằng tiếng Anh). Truy cập ngày 12 tháng 1 năm 2024.
  3. ^ Soni, Tanuj (20 tháng 10 năm 2021). “Reverse Engineer Your Favorite Android App”. helpshift-engineering (bằng tiếng Anh). Truy cập ngày 12 tháng 1 năm 2024.
  4. ^ Peters, Jay (30 tháng 6 năm 2021). “Google is moving away from APKs on the Play Store”. The Verge. Lưu trữ bản gốc 4 Tháng tám năm 2021. Truy cập 15 Tháng tám năm 2021.
  5. ^ “Google is ditching the APK format; What it means for users”. The Indian Express (bằng tiếng Anh). 1 tháng 7 năm 2021. Truy cập ngày 12 tháng 1 năm 2024.
  6. ^ Das, Ankush (13 tháng 7 năm 2021). “Google Is Moving Away From APKs for Android Apps: Here's Why”. MUO (bằng tiếng Anh). Truy cập ngày 12 tháng 1 năm 2024.
  7. ^ “Application Studio”. Android Developers. Lưu trữ bản gốc ngày 12 tháng 9 năm 2021. Truy cập ngày 22 tháng 2 năm 2020.
  8. ^ “Inside the Android Application Framework” (video). Google Sites. 2008. Lưu trữ bản gốc ngày 24 tháng 12 năm 2011. Truy cập ngày 22 tháng 10 năm 2008.
  9. ^ Hatem Ben Yacoub (20 tháng 4 năm 2018). “Tips: How to install apk files on Android Emulator”. Open Ha Magazine. Bản gốc lưu trữ 21 tháng Năm năm 2012. Truy cập 17 tháng Bảy năm 2021.
  10. ^ “The Structure of Android Package (APK) Files”. OPhone SDN. OPhone Software Developer Network. 17 tháng 11 năm 2010. Bản gốc lưu trữ ngày 8 tháng 2 năm 2011.
  11. ^ “Unknown Sources: Everything you need to know!”. Android Central. 27 tháng 7 năm 2018. Lưu trữ bản gốc ngày 1 tháng 9 năm 2021. Truy cập ngày 4 tháng 3 năm 2020.
  12. ^ Michael, Kozlowski (29 tháng 1 năm 2014). “BlackBerry 10.2.1 Update Allows you to Install APK Files on your Phone”. GoodEReader. Lưu trữ bản gốc 1 Tháng Ba năm 2014. Truy cập 29 Tháng Một năm 2014.
  13. ^ “How will Android support work in Windows 10 for Phones?”. TechRadar Pro. Bản gốc lưu trữ ngày 19 tháng 5 năm 2015. Truy cập ngày 22 tháng 5 năm 2015.
  14. ^ “Microsoft brings Android, iOS apps to Windows 10”. Ars Technica. 29 tháng 4 năm 2015. Lưu trữ bản gốc ngày 8 tháng 7 năm 2017. Truy cập ngày 30 tháng 4 năm 2015.
  15. ^ “Microsoft might not bring Android apps to Windows after all”. The Verge. Vox Media. 16 tháng 11 năm 2015. Lưu trữ bản gốc ngày 17 tháng 11 năm 2015. Truy cập ngày 16 tháng 11 năm 2015.
  16. ^ Collins, Katie (16 tháng 11 năm 2015). “Microsoft presses pause on tool for porting Android apps to Windows 10”. CNET. CBS Interactive. Lưu trữ bản gốc ngày 9 tháng 7 năm 2017. Truy cập ngày 26 tháng 5 năm 2022.
  17. ^ “Microsoft confirms: Android-on-Windows Astoria tech is gone”. Ars Technica. Conde Nast. 25 tháng 2 năm 2016. Lưu trữ bản gốc ngày 25 tháng 2 năm 2016. Truy cập ngày 25 tháng 2 năm 2016.
  18. ^ “An Update on the Developer Opportunity and Windows 10”. Building Apps for Windows blog. Microsoft. 25 tháng 2 năm 2016. Lưu trữ bản gốc ngày 26 tháng 2 năm 2016. Truy cập ngày 25 tháng 2 năm 2016.
  19. ^ Bright, Peter (6 tháng 4 năm 2016). “Why Microsoft needed to make Windows run Linux software”. Ars Technica. Condé Nast. Lưu trữ bản gốc ngày 6 tháng 4 năm 2016. Truy cập ngày 26 tháng 5 năm 2022.
  20. ^ Cheng, Christina (12 tháng 6 năm 2021). “Google apps still supported on new HarmonyOS upgraded from EMUI”. RPRNA (bằng tiếng Anh). Truy cập ngày 15 tháng 4 năm 2023.
  21. ^ Parmar, Mayank (27 tháng 6 năm 2021). “Microsoft confirms Android apps will run on all Windows 11 PCs”. Windows Latest. Lưu trữ bản gốc ngày 27 tháng 6 năm 2021. Truy cập ngày 28 tháng 6 năm 2021.
  22. ^ “Google Play Games - Play Android games on PC”. play.google.com (bằng tiếng Anh). Lưu trữ bản gốc ngày 3 tháng 1 năm 2023. Truy cập ngày 4 tháng 1 năm 2023.
  23. ^ Warren, Tom (9 tháng 12 năm 2021). “Google is bringing Android games to Windows in 2022”. The Verge (bằng tiếng Anh). Lưu trữ bản gốc ngày 13 tháng 12 năm 2021. Truy cập ngày 13 tháng 12 năm 2021.
  24. ^ “File format. Apk”. 11 tháng 10 năm 2019. Lưu trữ bản gốc ngày 5 tháng 12 năm 2022. Truy cập ngày 5 tháng 12 năm 2022.
  25. ^ “ABI Management | Android Developers”. developer.android.com. Lưu trữ bản gốc ngày 31 tháng 5 năm 2019. Truy cập ngày 16 tháng 6 năm 2018.
  26. ^ “Android ABIs | Android NDK”. Android Developers (bằng tiếng Anh). Lưu trữ bản gốc ngày 8 tháng 4 năm 2019. Truy cập ngày 14 tháng 8 năm 2020. Note: Historically the NDK supported ARMv5 (armeabi), and 32-bit and 64-bit MIPS, but support for these ABIs was removed in NDK r17.
  27. ^ Dan, Albert (5 tháng 9 năm 2018). “Changelog r17”. GitHub (bằng tiếng Anh). Lưu trữ bản gốc ngày 28 tháng 8 năm 2020. Truy cập ngày 14 tháng 8 năm 2020. Support for ARMv5 (armeabi), MIPS, and MIPS64 has been removed. Attempting to build any of these ABIs will result in an error.

Đọc thêm