欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android Studio 3.0 新功能全面解析和旧项目适配问题

程序员文章站 2023-11-12 08:50:16
简介: android studio是android的官方ide。它是专为android而打造,可以加快您的开发速度,帮助您为每款android设备构建最优应用。...

简介:

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 文件的转换。

Android Studio 3.0 新功能全面解析和旧项目适配问题

备注:关于快捷键的使用,你可以使用 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 Studio 3.0 新功能全面解析和旧项目适配问题

android profiler

过去我们使用的 android monitor 工具从 3.0 版本开始被 android profiler 替代掉了。如图,run 按钮一栏多了一个 android profiler 按钮:

Android Studio 3.0 新功能全面解析和旧项目适配问题

android profiler 提供有 cpu、memory 和 network 三大调试分析利器,实时跟踪 apk 的运行状态,可以帮助我们可视化地做一些性能调优工作。

这三个工具在开发阶段非常实用,比如 cpu profiler 能够分析应用中的线程使用情况,memory profiler 能够检测出内存泄漏,network profiler 能够拦截网络请求实现抓包功能等。这里列举一些使用图片,简单预览一下这三大工具的风采:

Android Studio 3.0 新功能全面解析和旧项目适配问题

Android Studio 3.0 新功能全面解析和旧项目适配问题

Android Studio 3.0 新功能全面解析和旧项目适配问题

有关这几个工具的详细使用细节,可以参考官方的介绍:

device file explorer

这个功能厉害了。新版开发工具带来的资源管理器允许我们访问连接设备的文件系统,实现 pc 端到手机或模拟器端的便捷文件传输。有了这个工具,从此就可以告别之前使用的「文件传输助手」等第三方工具啦。

Android Studio 3.0 新功能全面解析和旧项目适配问题

adaptive icons wizard

选择 file -> new -> image asset,利用 android studio 提供的工具创建图片资源一直以来也是开发利器之一。现在,这个工具开始支持 格式,并且能够创建用于适配 android 8.0 系统上各种形状的桌面图标。

Android Studio 3.0 新功能全面解析和旧项目适配问题

url intent-filter validator

这个功能也蛮贴心的。manifest 清单文件开始支持一个特殊的标签,用于测试给定的 url 字符串是否符合 intent-filter 标签内容所定义的规则。举个例子:

Android Studio 3.0 新功能全面解析和旧项目适配问题

如图,这里使用 data 标签定义一个 url 规则,并使用 tools:validation 标签验证一个错误的测试 url 地址,检测器能够自动识别并给出错误提示。这个例子很简单,肉眼一眼就能看出错误。那如果是比较复杂的规则呢,可能就不那么容易看得出来。这个时候,这个工具就可以派上用场啦。

apk analyzer

3.0 版本对 apk analyzer 的功能做了进一步强化。主要在于:对于使用 proguard 混淆过的 apk 文件,我们能够上传 mapping.txt 文件进行代码还原;dex 文件提供显示各个包目录的大小;等等。

Android Studio 3.0 新功能全面解析和旧项目适配问题

其他功能

除了上面介绍的这些变化,还有一些其他大大小小的变更。比如 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 新功能全面解析和旧项目适配问题,希望对大家有所帮助