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

Quick Facts 扩展名, 互联网媒体类型 ...
APK
Thumb
扩展名
.apk.xapk.apks.apkm
互联网媒体类型
application/vnd.android.package-archive
格式类型包管理器 存档文件
作为容器软件包
扩展自JARZIP
Close
Thumb
维基百科应用程式的APK安装介面
Thumb
绝大多数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档有可能被窜改甚至加入恶意软体,用户需留意资讯安全风险。

扩展阅读

参考文献

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.