Android Studio 3.0 Kotlin工程问题集

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

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

这里写图片描述

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

这里写图片描述

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

1
2
3
4
5
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

1
ext.kotlin_version = '1.1.2-4'


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

这里写图片描述
解决方法:

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

1
2
3
//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

修改成如下内容

1
2
3
4
5
6
7
8
9
10
11
// 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"
}
}

文章目录
  1. 1. 问题1: 新建支持Kotlin的Android项目,卡在“Resolve dependency :classpath”
  2. 2. 问题2:“Unable to find method ‘com.android.build.gradle.internal.variant.BaseVariantData.getOutput()Ljava/util/List’”
  3. 3. 问题3:“Declaring custom ‘clean’ task when using the standard Gralde lifecycle plugins is not allowed”
  4. 4. 问题4: build.gradle文件中”def outputFile = output.outputFile”报错”Not valid”,如图
|