我正在尝试构建应用捆绑包,但出现以下错误:
File 'root/lib/x86_64-MacOSX-gpp/jni/libjunixsocket-native-2.0.4.jnilib' uses reserved file or directory name 'lib'.
对于我从类似问题中看到的内容,此问题通常可以通过解决项目结构中的依赖项或文件来解决,但在这种情况下,如果我没有记错的话,它似乎指向应用程序体系结构中涉及的本机库。有什么想法可以解决这个问题吗?
答案 0 :(得分:1)
您似乎正在将一个依赖项添加为jar
而不是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的限制也更严格,以确保您不要无意间放置不必要的文件,这些文件会不必要地增加应用程序的大小。
答案 1 :(得分:0)
确定它现在正在工作!我曾经发现问题的步骤(感谢@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'