2

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

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

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

4

2 回答 2

4

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

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

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

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

于 2019-03-29T18:09:14.783 回答
3

好的,它现在正在工作!我用来发现问题的步骤(感谢@Pierre 指出我正确的方向)

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

在依赖图中搜索与问题相关的库名称(在我的例子中,我搜索了 socket,例如 libjunixsocket 不匹配)。

在依赖树上向上走,我意识到它是由 'io.voucherify.android.client:voucherify-android-sdk:2.1.0' 依赖引起的。

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

implementation 'io.voucherify.android.client:voucherify-android-sdk:2.1.0@aar'
于 2019-08-14T09:16:56.430 回答