升级到Android Studio3.x遇到的问题及解决方案
转 https://www.2cto.com/kf/201711/695736.html

升级到Android Studio3.0遇到的问题及解决方案,前些天,google正式发布了Android Studio3.0。看这个版本号,这次是个大更新。升级后发现编译确实有很大的提升,还有最新的错误调试工具,总之,这次的更新google还是很有诚意的。

下载

Andriod Studio3.0下载

遇到的问题

1.flavorDimensions

错误日志

1
Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

原因:gradle3.0需要使用flavorDimensions做多版本打包,修改如下:

1
2
3
4
5
6
7
android {
    //...
    defaultConfig {
        //...
        flavorDimensions "dimen"
    }
}

然后在productFlavors中做相应的修改

1
2
3
4
productFlavors {
    productA { dimension "dimen" }
    productB { dimension "dimen" }
}

配置多个flavorDimensions

1
2
3
4
5
6
7
8
9
10
11
12
android {
    //...
    defaultConfig {
        //...
        flavorDimensions "dimenA","dimenB"
    }
}
productFlavors {
    productA { dimension "dimenA" }
    productB { dimension "dimenB" }
    productC { dimension "dimenA" }
}

2.apk命名

错误日志

1
Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=busDebug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl. Open File

之前的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName = "XXX-${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime()}-${productFlavors.name[0]}"
                if (variant.buildType.name == 'release') {
                    fileName += '.apk'
                } else if (variant.buildType.name == 'debug') {
                    fileName += '_debug.apk'
                } else {
                    fileName += '_other.apk'
                }
                output.outputFile = new File(outputFile.parent, fileName)
            }
        }
    }

gradle3.0 each替换为all,output.outputFile替换为outputFileName,不需要new File了,修改后的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
applicationVariants.all { variant ->
        variant.outputs.all {
            def fileName = "XXX-${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime()}-${productFlavors.name[0]}"
            if (variant.buildType.name == 'release') {
                fileName += '.apk'
            } else if (variant.buildType.name == 'debug') {
                fileName += '_debug.apk'
            } else {
                fileName += '_other.apk'
            }
            outputFileName = fileName
        }
    }

需要注意的是,使用Build->Generate Signed APK…的时候,生成的apk包会放在一个以渠道名命名的文件夹下


3.Annotation processors must be explicitly declared now.Please add them to the annotationProcessor configuration.

错误日志

1
2
3
4
5
Error:Execution failed for task ':app:javaPreCompilePreProductDebug'.
> Annotation processors must be explicitly declared now.  The following dependencies on the compile classpath are found to contain annotation processor.  Please add them to the annotationProcessor configuration.
    - butterknife-7.0.1.jar (butterknife-7.0.1.jar)
  Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior.  Note that this option is deprecated and will be removed in the future.
  See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.

修复方案

1
2
3
4
5
6
7
8
9
10
11
android {
    //...
    defaultConfig {
        //...
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath true
            }
        }
    }
}

4.Aapt2Exception

错误日志

1
2
3
4
5
6
7
8
Error:(113, 5) error: style attribute '@android:attr/windowEnterAnimation' not found.
Error:(113, 5) error: style attribute '@android:attr/windowExitAnimation' not found.
...
Error:java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task ':app:processPreProductDebugResources'.
> Failed to execute aapt

解决方案 在gradle.properties中添加如下代码,禁用aapt2编译

1
android.enableAapt2=false

5.其他

新版本gradle不需要配置buildToolsVersion
dependencies 引入包的时候是这样的

1
2
3
4
5
6
7
8
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation ...
    implementation project ...
    implementation files ...
    implementation ...
    testImplementation 'junit:junit:4.12'
}

 

升级到Android Studio3.x遇到的问题及解决方案的更多相关文章

  1. 【Android Studio安装部署系列】三十、从Android studio2.2.2升级到Android studio3.0之路

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Android Studio 3.0的新功能 https://mp.weixin.qq.com/s/2XmVG4mKEDX6-bvZ ...

  2. 【Android Studio安装部署系列】三十五、从Android studio3.0.1升级到Android studio3.1.4【以及创建android p模拟器的尝试(未成功)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 因为想要使用Android P模拟器,所以需要将Android Studio升级到3.1版本以上. Android P模拟器的最低版 ...

  3. 【Android Studio安装部署系列】三十六、从Android Studio3.1.4升级到Android studio3.2【以及创建android p模拟器(未成功)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 因为想要使用Android P模拟器,所以需要将Android Studio升级到3.2版本以上. 按照官网的说法:参考<ht ...

  4. 【Android Studio安装部署系列】三十七、从Android Studio3.2升级到Android Studio3.4【以及创建Android Q模拟器】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 保持Android Studio开发环境的最新版本. 下载Android Studio3.4 使用Android Studio自带的 ...

  5. 升级完Android Studio3.2后,打包release出现的错误

    升级完Android Studio2.3后,打包release出现的错误 Error:Execution failed for task ':qq:lintVitalRelease'.> Lin ...

  6. 【Android Studio安装部署系列】三十一、从Android studio3.0.0升级到Android studio3.0.1

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 突然想要升级到较高版本.要跟随潮流嘛,不然就落后了. 下载IDE http://www.wanandroid.com/tools/i ...

  7. Android Studio3.1.2升级问题:Configuration 'compile' is obsolete and has been replaced with 'implementation'.

    每次升级Android Studio时,一般情况下Gradle版本的也会相应的升级,我之前Android Studio 3.0.1.Gradle 是4.1升级后为:Android Studio 3.1 ...

  8. Android Studio3.1.0升级问题记录

    每次升级Android Studio时,一般情况下Gradle版本的也会相应的升级,我之前Android Studio 3.0.1.Gradle 是4.1升级后为:Android Studio 3.1 ...

  9. Android Studio3.0 新特性 ~ New Features in Android Studio Preview (译文)

    原文地址:https://developer.android.google.cn/studio/preview/features/index.html 最新Android Studio版本是Andro ...

随机推荐

  1. 【leetcode】617. Merge Two Binary Trees

    原题 Given two binary trees and imagine that when you put one of them to cover the other, some nodes o ...

  2. JavaSpring【一、概述】

    主要内容 JavaSpring[一.概述] JavaSpring[二.IOC] JavaSpring[三.Bean] JavaSpring[四.Bean管理注解实现] JavaSpring[五.AOP ...

  3. db2 with用法

    最近在研究db2 递归查询时想到了with,一直以为with只是用来查询递归,但是实际with功能强大,还有更加强大的功能,偶然读到一位大神的文章,对with做了很详细的解读,特贴出来供大家学习研究 ...

  4. 常用Linux文件系统

  5. Django—跨域请求

    同源策略 首先基于安全的原因,浏览器是存在同源策略这个机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. 而如果我们要跳过这个策略,也就是说非要跨域请求,那么就需要通过J ...

  6. 11_Redis_事务

    一:Redis 事务:目的为了进行Redis语句的批量化操作,不保证数据安全 Redis作为NoSQL数据库也同样提供了事务机制:在Redis中,MULTI/EXEC/DISCARD/这三个命令是我们 ...

  7. Physical Education Lessons CodeForces - 915E (动态开点线段树)

    Physical Education Lessons CodeForces - 915E This year Alex has finished school, and now he is a fir ...

  8. springboot同时支持访问html5和jsp时,导致后台ResponseBody返回中文乱码

    背景:原系统是由springboot jsp,所有访问都是jsp 现在需要做HTML5定位,要同时支持访问HTML5和JSP 在application.yml的spring标签下配置 mvc: #vi ...

  9. HAL UART DMA 数据收发

    UART使用DMA进行数据收发,实现功能,串口2发送指令到上位机,上位机返回数据给串口2,串口2收到数据后由串口1进行转发,该功能为实验功能 1.UART与DMA通道进行绑定 void HAL_UAR ...

  10. Python项目列表

    70个Python项目列表: 1.[Python 图片转字符画]2.[200行Python代码实现2048]3.[Python3 实现火车票查询工具]4.[高德API+Python解决租房问题 ]5. ...