英文:
How to get relative path apk of my project in gradle 6.5.1
问题
我将gradle版本从5.6.1更改为6.5.1,并将'com.android.tools.build:gradle:3.5.0'更改为'com.android.tools.build:gradle:4.0.1'。
之后,我遇到了构建失败的错误。
- 出现了什么问题:
配置项目':app'时出现问题。
groovy.lang.MissingMethodException:org.gradle.api.internal.file.DefaultFilePropertyFactory$DefaultDirectoryVar.toPath()方法没有签名,适用于参数类型:()值:[]
可能的解决方案:with(groovy.lang.Closure),each(groovy.lang.Closure),tap(groovy.lang.Closure),with(boolean,groovy.lang.Closure),getAt(java.lang.String),putAt(java.lang.String,java.lang.Object)
我理解在新的gradle中不存在.toPath()方法,但是是否添加了其他替代方法到新的gradle中呢?或者是否存在另一种方法来获取项目的相对路径?
以下是代码示例:
buildTypes {
release {
applicationVariants.all { variant ->
variant.outputs.all { output ->
def relative_apk_folder = output.packageApplication.outputDirectory.toPath().relativize(project.rootDir.toPath()).toString() + "/bin/";
outputFileName = new File("$relative_apk_folder" + "MyAPK.apk")
}
}
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.sign_app
}
debug {
}
}
英文:
I changed gradle version 5.6.1 to 6.5.1 and also 'com.android.tools.build:gradle:3.5.0' to 'com.android.tools.build:gradle:4.0.1'.
After that I got FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> groovy.lang.MissingMethodException: No signature of method: org.gradle.api.internal.file.DefaultFilePropertyFactory$DefaultDirectoryVar.toPath() is applicable for argument types: () values: []
Possible solutions: with(groovy.lang.Closure), each(groovy.lang.Closure), tap(groovy.lang.Closure), with(boolean, groovy.lang.Closure), getAt(java.lang.String), putAt(java.lang.String, java.lang.Object)
I understand that in new gradle does not exist method .toPath(), but what alternative was added to new gradle? Or is it exist another way to get relative path of my project?
here is code example:
buildTypes {
release {
applicationVariants.all { variant ->
variant.outputs.all { output ->
def relative_apk_folder = output.packageApplication.outputDirectory.toPath().relativize(project.rootDir.toPath()).toString() + "/bin/"
outputFileName = new File("$relative_apk_folder" + "MyAPK.apk")
}
}
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.sign_app
}
debug {
}
}
答案1
得分: 0
试试这个:
def relative_apk_folder = "../../../../../bin/"
outputFileName = new File(relative_apk_folder + "MyAPK.apk")
在我的项目中有帮助。
英文:
Try this one:
def relative_apk_folder = "../../../../../bin/" outputFileName = new File(relative_apk_folder + "MyAPK.apk")
It helped in my project.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论