《Kotlin》 Android Studio3.0 Kotlin工程问题集

问题1: 新建支持Kotlin的Android项目,卡在“Resolve dependency :classpath”

解决分析:
一般碰到“Resolve dependency :classpath”卡着一动不动的,等一会如果还是没反应,应该就是永远没反应。先重启下Android Studio或者重新gradle sync一下,如果还是不行,看下工程中**“gradle-wrapper.properties”**中的gradle版本,然后去系统.gradle 目录下看下对应的gradle 是否已经下载OK

《Kotlin》 Android Studio3.0 Kotlin工程问题集_第1张图片

我这里是在家目录下的.gradle/wrapper/dists下,可以看到一些Gradle版本,找到你正在使用的版本。进入后可以看到一串很长的文件名,继续进入

《Kotlin》 Android Studio3.0 Kotlin工程问题集_第2张图片

如上可以看到一些文件,如果有完整的.zip包和.ok文件就说明对应的gradle版本是下载OK的;如果没有下载完,AS中进行构建的时候,你可以明显的看到目录下有个文件的大小在逐渐增加,这就说明正在执行gradle 版本的下载任务,可以耐心等待下,如果是下载OK的情况下,还是一直卡在“Resolve dependency :classpath”,就是我今天用AS3.0 构建Kotlin项目的时候遇到的问题,你就可以看看你的build.gradle文件中,是否又不常见的dependency。就如Kotlin工程中
就是使用到

repositories {
  maven {
    url "https://maven.google.com"
  }
}

这个在墙内是无法访问的。我猜想就是这个导致的,换成aliyun maven或者其他国内可访问的maven后,不会卡住了,关于Android Studio中配置aliyun Maven ,请参考我的另一篇博文。


问题2:“Unable to find method ‘com.android.build.gradle.internal.variant.BaseVariantData.getOutput()Ljava/util/List’”

这里写图片描述
解决办法:
kotlin版本调整,之前是1.1.2-3,换成1.1.2-4

ext.kotlin_version = '1.1.2-4'

问题3:“Declaring custom ‘clean’ task when using the standard Gralde lifecycle plugins is not allowed”

《Kotlin》 Android Studio3.0 Kotlin工程问题集_第3张图片
解决方法:

把build.gradle中的clean task 无情地注释掉。

//task clean(type: Delete) {
//   delete rootProject.buildDir
//}

问题4: build.gradle文件中"def outputFile = output.outputFile"报错"Not valid",如图

这里写图片描述

出错代码,如下第39行

这里写图片描述

解决办法:
查阅官网:https://developer.android.google.cn/studio/preview/features/new-android-plugin-migration.html#variant_api

修改成如下内容

// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

参考:
https://stackoverflow.com/questions/44239235/android-gradle-3-0-0-alpha2-plugin-cannot-set-the-value-of-read-only-property

你可能感兴趣的:(技多不压身,Kotlin)