Android包(英语:Android PackageAPK),是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的档案格式便是“APK”。 一个APK文件内包含被编译的代码文件(.dex 文件),文件资源(resources), assets,证书(certificates),和清单文件(manifest file)。[1][2][3][4]

APK
扩展名
.apk.xapk.apks.apkm
互联网媒体类型
application/vnd.android.package-archive
格式类型包管理器 存档文件
作为容器软件包
扩展自JARZIP
维基百科应用程式的APK安装介面
绝大多数Android设备,比如Nexus 4,允许用户安装APK格式的文件来使用应用程序。

APK文件基于ZIP文件格式,它与JAR文件的构造方式相似。它的互联网媒体类型是:application/vnd.android.package-archive[5]

结构

一个APK文件通常包含以下文件:

  • META-INF 文件夹:
    • MANIFEST.MF: 清单文件(Manifest file)
    • CERT.RSA: 保存着该应用程序的证书和授权信息。
    • CERT.SF: 保存着 SHA-1 信息资源列表,比如:
      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=
      
  • res: APK所需要的资源文件夹。
  • AndroidManifest.xml: 一个传统的Android清单文件,用于描述该应用程序的名字、版本号、所需权限、注册的服务、链接的其他应用程序。该文件使用XML文件格式,可以编译为二进制的XML,使用的工具为 AXMLPrinter2页面存档备份,存于互联网档案馆) 或apktool页面存档备份,存于互联网档案馆).
  • classes.dex: classes文件通过DEX编译后的文件格式,用于在Dalvik虚拟机上运行的主要代码部分。
  • resources.arsc:程式的语言档案,可以透过这软体用(AndroidResEdit等工具)来进行翻译

也可以用ApkTool等工具来反编译后再开始进行软体修改,亦可编译回来。

分发

APK格式由谷歌公司Google)发布,但谷歌在其官方应用商店Google Play并不提供apk文件下载,用户只能通过安卓手机上的应用程序Play商店来在线安装其他应用。但有第三方的网站提供应用的APK下载,用户可以下载到手机,然后在本地安装,不过第三方网站提供的apk档有可能被窜改甚至加入恶意软体,用户需留意资讯安全风险。

在其他操作系统上的使用

黑莓公司 通过 Android Runtime 支持运行 Android 4.1 Jelly Bean 及更高版本的应用程序,并通过 2014 年 1 月的 10.2.1 固件更新支持至已停止服务的 Blackberry 10 系统。[6] 2014 年 6 月 18 日,黑莓宣布与 亚马逊 建立合作关系,并在 10.3 更新中集成 亚马逊应用商店

在 2015 年的 Build 大会上,微软宣布为 Windows 10 Mobile 提供一个名为“阿斯托里亚 (Astoria)”的 Android 运行环境,使 Android 应用能够在模拟环境中运行,并且只需进行少量更改即可,同时可以使用微软平台 API,例如 Bing MapsXbox Live,作为相当于 Google流动服务 的替代方案。Google 移动服务及某些核心 API 不会被支持,且在后台任务中有“深度集成”的应用程序在此环境中可能无法良好运行。[7]

2016年2月25日,在已经于2015年11月延迟发布后,[8][9] 微软宣布将搁置 “Astoria” 项目,理由是该工具包与原生 Windows Bridge 工具包存在冗余,因为 iOS 已经是移动应用开发的主要目标。公司还鼓励使用 Xamarin(前一天刚被微软收购)的产品,通过 C# 编程语言 进行多平台应用程序开发。[10][11] “Astoria” 项目中的部分技术后来成为 Windows 10 PC 版本上的 适用于Linux的Windows子系统 (WSL) 平台的基础之一。[12]

2019年8月9日,鸿蒙操作系统 (HarmonyOS) 通过Android开源项目 (AOSP) 基于Linux内核的基础实现了APK兼容性,HarmonyOS 1.0 首先用于电视设备[13][14]。2021年6月2日,HarmonyOS 2.0 版本进一步扩展到智能手机和平板电脑,直到HarmonyOS NEXT系统推出 Galaxy Edition 版本,并计划在2024年第二季度发布的 HarmonyOS 5 Beta 商业版本中继续迭代更新。[15][16]

在2021年6月的Windows 11发布会上,微软展示了新的Windows Subsystem for Android (WSA),这将支持Android开源项目 (AOSP),允许用户在Windows桌面上运行安卓应用。微软确认,用户可以将从第三方源下载的APK文件安装到Windows中。[17] 2024年3月5日,微软宣布将于2025年3月5日停止Windows 11的Android应用子系统支持,这是其逐步取消Windows NT内核对Android APK应用兼容性的一部分,届时包括来自亚马逊应用商店的安卓应用也将不再支持。[18]

2021年12月,谷歌宣布计划在2022年将Android游戏引入Windows平台。[19][20]

扩展阅读

参考文献

  1. ^ Inside the Android Application Framework (video). Google Sites. Google. 2008 [2012-01-08]. (原始内容存档于2011-12-24). 
  2. ^ Hatem Ben Yacoub. Tips: How to install apk files on Android Emulator. Open Handset Magazine. 19 January 2008 [2012年1月8日]. (原始内容存档于2012年5月26日). 
  3. ^ The Structure of Android Package (APK) Files. OPhone SDN. OPhone Software Developer Network. 17 November 2010 [2012年1月8日]. (原始内容存档于2011年8月15日). 
  4. ^ chibucks. Learn to Fish: General Structure of an APK. SDX-Developers Forum. Simple Machines Forum. 28 May 2010 [2012年1月8日]. (原始内容存档于2012年7月17日). 
  5. ^ Developer description of MIME type for .apk. [2012-01-08]. (原始内容存档于2009-07-18). 
  6. ^ Kozlowski, Michael. BlackBerry 10.2.1 Update Allows you to Install APK Files on your Phone - Good e-Reader. 2014-01-29 [2024-11-13] (加拿大英语). 
  7. ^ Staff, Ars. Microsoft brings Android, iOS apps to Windows 10. Ars Technica. 2015-04-29 [2024-11-13] (美国英语). 
  8. ^ Warren, Tom. Microsoft might not bring Android apps to Windows after all. The Verge. 2015-11-16 [2024-11-13] (英语). 
  9. ^ Microsoft presses pause on tool for porting Android apps to Windows 10. CNET. [2024-11-13] (英语). 
  10. ^ Staff, Ars. Microsoft confirms: Android-on-Windows Astoria tech is gone. Ars Technica. 2016-02-25 [2024-11-13] (美国英语). 
  11. ^ Blog, Windows Developer; Gallo, Kevin. An Update on the Developer Opportunity and Windows 10. Windows Developer Blog. 2016-02-25 [2024-11-13] (美国英语). 
  12. ^ Staff, Ars. Why Microsoft needed to make Windows run Linux software. Ars Technica. 2016-04-05 [2024-11-13] (美国英语). 
  13. ^ Warren. Huawei's HarmonyOS has ADB mode, could it be based on Android?. KLGadgetGuy. 2019-08-12 [2024-11-13] (美国英语). 
  14. ^ Matsui, Emiko. Huawei to launch HarmonyOS NEXT beta at HDC 2024 event in June. Huawei Central. 2024-04-11 [2024-11-13] (美国英语). 
  15. ^ Cheng, Christina. Google apps still supported on new HarmonyOS upgraded from EMUI. RPRNA. 2021-06-12 [2024-11-13] (美国英语). 
  16. ^ Matsui, Emiko. HarmonyOS NEXT Galaxy will officially meet users in Spring: Huawei. Huawei Central. 2024-02-07 [2024-11-13] (美国英语). 
  17. ^ Parmar, Mayank. Microsoft confirms Android apps will run on all Windows 11 PCs. Windows Latest. 2021-06-27 [2024-11-13] (美国英语). 
  18. ^ Warren, Tom. Microsoft to end its Android apps on Windows 11 subsystem in 2025. The Verge. 2024-03-05 [2024-11-13] (英语). 
  19. ^ Google Play 游戏 - 在 Windows PC 平台上畅玩手游. play.google.com. [2024-11-13] (中文). 
  20. ^ Warren, Tom. Google is bringing Android games to Windows in 2022. The Verge. 2021-12-10 [2024-11-13] (英语). 

外部链接