为什么必须在Android中明确指定$ kotlin_version?

时间:2018-07-12 21:13:08

标签: android gradle kotlin

在Android Studio项目中支持Kotlin需要两个依赖项:var ss = SpreadsheetApp.getActive(); var target = ss.getSheetByName('Data Entry'); target.insertRowsAfter(target.getMaxRows(), 10) 中的=If(len(D3:D),vlookup(D3:D,'Configuration List'!A2:B,2,0),"") kotlin-gradle-plugin中的Project/build.gradle,并且这两个必须具有相同的版本。常见的方法似乎是使用单个kotlin-stdlib-jdk7变量,然后在IDE更新其Kotlin插件时必须手动更改它-从Android Studio 3.1.3开始,如果出现以下情况,IDE仍无法自动更新依赖项您使用Project/app/build.gradle作为版本。

kotlin_version

在非Android Kotlin项目中,即使用$variable而不是implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 的项目中,可以简单地从apply: 'kotlin'依赖项中omit the version,然后将其自动解析从插件。

apply plugin: 'kotlin-android'

这甚至适用于Android项目中的非Android模块。我的问题是,为什么不能在Android模块中做到这一点?为什么不能简单地省略kotlin-stdlib-jdk7?如果自Kotlin 1.1.2起已存在该功能,为什么即使在Kotlin 1.2.51上,它仍会在Android上引起编译错误?还是实际上有可能这样做,如果是这样,怎么做?

1 个答案:

答案 0 :(得分:0)

实际上,这不是Kotlin所特有的,而是与Gradle如何管理依赖关系有关。

有关如何在Gradle中指定依赖项版本的信息,请参见https://docs.gradle.org/current/userguide/declaring_dependencies.html

在这种情况下

    public function users()
    {
     return $this->hasMany(User::class, 'id');
    }

    public function commenteduser()
    {
   return $this->hasMany(User::class, 'id');
    }

是设置版本的标准方法。由于此版本号在多个依赖项中都相同,因此在变量中声明了该版本号,以便轻松更改所有Kotlin库的版本。

function foo(resolve) {
  setTimeout(() => {
    console.log("hello world");
    resolve();
  }, 1000)
}

function bar() {
  return new Promise(function(resolve) {
    foo(resolve)
  })
}

bar().then(() => console.log("foo has completed"))

使用implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" ,自Gradle 4.6起可用。它用于相同的目的。可以将库的版本设置在一个中央位置,这样便可以使版本保持相同的值,而不必遍历较大项目的所有implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7' 文件。