Android Gradle - 一些 Gradle 的碎片知识(Android Gradle Plugin、namespace、package 属性、模块打包)
Gradle 与 Android Gradle Plugin
Gradle 是一个强大且高度可配置的构建工具,本身只提供了核心的构建框架和任务管理机制,,为各类项目(例如,Java、Kotlin、C++ 项目)提供构建能力的基础
Android Gradle Plugin 是运行在 Gradle 之上的一个特定插件,它的作用是让 Gradle 能够理解并执行构建 Android 应用所需的一切复杂工作,例如
1. 编译资源文件和 Java / Kotlin 代码 2. 处理 AndroidManifest.xml 3. 对 APK 进行签名和对齐 4. 管理构建变体Android Gradle 中的 android{ namespace }
namespace 是 Android Gradle Plugin(AGP)7.0 版本中引入了新的概念,用来取代旧版的 applicationId 和 package 在资源访问层面的角色
namespace 的核心作用是给 App 的
R.java文件指定一个包名路径旧方式的
R.java的包名路径默认等于AndroidManifest.xml文件中的 package 属性
旧版 package 的属性身兼多职
1、基本介绍
应用唯一标识:系统根据 package 识别你的 App、布到 Google Play 后不可更改、影响安装路径
/data/data/<package>/资源命名空间:决定
R.java文件生成的包路径默认代码包名:如果没有显式指定,Java / Kotlin 文件的默认包名就是它,
AndroidManifest.xml文件中注册的四大组件可以省略包名
<!-- 完整写法 --><activityandroid:name="com.example.myapp.MainActivity"/><!-- 省略包名 --><activityandroid:name=".MainActivity"/>2、AGP 7.0+ 的明确分工
应用唯一标识:交给项目级
build.gradle的 applicationId资源命名空间:交给项目级
build.gradle的 namespace默认代码包名:交给项目级
AndroidManifest.xml的 package
Android 模块打包
1、基本介绍
如果模块只包含纯逻辑代码,那可以打 JAR 包
但大多数 Android 模块会涉及资源文件,最推荐的还是打 AAR 包
布局文件(.xml) 图片、图标(drawable/) 颜色、尺寸、字符串(values/) 自定义 View 需要 attrs.xml 四大组件(Activity、Service 等)需要清单声明只有纯算法、工具类(没有 Android 资源)可以打 JAR 包;但凡有界面或资源,必须打 AAR 包
Gradle implementation 可以拉取 JAR 包或 AAR 包
2、打 AAR 包
创建 Android Library 模块:
【File】 → 【New】 → 【New Module】 → 【Android Library】构建 AAR 包:
打开右侧 Gradle 面板 → 找到【模块名/Tasks/build/assemble] → 双击执行获取 AAR 包,生成位置如下
模块名/build/outputs/aar/ ├── 模块名-release.aar # 正式版(推荐) └── 模块名-debug.aar # 调试版