AndroidStudio环境升级 AS 3.1.1 + gradle 3.1.2 + wrapper 4.7 + sdk 27 踏坑记录

https://blog.csdn.net/zxc514257857/article/details/80425711
编写不易,如有转载,请声明出处: 梦回河口:https://blog.csdn.net/zxc514257857/article/details/80425711
报错一:

Error:Unable to find method 'com.android.build.gradle.tasks.factory.AndroidJavaCompile.setDependencyCacheDir(Ljava/io/File;)V'.Possible causes for this unexpected error include:
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)Re-download dependencies and sync project (requires network)
The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.Stop Gradle build processes (requires restart)
Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.
In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
1
2
3
4
5
  我在AndroidStudio还在2.3.3版本的情况下,想把wrapper版本升级至4.7结果报出上述错误。wrapper版本必须跟着AndroidStudio的版本走,若想使用wrapper版本4.7,就需要将AndroidStudio的版本升级至3.1以上。

报错二:

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=zhumeiRelease, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
1
  之前项目中配置渠道打包时做了如下配置:

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def oldFile = output.outputFile
        if (variant.buildType.name.equals('release')) {
            def releaseApkName = getProductName() + "_v${defaultConfig.versionName}_${releaseTime()}_" + variant.productFlavors[0].name + '_release.apk'
            output.outputFile = new File(oldFile.parent, releaseApkName)
        }
    }
}
1
2
3
4
5
6
7
8
9
  升级之后,output.outputFile变成了只读属性,不能使用,将output.outputFile替换为output.outputFileName即可

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        if (variant.buildType.name.equals('release')) {
            output.outputFileName = new File(getProductName() + "_v${defaultConfig.versionName}_${releaseTime()}_" + variant.productFlavors[0].name + '_release.apk')
        }
    }
}
1
2
3
4
5
6
7
报错三:

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
1
  在module的build.gradle文件的android —> defaultConfig节点下加入:

flavorDimensions "versionCode"
1
  问题即可解决

报错四:

Error:Execution failed for task ':youyoubao:javaPreCompileCommonDebug'.
> 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-compiler-8.6.0.jar (com.jakewharton:butterknife-compiler:8.6.0)
  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
  这是项目中使用butterknife而引发的错误,需要在module的build.gradle文件的android —> defaultConfig节点下加入:

javaCompileOptions {
    annotationProcessorOptions{
        includeCompileClasspath = true
    }
}
1
2
3
4
5
  问题即可解决

报错五:

Configuration on demand is not supported by the current version of the Android Gradle plugin since you are using Gradle version 4.6 or above. Suggestion: disable configuration on demand by setting org.gradle.configureondemand=false in your gradle.properties file or use a Gradle version less than 4.6.
1
  根据其指示,在AndroidStudio中使用ctrl + shift + F 全局搜索 org.gradle.configureondemand 关键字,将true改为false;若未解决ctrl + alt + s 调出setting,取消Configure on demand 的勾选,如下图: 


后续问题一:

Cannot resolve symbol KeyEventCompat(android.support.v4.view.KeyEventCompat找不到) 
1
  sdk升级之后,KeyEventCompat类被取消,hasNoModifiers方法已经被KeyEvent实现了,NoPreloadViewPager中的代码修改如下:

// 修改前代码
public boolean executeKeyEvent(KeyEvent event) {
    boolean handled = false;
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (event.getKeyCode()) {
            case KeyEvent.KEYCODE_DPAD_LEFT:
                handled = arrowScroll(FOCUS_LEFT);
                break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:
                handled = arrowScroll(FOCUS_RIGHT);
                break;
            case KeyEvent.KEYCODE_TAB:
                if (KeyEventCompat.hasNoModifiers(event)) {
                    handled = arrowScroll(FOCUS_FORWARD);
                } else if (KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) {
                    handled = arrowScroll(FOCUS_BACKWARD);
                }
                break;
            default:
                break;
        }
    }
    return handled;
}

// 修改后代码
public boolean executeKeyEvent(KeyEvent event) {
    boolean handled = false;
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (event.getKeyCode()) {
            case KeyEvent.KEYCODE_DPAD_LEFT:
                handled = arrowScroll(FOCUS_LEFT);
                break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:
                handled = arrowScroll(FOCUS_RIGHT);
                break;
            case KeyEvent.KEYCODE_TAB:
                if (event.hasNoModifiers()) {
                    handled = arrowScroll(FOCUS_FORWARD);
                } else if (event.hasModifiers(KeyEvent.META_SHIFT_ON)) {
                    handled = arrowScroll(FOCUS_BACKWARD);
                }
                break;
            default:
                break;
        }
    }
    return handled;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
后续问题二:

all com.android.support libraries must use the exact same version specification(mixing versions can lead to runtime crashes)
1
  引用的第三方库的支持库版本低于module的 build.gradle中的支持库版本或者与module的 build.gradle中的支持库版本不一致时,可能会出现此问题,解决此问题可以在module的 build.gradle中添加

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.1.0'
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
后续问题三:

  将Glide更新至4..1.1版本后,大多数的设置已经放到了RequestOptions对象中,之前的写法会报错

// 之前的写法
 Glide.with(mContext)
      .load(logoUrl)
      .error(defauleRes)
      .skipMemoryCache(true)
      .centerCrop()
      .into(imageView);

// 修改后的写法
 RequestOptions options = new RequestOptions()
        .centerCrop()
        .error(defauleRes)
        .skipMemoryCache(true);

Glide.with(mContext)
        .load(logoUrl)
        .apply(options)
        .into(imageView);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
后续问题四:

java.lang.NoClassDefFoundError: com.igexin.sdk.d
1
  一个奇怪的Bug,在Android版本5.0以下都不能运行,最终原因找出是代码方法数超出限制,解决方法之前已经写过,见:https://blog.csdn.net/zxc514257857/article/details/66997689
--------------------- 
作者:zxc514257857 
来源:CSDN 
原文:https://blog.csdn.net/zxc514257857/article/details/80425711 
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://blog.csdn.net/yiyihuazi/article/details/87875597

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


安装环境都很简单,就是下载工具需要在华为开发者联盟里注册,然后认证,扫码认证我这边是不可以的,人工认证需要两个工作日审核安装成功之后遇到了很多报错,网上都是可以解决的,遇到下面这个报错网上查了很多方式也解决不了,于是记录一下  找了很久,发现网上说的我都配置了,添加 allow
上传的方式有两种,第一种是通过bintray官方出的插件bintray/gradle-bintray-plugin第二种是一个国外组织开源的插件novoda/bintray-release 这里讲bintray/gradle-bintray-plugin  1.在项目根目录下的 build.gradle 添加插件依赖 dependencies{classpat
转载自: 完美解决Error:SSLpeershutdownincorrectly打开gradle文件夹下的gradle-wrapper文件修改其中的配置文件将红色区域修改为http://services.gradle.org/distributions/等待编译完成
https://www.jianshu.com/p/9220227cdfb3buildscript{ext.kotlin_version='1.2.71'repositories{google()jcenter()}dependencies{//classpath'com.android.tools.build:gradle:3.1.0-alpha09'
Markdown版本笔记我的GitHub首页我的博客我的微信我的邮箱MyAndroidBlogsbaiqiantaobaiqiantaobqt20094baiqiantao@sina.com发布库到仓库mavenjcenterJitPackMD目录目录通过AS创建aar的步骤发布到Github仓库【推荐】创建项目配置项目构建并上传上传
 跟着教程做的,已经有了JDK,直接进行后面的步骤,下载安装AndroidSDK没有FQ,教程里的网址打不开,就换了个。网址http:/ools.android-studio.org/index.php/sdk下的.exe  nextinstall然后就是漫长的等待 ……先这样吧开始下载AndroidStudio,网址http://www.and
今天更新了universal-image-loader-1.9.5.jar文件,studio死活找不到其中相关的类,上网百度试了很多办法,总算解决了,具体方法跟一篇老外的帖子的差不多,这里分享下。 解决步骤:Somethingwentwronginincrementalbuildsystem.Oneofthisshouldhelp:MenuBuild->Rebuild
https://blog.csdn.net/zxc514257857/article/details/80425711编写不易,如有转载,请声明出处:梦回河口:https://blog.csdn.net/zxc514257857/article/details/80425711报错一:Error:Unabletofindmethod'com.android.build.gradle.tasks.factory.AndroidJavaCompile.setDepe
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow                     创建兼容AndroidStudio和eclipse的AS工程虽然我的博客名叫eclipse_xu,但是我已经将
gradle跳过测试直接编译gradlebuild-xtest  根据build.gradle和setting.gradle文件生成idea项目:gradleidea  gradle这几年发展迅猛,github越来越多的项目都开始采用gradle来构建了,但是并不是所有人都对gradle很熟悉,下面的方法可以把gradle转成maven项目,前提gradle项
本地仓库配置配置环境变量GRADLE_USER_HOME,并指向你的一个本地目录,用来保存Gradle下载的依赖包。 远程仓库配置一般Gradle、maven从中央仓库mavenCentral()http:/epo1.maven.org/maven2/下载依赖包,但是在国内下载速度巨慢,我们只能使用国内的镜像。所以每个Gradle构建的项目
what:Buildtool(构建工具)是从源代码自动创建可执行应用程序的程序。构建包括将代码编译,链接和打包成可用或可执行的形式。在小项目中,开发人员通常会手动调用构建过程。这对于较大的项目来说是不实际的,在这些项目中,很难跟踪需要构建的内容,构建过程中的顺序和依赖关系。使用自动化工
说明:该示例为在windows系统下自动化部署springboot架构:springboot+github+gradle+jdk8各种配置步骤及截图说明:1、配置git,gradle及jdk  系统管理→全局工具配置  说明:其中git配置项中的PathtoGitexecutable要指到git.exe文件,maven的配置方式和gradle类似
AndoridStudio模块化开发相关配置下面以宿主APP模块和Uer_Module模块为例:第一步:在项目根目录gradle.properties配置文件中添加如下代码isNeedUserModule=true#isNeedUserModule=false 第二步在user_module中的build.gradle文件中加入了如下代码来控制此库是library还
buildtools构建工具能够帮助你创建一个可重复的、可靠的、携带的且不需要手动干预的构建。构建工具是一个可编程的工具,它能够让你以可执行和有序的任务来表达自动化需求。假设你想要编译源代码,将生成的class文件拷贝到某个目录,然后将该目录组装成可交付的软件。如下图所示,展示了所
Git及用法Git是目前世界上最先进的分布式版本控制系统。Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上
打release包的时候,出现这个玩意,但debug直接跑apk又没问题。Causedby:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:ExpectedanamebutwasSTRINGatline1column99path$[0].apkInfo.versionNameatcom.google.gson.internal.bind.
android\gradle\wrapper\gradle-wrapper.properties由distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distszipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/distsdistributionUrl=https\://services.gradle.org/distributions/gradle-2.12.1-all.
1.上传本地仓库1.1build.gradle项目设置plugins{id'java'id'maven'//引入maven插件}group'com.inkyi'//包名version'1.0.1-SNAPSHOT'//版本号1.2 build.gradle上传设置//指定上传的路径deflocalMavenRepo='file://'+new
Gradle的Emas服务插件会加载您下载的aliyun-emas-services.json文件。请修改工程的build.gradle使用该插件。配置步骤如下:1.修改项目级目录下build.gradle({project}/build.gradle):1buildscript{2repositories{3maven{4url'http://maven.aliyun.com