oynix

于无声处听惊雷,于无色处见繁花

HelloKotlin - Error:Gradle-failed to create directory


今天在看Kotlin-Docs,于是随手建了一个HelloKotlin的项目准备练练手,于是引发了一连串的问题。在此记录过程。

环境

  • Windows 7 64bit
  • AndroidStudio 3.0.1

一般的,像下面这样,直接写一个程序入口main函数,跑一些简单代码时不用构建apk省时省力:

同样的,我想创建一个Kotlin的程序入口。
创建项目时勾选上Kotlin,AndroidStudio便自动导入Kotlin环境,然后直接新建了一个Hello.kt的文件,里面代码很简单,只有三行,如下:

1
2
3
fun main(args: Array<String>) {
System.out.print("Hello Kotlin")
}

fun单词前有个彩色的Kotlin Logo,直接点击就可以运行HelloKotlin(按道理这样就可以正常跑起来了,我是这么以为的),但是,报了下面这个错误

在网上搜索Error:Gradle:failed to create directory一番后,找到了解决办法,原来是新版AndroidStudio自带的Aapt2引起的,直接禁用就好:在gradle.properties添加如下配置即可:

1
android.enableAapt2=false

再次点击fun前面的彩色Kotlin Logo,我以为可以运行了,但是,又报了下面这个错误

IDE说找不到HelloKt.class,然而勤劳的我却凭借双手找到了,措不及防



这下我就有点不知所措了。。。
网上也没查出什么相关参考,又试了几种不同的写法,依然不行,最后不知怎么突然想到修改Gradle版本试试看,事实证明此路可行!
AndroidStudio 3.0.1创建新项目默认的Gradle版本时4.1,Android Plugin Version是3.0.1。我把HelloKotlin项目向下降了一个版本,即Gradle-3.4,Android Plugin - 2.3.3,去掉DSL method google()

相应的,Module的build.gradle里一些版本都要下调。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 部分内容
android {
compileSdkVersion 25
buildToolsVersion '25.0.3'
defaultConfig {
applicationId "com.oy.hellokot"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
...
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
}

如上配置以后,再次点击fun之前的彩色Kotlin Logo,程序便可以跑起来了。

------------- (完) -------------
  • 本文作者: oynix
  • 本文链接: https://oynix.com/2017/12/5eb5373e78b9/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道