欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Android SDK 开发中的 AAR 与 JAR 区别详解

Android SDK 开发中的 AAR 与 JAR 区别详解

2025/5/7 17:06:20 来源:https://blog.csdn.net/liuzhuo13396/article/details/147743032  浏览:    关键词:Android SDK 开发中的 AAR 与 JAR 区别详解

在 Android SDK 开发中,构建项目时我们常常会看到生成两个不同的文件:一个是 build/outputs/aar/*.aar,另一个是 build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar。很多初学者会疑惑:它们之间有什么区别?为什么构建会生成两个包?本篇博客将从生成路径、结构内容和使用场景三个角度,系统解释 AAR 和 JAR 的差异。


一、生成路径解析

  • AAR 路径:

    • build/outputs/aar/*.aar
    • 这是最终用于发布的 Android 库包,是你写的 SDK 的对外依赖形式。
  • JAR 路径:

    • build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar
    • 这是 AAR 构建过程中的中间产物,只包含编译后的 .class 字节码文件,供内部依赖合并、同步等使用。

二、结构内容区别

内容.aarclasses.jar
Java 编译后的 .class 文件
AndroidManifest.xml
res/ 资源文件(布局、drawable 等)
assets 目录
原生库(.so 文件)
ProGuard 混淆配置文件
AIDL 文件、R 文件

classes.jar 可以看作是 AAR 包中的 Java 部分,它是构建 AAR 时被打包进去的一部分。


三、使用场景区别

✅ 使用 AAR 的情况:
  • 你的库中包含资源文件(如 layout、drawable、string)
  • 你声明了组件(Activity、Service、Provider)
  • 你打算作为 Android SDK 发布给其他开发者
✅ 使用 JAR 的情况:
  • 你开发的是一个纯 Java 工具类库
  • 没有任何资源或 Android 相关特性
  • 可以跨平台使用,例如在 Kotlin/Java 控制台项目中

四、示意图说明

AAR 文件结构:my-sdk.aar
├── AndroidManifest.xml
├── classes.jar      ← 编译后的 Java 类
├── res/             ← 资源文件
├── assets/          ← 资产文件
├── jni/             ← .so 库文件
├── R.txt            ← R 文件映射表
├── proguard.txt     ← 混淆配置文件

classes.jar 是其中的一部分,只包含 Java 类,缺失资源、Manifest 等信息,因此不能单独用于 Android 项目。


五、总结

项目AARJAR
是否可直接用于 Android❌(除非是纯 Java)
是否包含资源文件
是否包含 manifest
是否是最终产物❌(是中间产物)

一句话总结: AAR 是完整的 Android 库包,包含 Java 字节码和资源;JAR 是纯 Java 字节码的封装,是构建过程中临时生成的部分内容。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com