当我使用Android Studio3.0并在project/build.gradle
中使用下一版本的Android Gradle插件时:
classpath 'com.android.tools.build:gradle:3.0.1'
在我更新到Android Studio3.1之后,我更新了Android Gradle插件:
classpath 'com.android.tools.build:gradle:3.1.0'
现在我的app/build.gradle
中出现错误:
def releaseFileName = "${rootProject.name}_${defaultConfig.versionName}.apk"
outputFileName = new File(rootProject.projectDir.absolutePath + "/release", releaseFileName.toLowerCase())
错误:
设置输出文件名时不支持绝对路径
我需要把输出apk(app-release.apk
)在项目中的特定路径。在文件夹MyProject/release/app-relese.apk
。我怎么可以做到这一点?
9条答案
按热度按时间2izufjch1#
以防万一这有帮助,这个错误意味着现在不允许在与APK的文件名相关的任何内容上有绝对路径。我可以附上我的BEFORE和AFTER来实现我所需要的(在project/app/build/文件夹中有APK:
升级3.1.0之前
在3.1.0年级或之后
xhv8bpkk2#
我认为使用“./../../../”是一个糟糕的解决方案...我在几个项目中使用通用gradle脚本,我希望代码独立于输出目录的深度。
经过一番研究,我找到了适用于Gradle插件3.1.2的解决方案:
im9ewurl3#
Android Gradle插件3.4.0+最简单的解决方案如下所示:
组合/连接新文件名:
然后,只需将其重新赋值。
具体如下
wyyhbhjk4#
我也遇到过同样的问题,我还没有努力去弄清楚到底发生了什么,但有一个简单的解决办法。
只需从新文件中删除根目录并信任框架,即将代码更改为
这对我们来说已经足够了,我们不关心APK去了哪里,只关心特定口味的APK的名称。
x8diyxa75#
我找到了解决办法:
现在,输出文件
app-release.apk
成功创建于MyProject/release/app-relese.apk
中eeq64g8w6#
使用
variant.packageApplicationProvider.get().outputDirectory
以避免警告“*variantOutput.getPackageApplication()已过时 *”ldioqlga7#
对于Gradle-6.5.1:
ryhaxcpt8#
如果要附加版本名称和版本代码,请执行以下操作:
doinxwow9#
我刚刚将我们的项目从4.1.2版升级到Gradle 7.6版,该版本删除了将
outputFileName
设置为相对目录的功能。下面的代码对我来说很有效。它将构建输出从预期的目录复制到您选择的目录。在我的例子中,这是两个级别(../../.)。
这项工作的关键是将复制任务绑定到
assemble
任务完成,使用finalizedBy
,以便它只在创建Apk后运行。