美文网首页
Android Studio 3.0.0更新和踩坑

Android Studio 3.0.0更新和踩坑

作者: 田间小鹿 | 来源:发表于2017-11-15 10:24 被阅读0次

    2017年10月份Android Studio 3.0.0发布了最新版本,让我们看下他有那些新的功能。升级到此版本后踩的坑。

    1.支持的语言

    1.1.Java 8语言功能支持

    现在可以使用某些Java 8语言功能并使用Java 8构建的库。不再需要 Jack。应该首先 禁用Jack 以使用内置的支持Java 8的默认工具链。

    要更新项目以支持新的Java 8语言工具链,请将 Project Structure对话框中的 Source Compatibility 和 Target Compatibility 更新为1.8 (单击 File > Project Structure)。


    java8

    1.2 Kotlin支持

    如Google I / O 2017所宣布,Kotlin编程语言现已在Android上正式受到支持。所以在这个版本中,Android Studio包含Kotlin语言支持Android开发。

    通过将Java文件转换为Kotlin(点击 Code > Convert Java File to Kotlin File),或者使用新建项目向导创建一个新的启用Kotlin的项目,可以将Kotlin整合到项目中。


    kotlin

    2.自动化构建工具

    使用Gradle 3.0.0的Android插件

    Gradle的新Android插件 包括各种改进和新功能,但它主要提高了具有大量模块的项目的构建性能(估计对组件化项目比较友好)。当使用这个新插件用于大型项目时,您应该体验以下内容:

    1. 由于使用了新的延迟依赖性解决方案,使得 Gradle 拥有更快的构建配置时间;
    2. 只针对您正在构建的项目和变体 进行 Variant-aware 依赖解析;
    3. 对代码或资源应用简单的更改时,会拥有更快的增量构建时间;
    4. 注意:这些改进需要重大的改进,从而破坏了插件的一些行为、DSL和API。升级到 3.0.0 版本可能需要更 改您的构建文件和Gradle插件。

    3.分析工具

    新的Android Profiler 取代了Android监视器工具,并提供了一套新的工具来实时测量应用程序的CPU,内存和网络使用情况。您可以执行基于样本的方法跟踪来执行代码,捕获堆内存,查看内存分配以及检查网络传输文件的详细信息。

    要打开,请单击 View > Tool Windows > Android Profile (或单击工具栏中的 Android Profiler )。

    窗口顶部的事件时间轴显示触摸事件,按键和活动更改,因此您有更多的上下文可以了解时间轴中的其他性能事件。


    分析工具

    3.1 CPU Profiler

    CPU Profiler可帮助您通过触发示例或仪表化的CPU跟踪,来分析应用程序的CPU线程使用情况。然后,您可以使用各种数据视图和过滤器来解决CPU性能问题。

    CPU profiler

    3.2 Memory Profiler

    Memory Profiler 可以帮助您 识别 内存泄漏和内存流失 导致的卡顿、冻结甚至应用程序崩溃。它显示了应用程序内存使用的实时图形,可以捕获 a heap dump,强制垃圾收集和跟踪内存分配。


    Memory Profiler

    3.3 Network Profiler

    网络分析器允许您监视应用程序的网络活动,检查每个网络请求的有效负载,并链接到生成网络请求的代码。

    Network Profiler

    3.4 APK剖析和调试工具

    Android Studio现在允许您对任何 APK 进行配置和调试,而无需将其从Android Studio项目中构建 - 只要构建APK 即可启用调试,并且您可以访问调试符号和源文件。

    要开始使用,请从Android Studio Welcome屏幕中单击 Profile or debug APK。或者,如果您已经打开了项目,请从菜单栏中单击 File > Profile or debug APK。这将显示已解压缩的APK文件,但它不会反编译代码。因此,要正确添加断点和查看堆栈跟踪,您需要附加Java源文件和本机调试符号。

    APK分析 APK包分析

    3.5 设备文件浏览器

    新的设备文件资源管理器允许您检查连接的设备的文件系统,并在设备和计算机之间传输文件。这将替代DDMS中可用的文件系统工具。

    要打开,请单击 View > Tool Windows > Device File Explorer。

    设备文件

    4.资源方面

    4.1 自适应图标向导

    Image Asset Studio现在支持绘制矢量图,并允许您为Android 8.0创建自适应启动器图标,同时为旧设备创建传统图标(“旧”图标)。

    要开始,请右键单击项目中的res文件夹,然后单击 New > Image Asset。在 Asset Studio 窗口中,选择启动器图标(自适应和旧版)作为图标类型。

    注意:您必须设置compileSdkVersion为26或更高才能使用自适应启动器图标。

    自适应图标

    4.2 支持字体资源

    为了支持Android 8.0中的新字体资源,Android Studio包含一个字体资源选择器,用于将 字体 绑定 到应用程序中或配置项目以下载设备上的字体(如果可用)。布局编辑器还可以预览布局中的字体。

    要尝试下载字体,请确保您的设备或模拟器正在运行Google Play Services v11.2.63或更高版本

    支持字体资源

    4.3布局编辑器

    在布局编辑器已经更新了一些增强功能,包括以下内容:

    • 新的工具栏布局和图标。
    • 在组件树中更新布局。
    • 改进的拖拽 视图插入。
    • 在编辑器下面显示新的错误面板,显示修复建议的所有问题(如果可用)。
    • 使用 ConstraintLayout 构建的各种UI增强功能 ,包括以下内容:
    1. 新支持 创建 分界线(栅栏)。
    2. 新支持创建组:在工具栏中,选择 Guidelines > Add Group (需要ConstraintLayout 1.1.0 beta 2 或更高版本)
    3. 创建链接的新UI:选择多个视图,然后右键单击并选择 Chain。


      布局编辑器

    4.4布局检查器

    该布局检查包括增强您的应用布局,以使其更容易调试问题,包括分组属性分为普通类和两个新的搜索功能,查看 View Tree 和 Properties 窗格。


    image

    5.更新到android studio3.0.0坑

    5.1 annotationProcessor

    Warning:android-apt plugin is incompatible with future version of Android Gradle plugin. Please use ‘annotationProcessor' configuration instead.

    把apt改成annotationProcessor

    //apt ‘com.jakewharton:butterknife-compiler:8.5.1'
    annotationProcessor ‘com.jakewharton:butterknife-compiler:8.5.1'

    5.2 AAPT2

    Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    Error:Execution failed for task ':app:processDebugResources'.

    原因:现在使用的是APPT2为默认

    关掉AAPT2即可,在Project/gradle.properties中添加 android.enableAapt2=false

    5.3 gradle打包,自定义apk名称代码报错(Cannot set the value of read-only property 'outputFile' )

    解决方案:修改文件名代码请这样写

    android.applicationVariants.all {variant ->
            variant.outputs.all {           
                   outputFileName = "xinlebao_${defaultConfig.versionName}_${releaseTime()}.apk"        
            }         
    }
    

    5.4 .gradle文件

    gradle

    们可以看到,谷歌buildToolsVersion构建工具的版本给“干掉了”,在以前的版本中,buildToolsVersion也会给项目的构建带来很多错,现在谷歌爸把它给“干掉了”;还有就是下面的依赖换成了implementation,那么它和compile有什么区别呢?

    compile和api

    api完全等同于compile,二者没有区别。我们大家都知道,随着Android版本的更新,有很多过时的类和方法,compile亦是如此,我们可以把compile理解成api的过去式。

    api和implementation

    这两个是AS3.0版本中新增的指令,下面用一张图来说明一啊两者的区别:


    image

    5.5 多渠道打包

    多渠道

    根据官网说法:

    You must assign each product flavor you configure to one of the flavor dimensions.

    你必须指定一种 flavor dimensions
    void flavorDimensions(String... dimensions)

    修改如下:

    flavorDimensions "default"
    productFlavors {
    xiaomi {dimension "default"}
    }

    productFlavors.all {
    flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }

    定义一个 flavorDimensions 然后在每个渠道中加入dimension

    相关文章

      网友评论

          本文标题:Android Studio 3.0.0更新和踩坑

          本文链接:https://www.haomeiwen.com/subject/dblcvxtx.html