Android Studio 4(1),android 面试必看书籍
当 Android Studio 分析构建时,它将计算确定构建持续时间的一组任务,并提供可视化帮助你了解每个任务的影响,你还可以通过展开 Warnings 节点来获取有关警告的详细信息。
检查确定构建持续时间的任务。
2、Java 8 库在 D8 和 R8 中逐渐消失
Android Studio 现在支持使用多种 Java 8 语 言 API,而无需给应用程序设置最低 API 级别。
通过一个称为 desugaring 的过程,Android Studio 3.0 及更高版本中的 DEX 编译器 D8 已经为 Java 8 语言功能(例如 lambda 表达式,默认接口方法,尝试资源等)提供了实质性支持。
在 Android Studio 4.0 中,已将 desugaring engine 扩展为能够对 Java 语言 API 的语法糖。这意味着你现在可以在 java.util.streams
支持较旧版本的 Android 的应用程序中,包含仅在最新的 Android 版本中可用的标准语言 API 。
此版本支持以下一组 API:
Sequential streams (
java.util.stream1
)A subset of
java.time
java.util.function
Recent additions to
java.util.{Map,Collection,Comparator}
Optionals(
java.util.Optional
,java.util.OptionalInt
and some other new classes useful with the above APIsSome additions to
java.util.concurrent.atomic
(new methods onAtomicInteger
,AtomicLong
and AtomicReference)ConcurrentHashMap
(with bug fixes for Android 5.0)
为了支持这些语言 API,D8 会编译一个单独的库 DEX 文件,该文件包含了一些本身缺少 API 的实现,并将其包含在您的应用程序中,而 desugaring 的过程 将重写您的应用程序代码,以在运行时使用此库。
要启用对这些语言 API 的支持,请在模块 build.gradle 文件中包括以下内容:
android {defaultConfig {// Required when setting minSdkVersion to 20 or lowermultiDexEnabled true}
compileOptions {// Flag to enable support for the new language APIscoreLibraryDesugaringEnabled true// Sets Java compatibility to Java 8sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}}
dependencies {coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4'}
3、功能上的依存关系
在早期版本的 Android Gradle 插件中,所有动态功能模块都只能依赖于应用程序的基本模块。
现在,当使用 Android Gradle 插件 4.0.0 及更高版本时,可以包括一个依赖于另一个功能模块的功能模块,即 :video
功能可以取决于:camera
功能,而功能取决于基础模块,结果如下图所示。
动态功能
:video
取决于:camera
的功能,后者取决于基本:app
模块。
这意味着,当应用程序请求下载动态功能模块时,该应用程序还会下载其依赖的其他功能模块,在之后创建动态功能模块,你可以在模块声明一个功能上特征依赖 build.gradle
文件,例如 :video
模块声明对 :camera
以下项的依赖关系:
// In the build.gradle file of the ':video' module.dependencies {// All dynamic feature modules must declare a dependency// on the base module.implementation project(':app')// Declares that this module also depends on the 'camera'// dynamic feature module.implementation project(':camera')...}
此外,你可以通过在菜单栏中单击 Help > Edit Custom VM Options 并启用以下功能,在 Android Studio 中启用 feature-on-feature dependency 功能(例如,在编辑 Run configuration 时支持该功能):
-Drundebug.feature.on.feature=true
4、依赖元数据
使用 Android Gradle 插件 4.0.0 及更高版本构建应用时,该插件包含描述已编译到应用中的依赖项的元数据,uploading 应用程序时,Play 控制台会检查此元数据提供以下好处:
获取有关你的应用使用的 SDK 和依赖项的已知问题的警报
收到可行的反馈来解决这些问题
数据经过压缩,通过 Google Play 签名密钥加密,并存储在发布应用的签名栏中,你也可以自己在以下目录中的本地中间构建文件中检查元数据:<project>/<module>/build/outputs/sdk-dependencies/release/sdkDependency.txt。
如果不想共享此信息,可以通过在模块 build.gradle
文件中添加以下内容来退出:
android {dependenciesInfo {// Disables dependency metadata when building APKs.includeInApk = false// Disables dependency metadata when building Android App Bundles.includeInBundle = false}}
二、支持 Kotlin DSL 脚本文件
Android Gradle 插件现在支持 Kotlin DSL 构建脚本文件(*.kts
),配合 Android Studio 结合使用时,某些 IDE 功能(例如 Project Structure
对话框和构建脚本快速修复程序)现在还支持读写 Kotlin 构建脚本文件。
三、 CPU Profiler 升级
根据用户的反馈,谷歌将集中精力通过两种重要方式来改善 CPU Profiler 中的用户体验。
首先,与以前的 Android Studio 版本相比,CPU Profiler 中 CPU 记录的错误率已大大降低。
其次,对 CPU Profiler UI 进行了全面改进,以提供更直观的工作流程,其中 UI 的一些显着更改包括:
CPU 记录与主探查器时间轴分
开了以便于分析,记录的数据在 Profiler 窗口的左侧按组分布。用户可以通过单击探查器中的选项图标
在窗口右上角的选项图标图标或通过拖放组中的单个项目来上下移动组以重新组织列表 。
为了更轻松地进行并排分析,用户现在可以在线程活动时间轴中查看所有线程活动(包括方法,函数和事件)。有几种方法可以浏览时间轴:
要关注特定的时间点,请在 CPU 使用率图表的左上方拖动一个范围。
要放大或缩小,请在按住 Control(或 MacOS 上的 Command)的同时使用鼠标滚轮;要向左或向右平移,请在按住空格键的同时拖动。
或者使用 W 和 A 键进行精细的放大和缩小,使用 S 和 D 键进行左右的精细平移。
Flame Chart,Top Down 和 Bottom Up 分析的选项卡现在位于右侧列中,在 Threads 组中,对于系统跟踪记录线程会自动展开,对于其他记录类型默认情况下会折叠起,在线程名称上双击(或按 Enter)以展开或折叠它们。
如屏幕截图所示,系统跟踪 UI 还包括以下改进:
现在事件采用了独特的颜色,以便于区分。
线程按它们中的跟踪事件数进行排序,以便 “busier” 的线程在列表中排名更高。
可以选择一个或多个线程以仅在那些选定的线程的右列中查看分析。
同样,可以在任何线程中选择一个跟踪事件以查看其分析数据。
四、设计工具
此版本的 Android Studio 包括对设计工具的更新,例如 Layout Inspector (布局检查器)和全新的 Motion Editor 。
1、新动作编辑器
Android Studio 现在包括用于 [MotionLayout](
) 布局类型的可视设计编辑器,使创建和预览动画更加容易。
动作编辑器提供了一个简单的界面,用于处理 MotionLayout
库中的元素,这些元素是 Android 应用中动画的基础。
在以前的版本中,创建和更改这些元素需要手动编辑 XML 资源文件中的约束。现在,运动编辑器可以为您生成此 XML,并支持开始和结束状态,关键帧,过渡和时间轴。
要了解有关如何使用运动编辑器的更多信息,请参见[用户指南](
)。
??注意:在使用 Motion 编辑器之前,请确保将文件中的 ConstraintLayout 依赖项设置 build.gradle 为 version 2.0.0-beta3 或更高版本。
评论