编写代码缩减规则时的智能编辑器功能
我们在 Android Gradle 插件 3.4.0 中引入了 R8,使得字节码转换 (desugaring)、缩减、混淆和 dex 处理能一步到位,这让构建性能得到了显著的提升。在创建 R8 的规则文件时,Android Studio 现在提供了智能编辑器功能,包括语法高亮、补全以及错误检查等。编辑器还与您的 Android 项目集成,为所有的类、方法和字段提供完整的符号补全,并提供快速导航和重构功能。
IntelliJ IDEA 2019.3 平台更新
Android Studio IDE 核心已经整合了 IntelliJ IDEA 2019.3 和 2019.3.3 版本的更新。这些更新主要用于提升 IDE 整体的质量和性能。
Kotlin Android 实时模板
实时模板 (Live Template) 是 IntelliJ 中一个很方便的功能: 您只需输入简单的关键词即可将常见的构造插入自己的代码中。Android Studio 现在为您的 Kotlin 代码提供了 Android 专用的实时模板。例如,您现在只需输入 toast 并按下 Tab 键即可快速插入一个 Toast 消息框。如需查看可用实时模板的完整列表,请打开 Settings (或 Preferences) 对话框,并依次选择 Editor > Live Templates。
为 C++ 提供 Clangd 支持
对使用 C++ 语言的开发者,我们现在改用 clangd 作为主要的语言分析引擎,用于代码导航、补全、检查、以及显示代码错误和警告。我们现在还将 clang-tidy 绑定在 Android Studio 中。想要配置 clangd 或 Clang-Tidy 的行为逻辑,请打开 IDE 的 Settings (或 Preferences) 对话框,并依次选择 Languages & Frameworks > C/C++ > Clangd (或 Clang-Tidy),然后设置相应的选项。
构建
–
Android Gradle 插件 4.0.0 通过使用 Java 8 API (无需考虑您应用的最低 API 级别) 为 Android Studio 带来了 Build Analyzer 功能,并支持在动态功能模块之间创造功能对功能的依赖性。完整的更新列表请查看 Android Gradle 插件 4.0.0 版本说明。
Build Analyzer
Android 开发者会使用多种 Gradle 插件以及自定义构建逻辑来为自己的应用定制构建系统。然而,过时或错误配置的任务会延长构建时间,从而拖累开发效率,并导致开发人员心情沮丧、效率下降。Build Analyzer 可以帮助开发者找到构建中的瓶颈,那些显著拖累构建时间的插件和任务会被高亮显示,并同时给出缓解速度回退的操作建议。前往开发者官网了解更多。
Java 8 语言库在 D8 和 R8 中的字节码转换 (desugaring)
上一个版本的 Android Gradle 插件通过字节码转换操作,在所有 API 等级中支持了大量 Java 8 的语言功能,比如 lambda 表达式和方法引用。在 Android Studio 4.0 中字节码转换引擎得到了扩展,现在不管您应用的 minSdkVersion 是多少,都可以使用 Java 8 API (比如 java.util.stream、java.util.function 和 java.time)。前往开发者官网了解更多。
功能模块层级的依赖关系
在使用 Android Gradle 插件 4.0.0 及以上版本时,您可以指定一个动态功能模块依赖于另一个功能模块。这种依赖关系使得您的应用可以获得所需的模块来解锁更丰富的功能,从而减少下载需求,也使得应用更易于模块化。比如,一个 :video 功能可以依赖 :camera 功能。如果用户需要使用录制视频的功能,您的应用会在请求 :video 时自动下载所需的 :camera 模块。前往开发者官网了解更多。
新的构建功能开关选项
Android Gradle 插件内置了对现代代码库 (如数据绑定和视图绑定) 和构建功能 (如自动生成 BuildConfig 类) 的支持。但您可能不是每个项目都需要用到这些库和功能。在插件的 4.0.0 版本中,您可以单独关闭某个构建选项 (如下所示),从而优化大型项目的构建性能。关于 DSL 和您可以操作的完整功能列表,请参阅版本说明。
android {
// The default value for each feature is shown below.
// You can change the value to override the default behavior.
buildFeatures {
// Determines whether to support View Binding.
// Note that the viewBinding.enabled property is now deprecated.
viewBinding = false
// Determines whether to support Data Binding.
// Note that the dataBinding.enabled property is now deprecated.
dataBinding = false
…
}
}
△ 用于启用/禁用构建功能的 Android Gradle 插件 DSL
对 Kotlin DSL 脚本文件的基础支持
Android Studio 4.0 现在已经内置了对 Kotlin DSL 构建脚本文件 (*.kts) 的支持,这意味着 Kotlin 构建脚本有了完整的快速修复功能,并且能在 Project Structure 窗口中进行操作。虽然我们对使用 Kotlin 来配置构建有很高的期待,但接下来的一年中我们依然会继续完善 Android Gradle 插件的 DSL API,这可能会给 Kotlin 脚本用户带来 API 的重大变更 (breaking change)。从长远来看,这些改善终将使得 DSL 对 Kotlin 脚本用户来说更简单易用。
依赖元数据
在使用 Android Gradle 插件 4.0.0 及以上版本构建应用时,插件中会包含描述编译到您的应用中的库依赖关系的元数据。在上传应用时,Play Console 会检查这些元数据,并告知您哪些 SDK 以及应用中的依赖存在问题,在某些时候还会给出如何解决的反馈。
这些数据会被压缩,通过 Google Play 的签名密钥进行加密,并存储在发布的应用的签名模块中。如果您不愿意分享这些信息,可以在模块的 build.gradle 文件中加入以下内容:
android {
dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
}
△ 禁用 APK 或 App Bundle 中的依赖元数据
现在让我们回顾一下 Android Studio 4.0 带来的改进以及新功能:
设计:
-
Motion Editor: 轻松创建、编辑和预览 MotionLayout 动画
-
Layout Inspector 全新升级: 更加直观的实时调试体验
-
Layout Validation: 在多个屏幕上同时对比 UI
开发与分析:
-
CPU Profiler 更新: UI 更直观、更易于浏览,数据更易解读
-
R8 规则更新: 编写代码缩减规则的智能编辑器功能,如语法高亮、补全和错误检查
-
IntelliJ IDEA 2019.3 平台更新: 性能和质量得到提升
-
实时模板更新: 为 Kotlin 提供 Android 专用实时模板
-
Clangd 支持: 默认启用 Clangd 和 Clang-Tidy
构建:
-
Build Analyzer: 了解和找到构建时的性能瓶颈
-
Java 8 语言支持更新: Java 8 API 现在均可使用,与应用最低 API 等级无关
-
功能对功能的依赖性: 定义两个动态功能模块之间的依赖
-
buildFeatures DSL: 逐个启用/禁用构建功能,如数据绑定
-
Kotlin DSL: 对 Kotlin DSL 脚本文件的基础支持
请参阅版本说明,了解本次发布的完整信息。
即刻开始使用
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
最后
代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。
所以,长征路还长,大家还是好好地做个务实的程序员吧。
最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。**
所以,长征路还长,大家还是好好地做个务实的程序员吧。
最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!