Android 将build.gradle迁移到build.gradle.Kts:无法解析类属性

Android 将build.gradle迁移到build.gradle.Kts:无法解析类属性,android,gradle,build.gradle,gradle-kotlin-dsl,Android,Gradle,Build.gradle,Gradle Kotlin Dsl,虽然将build.gradle转换为build.gradle.kts是一个手动过程,但在下面的代码段中,我正在努力转换 我多次尝试使缓存无效并重新启动studio。但是,无法识别android.varinatFilter android.variantFilter { variant -> if (variant.buildType.name == 'release' && variant.getFlavors().get(0).name =

虽然将
build.gradle
转换为
build.gradle.kts
是一个手动过程,但在下面的代码段中,我正在努力转换

我多次尝试使缓存无效并重新启动studio。但是,无法识别android.varinatFilter

android.variantFilter { variant ->
    if (variant.buildType.name == 'release'
            && variant.getFlavors().get(0).name == 'development') {
        variant.setIgnore(true)
    }
    if (variant.buildType.name == 'debug'
            && variant.getFlavors().get(0).name == 'production') {
        variant.setIgnore(true)
    }
}
 def getProps(path) {
        Properties props = new Properties()
        props.load(new FileInputStream(file(path)))
        return props
    }
Java.util.Properties的Properties类
依赖项未在
.kts
文件中得到解析,
Java.io
的FileInputStream类也无法识别

android.variantFilter { variant ->
    if (variant.buildType.name == 'release'
            && variant.getFlavors().get(0).name == 'development') {
        variant.setIgnore(true)
    }
    if (variant.buildType.name == 'debug'
            && variant.getFlavors().get(0).name == 'production') {
        variant.setIgnore(true)
    }
}
 def getProps(path) {
        Properties props = new Properties()
        props.load(new FileInputStream(file(path)))
        return props
    }
同样在应用kotlin注释处理器时

kapt 'androidx.lifecycle:lifecycle-common-java8:2.1.0' To

kapt {'androidx.lifecycle:lifecycle-common-java8:2.1.0'} 
不工作并返回编译时错误

任何帮助都将不胜感激

更新

Java.util.Properties的Properties类
依赖项未在
.kts
文件中得到解析,
Java.io
的FileInputStream类也无法识别

android.variantFilter { variant ->
    if (variant.buildType.name == 'release'
            && variant.getFlavors().get(0).name == 'development') {
        variant.setIgnore(true)
    }
    if (variant.buildType.name == 'debug'
            && variant.getFlavors().get(0).name == 'production') {
        variant.setIgnore(true)
    }
}
 def getProps(path) {
        Properties props = new Properties()
        props.load(new FileInputStream(file(path)))
        return props
    }

这将通过无效缓存和重新启动得到解决。(开始重构项目级gradle,然后依次重构settings.gradle和app.gradle文件)

对于
kapt{'androidx.lifecycle:lifecycle-common-java8:2.1.0'}
-请使用双引号,例如
kapt{“androidx.lifecycle:lifecle-common-java8:2.1.0”
,求你了

对于方法,还请使用以下语法:

import java.io.FileInputStream
import java.util.Properties

/***/

fun getProps(path: String): Properties {
    val props = Properties()
    props.load(FileInputStream(file(path)))
    return props
}
变化:

  • 您需要在文件开头使用java包进行导入
  • 使用
    fun
    而不是
    def
  • 方法需要参数类型,对此-
    path:String使用“:”
  • new
    不需要关键字
  • 可以以
    val
    开头,例如,如果编译器能够理解类型,则无需手动输入
  • 如果结果不是
    单位
对于过滤器-我没有用过这个。但是,请考虑:

  • 将引号“替换为”
  • variant.getFlavors().get(0).name
    替换为
    variant.flavors[0]。name
  • variant.setIgnore(true)
    替换为
    variant.ignore=true
    • 那就太好了

      android.variantFilter{
      if(buildType.name==“release”&&flavors[0]。name==“development”){
      忽略=真
      }
      if(buildType.name==“debug”&&flavors[0]。name==“production”){
      忽略=真
      }
      }
      
      虽然我认为这是一个更正确的方法

      flavors[0]。name=“xyz”
      
      应该是

      flavors.map{it.name}.contains(“xyz”)
      
      这两个
      导入java.io.FileInputStream
      导入java.util.Properties
      未得到解决。@Dipalis.,这是IntelliJ Idea错误,还是在命令行执行
      gradlew
      后出现同一行?