繁体   English   中英

尝试构建android应用程序捆绑包时出现“使用保留文件或目录名称'lib'”错误

[英]“Uses reserved file or directory name 'lib'” error when trying to build android app bundle

我正在尝试构建应用程序捆绑包,但出现以下错误:

File 'root/lib/x86_64-MacOSX-gpp/jni/libjunixsocket-native-2.0.4.jnilib' uses reserved file or directory name 'lib'.

对于我从类似问题中看到的内容,此问题通常可以通过解决项目结构中的依赖项或文件来解决,但在这种情况下,如果我没有记错的话,它似乎指向应用程序体系结构中涉及的本机库。 任何想法如何解决这个问题?

看起来您正在将依赖项添加为jar而不是aar

aar包含应在应用程序aar哪些文件视为Android资源,本机库等的信息。 jar只是没有Android概念的简单文件列表。 因为您所依赖的jar包含目录lib ,这些文件通常最终会被视为本机库,但是由于这些文件来自jar而不是aar,因此生成系统会警告它不太可能是本机库可能会在运行时产生意想不到的后果。

尝试将该库打包为.aar而不是.jar 请参阅此文档: https : //developer.android.com/studio/projects/android-library

编辑:请注意,如果该文件按原样包含在APK中,则无法由Android平台加载,因此,即使先前的构建系统允许您将任何内容放入APK中,Android App Bundle的限制也要严格得多,以确保您不会意外地放入不必要的文件,而不必要的文件会不必要地增加应用程序的大小。

好的,现在可以工作了! 我曾经发现问题的步骤(感谢@Pierre向我指出正确的方向)

从您的终端运行gradle build --scan或转到Android Studio中的Gradle选项卡,选择:app,help和androidDependencies以查看您的依赖关系图。

在依赖关系图中搜索与问题相关的库名(在我的情况下,我搜索套接字,例如,与libjunixsocket不匹配)。

在依赖关系树上往上走,我意识到它是由“ io.voucherify.android.client:voucherify-android-sdk:2.1.0”依赖关系引起的。

我只是在依赖项实现的末尾添加了@aar,并设法构建了应用程序捆绑包。

implementation 'io.voucherify.android.client:voucherify-android-sdk:2.1.0@aar'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM