Gradle忽略kotlin jvmname?

我正在构建一个Android应用程序,并试图用Gradle编译一段kotlin代码。 我有@JvmName ,但似乎注释被忽略,因此编译失败。

 @JvmName("setOptionsForPairs") private fun setOptionsFor(field: JSONObject, options: MutableList<Pair<Int, String>>, spinner: Spinner?){ options.plusAssign(json2pairs(field.getJSONObject("options"))) setOptions(options.map { it.second }, spinner) } private fun setOptionsFor(field: JSONObject, options: MutableList<String>, spinner: Spinner?){ val candidates = field.getJSONArray("options") for (i in 0..candidates.length() - 1) options.add(candidates.getString(i)) setOptions(options, spinner) } 

Gradle告诉我:平台声明由于上述函数的签名而发生冲突。 我错过了什么? 我应该告诉Gradle明确注意注释还是别的吗?

正如@Ilya所建议的,我创建了一个最小的完整示例。 这个代码是可以编译的。

 import android.support.v7.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val dogs = mutableListOf(Dog("John"), Dog("Betty")) val people = mutableListOf(Person("Tom"), Person("Karo")) greet(dogs) greet(people) } @JvmName("greetPeople") private fun greet(people: MutableList<Person>) { print("Hello ${people.map { it.name }.joinToString(",")}") } private fun greet(people: MutableList<Dog>) { print("Hello ${people.map { it.name }.joinToString(",")}") } } data class Person(val name: String) data class Dog(val name: String) 

我也检查了如果最小的SDK版本可能会导致问题,但对于最小的完整的例子,我使用相同的最小SDK版本21和编译。我从函数名称中删除private ,然后编译与@JvmName注释。