我创建了一个在Android Studio中完美运行的应用程序。如果我生成AAR和APK并使用这些文件,他们再次正常工作。我可以在几台设备上安装APK,它可以完美运行。现在,当我在AOSP构建中安装APK时,我不断得到一个java.lang.UnsatisfiedLinkError:它指向调用我的本机方法的第一行代码。我使用此链接作为参考Add .apk files in aosp。当我运行模拟器并单击我的应用程序时,它会崩溃并产生UnsatisfiedLinkError。如果我使用我的AAR文件生成APK,会发生同样的事情。只是为了再次澄清,这只发生在AOSP中,当在Android Studio中使用AAR进行其他构建时,它不会发生,并且无论我安装它的设备如何,APK总是有效。关于为什么会发生这种情况的任何建议都会很棒!
答案 0 :(得分:0)
指向调用我的本机方法的第一行代码。
听起来您正在构建包含本机库的应用程序,并且您创建的.APK仅将某些架构类型捆绑到其中。如果您有本机库,请确保包含所有体系结构类型(通常x86和armv7可以完成这项工作,但请务必先咨询您的兼容性检查表)并确保ABI splitting执行此操作正在使用右APK 。
请使用以下指南以确保您拥有the NDK integration set up correctly。
答案 1 :(得分:0)
AOSP试图从 system / lib 或 vendor / lib 文件夹中找到我的APK使用的.so,因为它没有它导致 UnsatisfiedLinkError 。因此,通过将.so对象文件目录添加到这些位置,之后APK在模拟器中启动正常。这也可以通过修改Android.mk以及将这些行添加到文件中来实现。
包括$(CLEAR_VARS)
LOCAL_MODULE:= myfile
LOCAL_SRC_FILES:= lib / myfile.so#或.so所在的任何地方
LOCAL_MODULE_TAGS:=可选
LOCAL_MODULE_SUFFIX:=。so
LOCAL_MODULE_CLASS:= SHARED_LIBRARIES
包括$(BUILD_PREBUILT)