美文网首页
DefaultFilePropertyFactory$Defau

DefaultFilePropertyFactory$Defau

作者: 不收敛的柯西 | 来源:发表于2020-06-06 00:00 被阅读0次

整体报错信息如下:

groovy.lang.MissingMethodException: No signature of method: 
org.gradle.api.internal.file.DefaultFilePropertyFactory$DefaultDirectoryVar.getPath() is applicable for argument types: () values: []
Possible solutions: getAt(java.lang.String), getClass(), get(), getType(), each(groovy.lang.Closure), iterator()

发生报错的原因是升级Gradle到3.6.2后,部分API改变,无法获取到APK打包的文件目录。报错部分代码如下:

    //APK输出名称
    applicationVariants.all { variant ->
        //apk生成目录。此行报错,outputDirectory.getPath()不再适用
        def apkDirectoryPath = variant.packageApplicationProvider.get().outputDirectory.getPath()
        //项目目录
        def projectPath = projectDir.getPath()

        //若apk生成目录不在app/下,则根据项目配置生成apk名称。
        //加上这个判断的目的是避免开发阶段中,每次运行生成新的apk名称,导致build/有大量apk文件
        if (!apkDirectoryPath.startsWith(projectPath)) {
            variant.outputs.each { output ->
                output.outputFileName = createApkName(appName, appVersionName, appVersionCode, gradleProp)
            }
        }
    }

将报错行代码做以下修改即可解决:

 def apkDirectoryPath = variant.packageApplicationProvider.get().outputDirectory.get().toString()

其实报错log已有提示,但是outputDirectory.get()返回不是String类型,导致后续if判断出错,浪费了一些解决时间,记录一下

相关文章

网友评论

      本文标题:DefaultFilePropertyFactory$Defau

      本文链接:https://www.haomeiwen.com/subject/pztttktx.html