Android Studio 3.0 新功能全面解析和旧项目适配问题
作者:亦枫Blog 发布时间:2022-09-16 23:53:57
简介:
Android Studio是Android的官方IDE。它是专为Android而打造,可以加快您的开发速度,帮助您为每款Android设备构建最优应用。
它提供专为Android开发者量身定制的工具,其中包括丰富的代码编辑、调试、测试和性能分析工具。
上周四,Google 终于在经历大半年的打磨锤炼之后正式发布 Android Studio 3.0 版本,给广大安卓开发人员一份满意的答卷。如往常一样,每次新版开发工具的发布,很多谨慎点的朋友仍担心稳定性、是否存在坑等问题,选择隔岸观火,等一段时间再更新升级。
经过查看官网对新版开发工具的新功能介绍之后,当天我就选择了升级。事实上,我也的确折腾良久,但是截至目前,没有发现所谓的坑。只是需要对旧的工程做一些配置上的调整而已。各方面响应速度和新功能的使用,总体还是觉得值得升级。这篇文章,就来介绍新版开发工具给我们带来哪些实用的改变,并以实际操作经验告诉大家,旧工程的配置需要如何做兼容修改。
3.0 带来的改变
Kotlin Support
在 Android Studio 3.0 之前,使用 Kotlin 语言开发安卓应用,需要额外配置 Kotlin 插件。而新版本内置默认支持 Kotlin 语言,来减少我们在配置上的工作。
选择工具栏 Code -> Convert Java File To Kotlin File,或者使用快捷键的形式,你可以一键实现 Java 文件到 Kotlin 文件的转换。
备注:关于快捷键的使用,你可以使用 Command + Shift + A 这组快捷键打开 Find Action 窗口,输入关键字寻找对应功能及其快捷键,效果就像上面 Gif 图展示的这样。
Java 8 Support
3.0 对 Java 8 语言特性的默认支持使你不用在 build.gradle 配置文件中添加 jackOptions 一项。如果你有使用到的话,记得删除:
android {
...
defaultConfig {
...
// Remove this block.
jackOptions {
enabled true
...
}
}
}
选择工具栏 File ——》Project Structure,修改 Source Compatibility 和 Target Compatibility 选项到 1.8 即可使我们的项目支持 Java 8 语言特性。
Android Profiler
过去我们使用的 Android Monitor 工具从 3.0 版本开始被 Android Profiler 替代掉了。如图,run 按钮一栏多了一个 Android Profiler 按钮:
Android Profiler 提供有 CPU、Memory 和 Network 三大调试分析利器,实时跟踪 Apk 的运行状态,可以帮助我们可视化地做一些性能调优工作。
这三个工具在开发阶段非常实用,比如 CPU Profiler 能够分析应用中的线程使用情况,Memory Profiler 能够检测出内存泄漏,Network Profiler 能够拦截网络请求实现抓包功能等。这里列举一些使用图片,简单预览一下这三大工具的风采:
有关这几个工具的详细使用细节,可以参考官方的介绍:
CPU Profiler guide
Memory Profiler guide
Network Profiler guide
Device File Explorer
这个功能厉害了。新版开发工具带来的资源管理器允许我们访问连接设备的文件系统,实现 PC 端到手机或模拟器端的便捷文件传输。有了这个工具,从此就可以告别之前使用的「文件传输助手」等第三方工具啦。
Adaptive Icons wizard
选择 File -> New -> Image Asset,利用 Android Studio 提供的工具创建图片资源一直以来也是开发利器之一。现在,这个工具开始支持 vector drawables 格式,并且能够创建用于适配 Android 8.0 系统上各种形状的桌面图标。
URL intent-filter validator
这个功能也蛮贴心的。Manifest 清单文件开始支持一个特殊的标签,用于测试给定的 Url 字符串是否符合 intent-filter 标签内容所定义的规则。举个例子:
如图,这里使用 data 标签定义一个 Url 规则,并使用 tools:validation 标签验证一个错误的测试 Url 地址,检测器能够自动识别并给出错误提示。这个例子很简单,肉眼一眼就能看出错误。那如果是比较复杂的规则呢,可能就不那么容易看得出来。这个时候,这个工具就可以派上用场啦。
APK Analyzer
3.0 版本对 APK Analyzer 的功能做了进一步强化。主要在于:对于使用 ProGuard 混淆过的 APK 文件,我们能够上传 mapping.txt 文件进行代码还原;Dex 文件提供显示各个包目录的大小;等等。
其他功能
除了上面介绍的这些变化,还有一些其他大大小小的变更。比如 Layout Inspector 和 Layout Editor 工具在 UI 上有所调整,比如 App Links Assistant 和 Firebase App Indexing Assistant 的强化使用,这些留着大家自己去探索发现吧。也可以访问 Android Studio Release Notes 官网,了解 3.0 版本的更多发布细节。
旧项目的适配
Android Studio 3.0 发布的同时,Android Plugin for Gradle 3.0.0 也同时发布。编译速度整体都得到了大幅提升。升级完 Android Studio 之后,旧的工程需要做出部分改变,才能通过 Gradle 的编译。这里根据我的一个实际项目,介绍一下需要改变的内容。当然,也许你的项目用不上这些,也可能不止这些。
distributionUrl
Plugin 3.0.0+ 需要配置 Gradle 的最小版本是 4.1,我们可以通过 File -> Project Structure -> Project 的方式设置 Android Plugin 的版本,或者修改 gradle.properties 文件的内容,添加 distributionUrl 属性:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
Google's Maven repository
新版 Android Studio 工具默认使用 Google's Maven Repository 用于下载依赖 Android Support Library,替代了 Android SDK Manager 的本地依赖方式。所以,需要在工程根目录下的 build.gradle 文件中添加 google() 一行代码:
allprojects {
repositories {
google()
}
}
buildToolsVersion
Android Plugin For Gradle 3.0.0 默认自动添加插件所需要用到的最小版本的编译工具。所以,我们不需要再手动在 build.gradle 添加一行 buildToolsVersion 属性的代码。对于旧的项目,可以去掉这行配置,比如:
android {
compileSdkVersion 26
// remote buildToolsVersion
buildToolsVersion "25.0.2"
...
}
flavor dimensions
Plugin 3.0.0 开始,如果 build.gradle 自定义有 productFlavors
配置的话,需要添加定义 flavorDimensions
(风味维度)。否则,编译报错:
rror:All flavors must now belong to a named flavor dimension.
The flavor 'flavor_name' is not assigned to a flavor dimension.
flavorDimensions
的出现使得构建变种类型更加多样化:
可构建的变种数量 = 风味维度的数量 * 构建类型的数量
详细使用可参考 配置构建变体。对于旧项目,简单的话,可以随意定义一个风味维度,保证编译通过,如(这里的“minApi”可自由定义):
flavorDimensions "minApi"
productFlavors {
beta {
dimension "minApi"
...
}
production {
dimension "minApi"
...
}
}
each() 和 outputFile()
Plugin 3.0.0 版本移除了一些用于编译配置的 API,其中比较常见的就是 each() 和 outputFile(),两个常用于修改输出
Apk 文件名和路径的方法。
在之前的文章 Android Gradle 常用使用场景实现方式的总结 中有提到,自定义输出 APK 文件名可以这样做:
android {
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, rootProject.getName()
+ "-" + buildType.name
+ "-" + releaseTime()
+ "-v" + defaultConfig.versionName
+ "-" + defaultConfig.versionCode
+ ".apk");
}
}
}
但是使用 Plugin 3.0.0 时就会出现编译报错,我们需要修改 each() 和 outputFile() 方法为 all() 和 outputFileName,比如:
android {
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = rootProject.getName()
+ "-" + buildType.name
+ "-" + releaseTime()
+ "-v" + defaultConfig.versionName
+ "-" + defaultConfig.versionCode
+ ".apk";
}
}
}
对于旧的工程,基本上便是这些配置上的适配修改。如果你还遇到了别的问题,别紧张,按照编译错误提示一步步操作,也能成功通过编译。总体来说,这次 Android Studio 3.0 和 Plugin For Gradle 3.0.0 的发布还是非常值得升级尝试的,并没有网上说的那么多坑。何况,我们作为写代码的程序员,本来不就是为了解决问题而来嘛。
总结
以上所述是小编给大家介绍的Android Studio 3.0 新功能全面解析和旧项目适配问题网站的支持!
来源:http://blog.csdn.net/growing_tree/article/details/78418916


猜你喜欢
- SpringBoot 如何进行参数校验在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数做校验,例如登录的时候需要校验
- 最近看代码,由于代码的调用层级深度比较多,层层深入到某处时,已经忘记了身处何处,虽然自己可以使用一些画图工具来时序图,但是,这种情况下,自己
- 理论基础so的加载是一种解析式装载,这与dex有一定区别,dex是先加载进行优化验证生成odex,再去解析odex文件,而so更像边解析边装
- 1 修饰类和方法package site.exciter.springmvc.handlers;import org.springframe
- 本文实例讲述了C#警惕匿名方法造成的变量共享。分享给大家供大家参考,具体如下:匿名方法匿名方法是.NET 2.0中引入的高级特性,“匿名”二
- 本文实例讲述了Java获取时间年、月、日的方法。分享给大家供大家参考。具体实现方法如下:package com.date.demo; imp
- 基于JavaFX开发桌面程序注:我也是JAVA FX的初学者之一,自己在学习的时候踩了许多的坑,中文英文的资料查了不少,但是觉得FX技术和其
- 一、循环语句的几种语法语法:for循环格式:for(初始化语句;条件判断;递进语句){循环体;}while循环格式:初始化语句;while(
- C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际
- 前言老规矩,还是从最简单粗暴的开始。那么多简单算简单?多粗暴算粗暴?我告诉你可以不写一句代码,你信吗?直接把一个文件往IIS服务器上一扔,就
- 一:需求当小数位很多的时候,小数位后面可能有一些多余的0并没有任何实际意义。所以在某些业务需求下可以去掉这些多余的0。例如:0.2000可以
- 动态数据源在很多具体应用场景的时候,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库。又比如
- 同时使用and和or的查询UserServiceImpl 类,service实现类import org.springframework.be
- 在本文中,对比了常见的几种反射的方法,介绍了它们分别应该如何使用,每种的简易度和灵活度,然后做了基准测试,一起看看这之间的性能差距。按照使用
- 简介:在团队协作开发的过程中,好的代码管理能更加有效的使日常开发的过程中对各个开发人员提高开发速度。下面将详细介绍在IDEA中使用git提交
- filter自定义过滤器 增加了 对验证码的校验package com.youxiong.filter;import com.y
- 安装 Tomcat 之前请一定先安装 Java ,然后才能安装 Tomcat 。安装 Java 、环境变量 path 的设置以及 cmd 小
- 本文讲解了如果通过springboot快速开发web服务,并读取zookeeper的过程,为后续的“在docker下部署
- 安卓中为activity创建菜单,供大家参考,具体内容如下1.在res上面右键 > new > Android xml file
- 一、AtomicReference 基本使用我们这里再聊起老生常谈的账户问题,通过个人银行账户问题,来逐渐引入 AtomicReferenc