AOSP 本机代码链接错误

AOSP Native Code Linking Error

我创建了一个在 Android Studio 中完美运行的应用程序。如果我生成 AAR 和 APK 并使用这些文件,它们将再次正常工作。我可以在多台设备上安装 APK,并且它可以完美运行。现在,当我在 AOSP 构建中安装 APK 时,我不断收到 java.lang.UnsatisfiedLinkError: 指向调用我的本机方法的第一行代码。我用这个link作为参考Add .apk files in aosp。当我 运行 模拟器并单击我的应用程序时,它崩溃并产生 UnsatisfiedLinkError。如果我使用我的 AAR 文件生成 APK,也会发生同样的事情。再次澄清一下,这只发生在 AOSP 中,在 Android Studio 中使用 AAR 进行其他构建时不会发生,并且无论我将其安装在什么设备上,APK 始终有效。关于为什么会发生这种情况的任何建议都会很棒!

which points to the very first line of code that's calling my native method.

听起来您正在构建包含本机库的应用程序,而您创建的 .APK 仅将 一些 架构类型捆绑到其中。如果您有本机库,请确保包括所有架构类型(通常 x86 和 armv7 可以完成这项工作,但请务必先查阅您的兼容性清单)并确保您是否这样做 ABI splitting 您正在使用正确的 APK

请参考以下指南以确保您有 the NDK integration set up correctly

AOSP 试图从 system/lib vendor/lib [=24= 中找到我的 APK 使用的 .so ] 文件夹,因为它不存在,所以导致了 UnsatisfiedLinkError。因此,通过将 .so 目标文件目录添加到这些位置,之后 APK 可以在模拟器内正常启动。这也可以通过修改 Android.mk 以及将这些行添加到文件中来实现。

包括 $(CLEAR_VARS)
LOCAL_MODULE := 我的文件
LOCAL_SRC_FILES := lib/myfile.so # 或者你的 .so 所在的任何地方
LOCAL_MODULE_TAGS := 可选
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
包括 $(BUILD_PREBUILT)