Android应用包构建失败

8

我在使用谷歌的新功能 App Bundle 构建我们的应用时遇到了问题。

当我运行命令 ./gradlew app:packageProductionReleaseBundle --stacktrace 时,我收到以下错误信息:

Execution failed for task ':app:packageProductionReleaseBundle'.
            java.util.concurrent.ExecutionException: com.android.tools.build.bundletool.exceptions.ValidationException: Error validating module 'base'.
                              ...
                           LONG STACK TRACE...
                              ...
Caused by: com.android.tools.build.bundletool.exceptions.BundleFileTypesException$FileUsesReservedNameException: File 'root/res/drawable/adoceansdk_close_interstitial_button.png' uses reserved file or directory name 'res'.
                at com.android.tools.build.bundletool.validation.BundleFilesValidator.validateModuleFile(BundleFilesValidator.java:112)
                at com.android.tools.build.bundletool.validation.ValidatorRunner.lambda$validateBundleModules$6(ValidatorRunner.java:73)
                at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:406)
                at com.android.tools.build.bundletool.validation.ValidatorRunner.validateBundleModules(ValidatorRunner.java:73)

原因是我们使用了一个.jar的外部库。

我如何在不删除这个库的情况下解决它呢?

提前感谢您的答案。


2
如果这个外部库旨在用于Android应用程序,我认为它应该被导出为AAR而不是JAR。请参阅https://developer.android.com/studio/projects/android-library。 - Pierre
谢谢Pierre,这很有帮助!我已经将它添加到AAR项目库中,而不是JAR,现在它可以工作了! - jczerski
@jczerski 我也遇到了同样的问题。错误信息是:Caused by: com.android.tools.build.bundletool.exceptions.BundleFileTypesException$FileUsesReservedNameException: File 'root/res/drawable-hdpi/sym_keyboard_feedback_delete.png' uses reserved file or directory name 'res'. 该文件位于以下位置 "AppData\Local\Android\Sdk\platforms\android-27\data\res\xml",但它不是来自第三方jar文件。你能否提供一些建议? - chain
@Pierre 或许可以帮助你 :) - jczerski
1
@chain 我遇到了同样的问题,并意识到我使用的一个库依赖于 Google Android 库 » 4.1.1.4,其中包含占用 res 目录的资源文件 sym_keyboard_feedback_delete.png 等。从库依赖中排除此模块已解决此问题。 排除组:'com.google.android' https://stackoverflow.com/questions/53263832/app-bundle-build-fails-because-of-the-sym-keyboard-feedback-delete-png-file/53278859#53278859 - AncientMethods
显示剩余2条评论
2个回答

3

我已经用兼容的aar文件替换了所有的jar文件。但是在生成Android Archive Bundle时仍然出现相同的错误。Caused by: com.android.tools.build.bundletool.exceptions.BundleFileTypesException$FileUsesReservedNameException: 文件 ‘root/res/drawable-xxxhdpi-v4/ic_launcher_background.png’ 使用了保留的文件或目录名称‘res’。 - chandan kumar

-2

其中一种解决方案是获取此 Google 模块的预编译库文件。我认为进行一些谷歌搜索会有所帮助。我本人也会这样做,但我没有得到您所要求的模块名称。

因此,请尝试搜索 lib.so 文件,这样您将获得模块提供的功能,现在就不需要编译它了。

另一个优点是从头开始编译模块会导致更大的 apk 大小,而使用预编译库会导致更小的 apk 大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接