Android中AAR、JAR、DEX、APK的区别

2024-01-16

在Android系统或开发环境中,AAR、JAR、DEX、APK文件有什么区别?每一项的目的是什么?

AFAIK,JAR 就像 .class 文件的集合(就像 Java 中的那样)。

AAR 是 JAR 文件+资源。但它的用例是什么?用于分发 Android 开发库?

APK 似乎类似于 .deb 或 .rpm 等软件包。这是在 Android 上安装应用程序的唯一方法吗?

那么 DEX 文件呢?已编译的应用程序...但是 JAR 或 AAR 文件有什么区别?

此外,在为 Android 分发 .so(即本机代码)文件时,最好的方法是什么?


JAR(Java 存档)

JAR是一种包文件格式,设计用于在其平台上分发Java应用程序。它包含已编译的 Java 类文件 + 一些其他文件,例如 MANIFEST.基本上它只是一个带有一些限制的 ZIP 存档。

DEX(Dalvik 可执行文件)

DEX是二进制文件格式,所以是编译的。我们可以说,.dex文件用于 DVM(Dalvik 虚拟机),类似于.classJVM 文件。

DEX 文件格式实际上是由 Android SDK 中的 dex 编译器从 java CLASS 文件生成的。该编译器将 JVM 字节码转换为 DVM 字节码,并将所有类文件放入一个 dex 文件中。

APK(安卓应用程序包)

APK 是专为在其平台上分发 Android 应用程序而设计的文件格式。它与 JAR 格式有一些相似之处。同样,它只是一个 ZIP 存档,但 APK 文件具有预定义的特定结构。例如,它始终必须包含名为AndroidManifest.xml还有很多。该包还以 dex 格式聚合编译后的类。

AAR

AAR 是 Android 库项目的二进制发行版。它的结构与 APK 类似。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android中AAR、JAR、DEX、APK的区别 的相关文章

  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • 在 AppAuth-Android 中注销

    我有一个用JAVA开发的Android应用程序 对于这个应用程序 我使用的是身份服务器4 https github com IdentityServer IdentityServer4作为我的 STS 一切正常 但我找不到任何注销的实现Ap
  • jar 中的 apklib 有什么优点?

    我正在关注这个问题 https stackoverflow com questions 6059502 whats the difference between apklib and jar files但它并没有完全回答我的问题 jar 中
  • 如何从 Facebook 邀请好友到 Android 应用程序? - 给出错误

    我正在开发一个 Android 应用程序 我正在努力将 邀请朋友 功能添加到我的应用程序中 它转到我的AppLinkUrl成功但显示错误 我的清单代码如下
  • ACCESS_BACKGROUND_LOCATION 不适用于低于 Q (29) 的 Android 版本

    我的应用程序面向 Android API 28 根据文档 https developer android com preview privacy location target android 10 我应该要求ACCESS BACKGROU
  • 使用嵌套的 hashmap 参数发送 volley 请求

    我正在使用 android volley 框架向我的服务器发送 jsonobject 请求 get 请求工作正常 现在我想发送一个带有请求参数的 post 请求 该请求参数是嵌套的 hashmap 我重写 getparams 方法 但它期望
  • 如何获取android手机型号、版本、sdk详细信息?

    如何获取android手机型号 版本 sdk详细信息 首先 看看 android sdk 页面上的这些 Build 类 http developer android com reference android os Build html h
  • 在 Android 中上传文件出现内存不足错误

    我的上传代码如下 String end r n String twoHyphens String boundary try URL url new URL ActionUrl HttpURLConnection con HttpURLCon
  • Android:确定 2.2 及更高版本上的摄像头数量

    我的应用程序需要在 Android 2 2 及更高版本上运行 我需要一种方法来确定可用摄像机的数量 有很多帖子解决了这个问题 但我找不到一个有效的 一种解决方案是简单地检测操作系统版本 任何 2 2 版本的设备都仅限于 1 个摄像头 即使该
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da
  • Android ADT Eclipse 插件,parseSDKContent 失败

    我刚刚设置了我的第一个 Android 开发环境 其中包括 日食3 5 Mac OS X 10 5 适用于 x86 mac 的 Android SDK ADT Eclipse 插件 0 9 6 我已将 set PATH 设置为我的 SDK
  • putFragment() - 片段 x 当前不在 FragmentManager 中

    上面的标题被问了很多次 但答案似乎与FragmentStatePagerAdapter这与我的问题无关 我正在使用该方法putFragment Bundle String Fragment 直接地 The 安卓文档 http develop
  • 异步更新后更新Android Listview

    我正在将 HTTP 调用从同步调用转换为异步调用 由于连接在后台运行 因此当我最初设置列表适配器时 数据不存在 如何在 HTTP 调用后更新列表适配器 我尝试了一些方法 例如在数据发送回之前不设置适配器并再次设置适配器 但没有任何效果 这是

随机推荐

  • 在 Node.JS 中引用相对于应用程序根目录的文件的正确方法

    我有一个在 AWS EC2 的 Linux 上运行的 Node JS 应用程序 它使用 fs 模块读取 HTML 模板文件 这是应用程序的当前结构 server js templates my template html services
  • Angular 6 迁移 -.angular-cli.json 到 angular.json

    我已经将我的项目升级到 Angular 6 除了转换之外一切都很顺利 angular cli json文件 从我遵循的指南来看 据说这会自动转换它 npm install g angular cli npm 安装 angular cli n
  • 构建 SparkSession

    我有在齐柏林飞艇担任翻译的火花 我使用的是Spark2 0 我构建了一个Session Create 一般来说 你不应该初始化SparkSession nor SparkContext在齐柏林飞艇 Zeppelin 笔记本配置为为您创建会话
  • Haskell 中 (^) 的奇怪行为

    为什么 GHCi 下面给出了错误的答案 GHCi gt 20 24373193905347 12 2 20 24373193905347 24 4 503599627370496e15 Python3 gt gt gt 20 2437319
  • 从沙箱 iFrame 到主窗口的 PostMessage,origin 始终为 null

    关于 javascript postMessage 事件的事件起源 我不明白一些事情 这是我的主页 h1 Test h1 h2 Outside h2 和我的 i
  • 在 Saleor 中编辑模型并扩展数据库结构

    我最近将 Saleor 2 9 分叉为一个网络应用程序 我正在为一家艺术画廊构建该应用程序 该画廊希望展示其待售产品并为他们的艺术家提供一些宣传 我希望能够拥有一堆卡片 例如 我们的团队 组件 从后端的艺术家表中提取数据 该表存储有关艺术家
  • C++ 重载宏

    我看到了重载宏的不同解决方案和变通方法 但我似乎在这一点上遇到了困难 我有一个PRINT DEBUG打印到 Visual Studio 调试器的宏 define DEBUG PRINT message RPTN 0 message n VA
  • Node.js WriteStream 在关闭之前不会将数据写入文件

    我怎样才能将数据写入文件WriteStream write 叫做 编辑 事实证明 当我使用 REPL 并调用该函数时 这是有效的 但是 这在我的程序中不起作用 import as FS from fs import LetterGroup
  • 'this' 关键字作为属性

    我很了解 C 但这对我来说很奇怪 在一些旧程序中 我看到过这样的代码 public MyType this string name some code that finally return instance of MyType 怎么称呼
  • 堆和栈内存是如何管理、实现和分配的?

    在 C C 中 我们可以在堆栈或堆上存储变量 函数 成员函数 类的实例 每一项是如何实施的 它是如何管理的 高层 gcc 是否预先分配一块内存用于堆栈和堆 然后根据请求分配出去 原始内存是来自RAM吗 函数可以分配在堆上而不是堆栈上吗 澄清
  • 为什么会话 bean 方法在抛出 RuntimeException 时抛出 EjbTransactionRolledbackException

    我试图通过约束验证来持久化实体 当调用持久化时 抛出约束并且调用者得到EjbTransactionRolledbackException 所以我尝试显式调用验证并抛出ConstraintViolationException RuntimeE
  • 如何在plsql中动态定义类型

    我有一个这样的程序 create or replace procedure pname tn varchar2 is here i want to declare the variable col1 tn COL ID begin end
  • Firebase 确认电子邮件未发送

    我已成功设置 Firebase 电子邮件 密码身份验证 但出于安全原因 我希望用户确认她 他的电子邮件 Firebase 网站上写道 当用户使用电子邮件地址和密码注册时 系统会发送一封确认电子邮件以验证其电子邮件地址 但是当我注册时 我没有
  • XMMatrix 的访问浮点数 - () 运算符不起作用

    我正在尝试在 DirectX 中做一些 3D 工作 我正在从 OpenGL 迁移 但遇到了障碍 我想访问 XMMATRIX 的值并查看 Microsoft 文档 应该有一个 运算符 float operator size t Row siz
  • C中主要函数的风格[重复]

    这个问题在这里已经有答案了 可能的重复 main 的正确声明是什么 https stackoverflow com questions 4207134 what is the proper declaration of main 我正在努力
  • Python正则表达式将空格分隔的单词分隔成列表

    如果我有一个字符串 hello world示例文本 我希望能够将其转换为列表 hello world sample text 我怎样才能用正则表达式做到这一点 其他不使用re的方法也是可以接受的 hello world sample tex
  • PHP/Apache REQUEST_URI 不同的行为?

    我正在将网站从一台服务器移动到另一台服务器 两者都具有相似的变体森托斯 5 x64 with 阿帕奇2 2 and PHP 5 2 X 我的一些脚本 包括WordPress 行为不正确 事实证明问题在于两者之间的差异REQUEST URI
  • 必填字段验证器,在初始页面加载时显示

    我有一个简单的文本框 末尾附加了必需的字段验证控件 然后显示在页面底部的验证摘要中 一切都运行良好 但验证似乎在页面的初始加载时触发 这显然会引发所需的验证并显示错误消息 如何将此控件设置为仅在提交表单后才验证 听起来您的页面加载中有这样的
  • 将 sql 查询转换为等效的 Spark 查询

    我在用spark sql 2 4 1v用java8 我有如下所示的场景 片段 Dataset
  • Android中AAR、JAR、DEX、APK的区别

    在Android系统或开发环境中 AAR JAR DEX APK文件有什么区别 每一项的目的是什么 AFAIK JAR 就像 class 文件的集合 就像 Java 中的那样 AAR 是 JAR 文件 资源 但它的用例是什么 用于分发 An