我已使用ndk-build成功链接了Android应用的原生共享库。为了测试JNI调用,我有一个小应用程序只需从库中调用一个函数。我使用Eclipse运行/调试。
在一台PC上,在Windows和Cygwin下,加载库并调用成功。在另一台PC上,在Ubuntu下,同一个应用程序无法调用System.loadLibrary(“...”)。
鉴于它适用于第一台PC,两者之间的唯一区别与Eclipse工作区,操作系统中的搜索路径设置等有关。
不幸的是,我对Unix的使用经验不多,所以可能只是在某处设置共享库的搜索路径。
我的图书馆肯定在那里。它在libs / armeabi中,也在obj / local / armeabi中(不知道为什么,有趣的是它有更大的尺寸),并且它在APK文件中。
任何人都可以给我一个提示吗?那将是最受欢迎的。
P.S。我应该在Windows PC(它工作的地方)上添加它,试图调试本机代码,我已经对Eclipse项目应用了更改,例如将其转换为混合Jave / C ++项目并将其配置为从中构建本机库在Eclipse中。我不知道这些项目设置是否会损害Ubuntu环境;只想添加信息。无论如何,我将应用程序调试为Android(而不是C ++)应用程序。
使用HelloJNI示例从头开始,它可以正常工作。我的Eclipse项目设置肯定存在根本性的错误。所以,在某种程度上,它已经解决了: - )
答案 0 :(得分:1)
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
文件中应该缺少 Android.mk
。我在我的Android.mk
文件中尝试了这个,它对我来说很好。