gpt4 book ai didi

android - 为什么在将目标设备更改为具有不同 Android 版本的设备时,为 apk 使用自定义名称会导致错误?

转载 作者:行者123 更新时间:2023-12-05 05:57:06 27 4
gpt4 key购买 nike

我遇到的问题是,如果我尝试在具有不同 Android 版本的不同设备上运行我的应用程序,我必须在每次更改 Android 版本之前进行清理。如果我不清理,我会收到以下错误:

Zip file '/long path to app/app/build/outputs/app/apk/my_app_name-my_variant_name-verionName.apk' already contains entry 'some file.dex', cannot overwrite

遇到这个错误很长时间后,当 Android Studio Arctic Fox 开始准确地告诉我哪个文件有冲突时,我终于找到了导致问题的代码。

导致问题的gradle代码是这样的:

android.applicationVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = new File(path + "my_app_name-${variant.name}-${variant.versionName}.apk")
}
}

我发现的一个解决方案是删除 build/outputs/app 目录。

那么有没有什么方法可以在没有这个问题的情况下完成同样的事情呢?

最佳答案

这并不能完全回答为什么会发生这种情况。正如有人指出的那样,这可能与 Android Studio 试图为每个架构构建 apks 有关,但是我在这里找到的解决方案 https://stackoverflow.com/a/28992851/704836不会为每个架构制作不同的 apk,所以我不知道为什么这会修复它,但确实如此。

基本上我删除了原始帖子中的代码:

android.applicationVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = new File(path + "my_app_name-${variant.name}-${variant.versionName}.apk")
}
}

并将其替换为:

setProperty("archivesBaseName", "MyApp-$versionName")

这足以解决问题。我无法切换手机目标,但效果很好。生成的新 apk 称为 MyApp-version-variant.apk

关于android - 为什么在将目标设备更改为具有不同 Android 版本的设备时,为 apk 使用自定义名称会导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68913516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com