android - apk 是否包含有效负载,或者如果我想通过 apk 文件共享我的应用程序,我是否必须添加它们?
问题描述
如果我希望其他人通过 apk 文件使用它,我想知道是否必须向 apk 文件添加有效负载或其他任何内容?
解决方案
APK 文件是通常包含以下文件和目录的存档:
META-INF 目录:
MANIFEST.MF:清单文件
CERT.RSA:应用程序的证书。
CERT.SF:MANIFEST.MF文件中相应行的资源列表和SHA-1摘要;例如:
签名版:1.0
创建者:1.0 (Android)
SHA1-摘要-清单:wxqnEAI0UA5nO5QJ8CGMwjkGGWE=
...
名称:res/layout/exchange_component_back_bottom.xml
SHA1-摘要:eACjMjESj7Zkf0cBFTZ0nqWrt7w=
名称:res/drawable-hdpi/icon.png
SHA1-摘要:DGEqylP8W0n0iV/ZzBx3MW0WGCA=
lib:包含平台相关的编译代码的目录,该目录在其中分为多个目录:
armeabi:仅针对所有基于 ARM 的处理器的编译代码
armeabi-v7a:仅适用于所有基于 ARMv7 及以上处理器的编译代码
arm64-v8a:仅适用于所有基于 ARMv8 arm64 及以上处理器的编译代码[8]
x86:仅适用于 x86 处理器的编译代码
x86_64:仅适用于 x86 64 处理器的编译代码
mips:仅适用于 MIPS 处理器的编译代码
res:包含未编译到 resources.arsc 中的资源的目录(见下文)。
assets:包含应用程序资产的目录,可由 AssetManager 检索。AndroidManifest.xml:附加的 Android 清单文件,描述应用程序的名称、版本、访问权限、引用的库文件。此文件可能是 Android 二进制 XML,可以使用 AXMLPrinter2、apktool 或 Androguard 等工具转换为人类可读的纯文本 XML。
classes.dex:以 Dalvik 虚拟机和 Android Runtime 可理解的 dex 文件格式编译的类。
resources.arsc:包含预编译资源的文件,例如二进制 XML。
因此,APK 假设拥有所有二进制文件和资源来使用您的应用程序。
推荐阅读
- ios - iOS InApp 购买在生产中不起作用(在 testflight 中可以)
- java - 使用 Android-x86 模拟器“Flutter Run”时构建错误
- scala - 使用 Scala 3 播放框架
- gcc - 如何使用 gcc 检测 AVX2 支持
- hibernate - Hazelcast EventQueue 重载更新缓存区域 default-update-timestamps-region
- ionic-framework - Ionic Vue:如何根据当前平台有条件地应用类实用程序?
- javascript - 将 PostCSS 更新到版本 8 React 后应用程序无法运行
- android - Android 发布小部件失败
- wpf - 如何为边框的 DropShadowEffect 触发动画?
- javascript - Recusive Key & Value 重命名在数组中失败