美文网首页
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