2016-11-18 58 views
1

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

+0

您不能直接在手机上安装.aar存档,因为它们用于库项目。我想你只是指.apk档案。 – anthonymonori

+0

对不起应该说我也尝试过使用AOSP生成APK的Android.mk里面的aar。以下位置包含从AOSP/android/out/target/product/generic/data/app/MyApplicationName生成的APK。当我拿起这个APK并将其传输到我的手机时,它会在启动时崩溃,并且出现同样的不满意的错误。 – AConsiglio

+0

我还增加了APK到/封装/应用/ MyApplicationName – AConsiglio

回答

0

AOSP试图找到我的APK使用无论从系统/ lib目录供应商/ lib目录文件夹,并因为它是不是有它导致UnsatisfiedLinkError中的.so。因此,通过将.so目标文件目录添加到这些位置,APK在启动之后可以在模拟器内正常启动。这也可以通过修改Android.mk并将这些行添加到文件来完成。

包括$(CLEAR_VARS)
LOCAL_MODULE:= MYFILE
LOCAL_SRC_FILES:= LIB/myfile.so#或任何你。所以位于
LOCAL_MODULE_TAGS:=可选
LOCAL_MODULE_SUFFIX:=。所以
LOCAL_MODULE_CLASS: = SHARED_LIBRARIES
include $(BUILD_PREBUILT)

+0

感谢您的解答,它是在主Android,mk或jni目录下添加的吗? – sandeepmaaram

+1

@sandeepmaaram所有这些都会被添加到你的Android.mk文件里面,它会根据你的LOCAL_SRC_FILES生成一个.so文件。您也可以手动将生成的.so文件添加到您正在构建的AOSP文件夹内的那些目录下。 – AConsiglio

+0

非常感谢,从上面的代码“LOCAL_SRC_FILES:= lib/myfile.so#或上面查询.so所在位置”的意思.so文件路径aosp右例如。出/目标/系统/ LIB/myfile.so。那么在jni文件夹下的Android.mk代码如何? 在此先感谢。 – sandeepmaaram

0

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

听起来你正在构建应用程序与本机库和包括创建.apk文件只捆绑一些体系结构类型到它。如果你有本地库,确保包括所有的体系结构类型(通常是86和ARMv7做这项工作,但总是先咨询你的兼容性清单),确保如果你这样做ABI splitting您正在使用的权APK

请consule以下指南,以确保您有the NDK integration set up correctly

+0

OP正在讨论将一个'apk'包含到AOSP中,这与在运行的操作系统上部署应用程序不同。 – Onik