1

我正在开发一个使用 libgdx 和子弹物理引擎的安卓游戏。我可以毫无问题地编译游戏,但是当我将子弹添加到游戏中时,它会因以下错误而崩溃:

.... UnsatisfiedLinkError:无法加载项目符号:findLibrary 返回 null ...

我可以很好地编译子弹库,但是当我尝试在我的代码中使用它时它崩溃了。有趣的是,我有另一个使用子弹但没有 libgdx 的项目,它可以正常工作。有谁知道可能是什么问题?据我所知,ndk-build 只生成 .so 文件和 obj 文件夹。

看起来子弹 .so 文件不包含在 .apk 中,因此崩溃了。我怎样才能检查它是否是?有没有人遇到过类似的问题?

谢谢您的帮助!

4

4 回答 4

1

我已经解决了我的问题。问题是 libgdx 在 libs 文件夹中有 armeabi 和 armeabi-v7a 文件夹,而子弹只有 armeabi。所以我删除了 armeabi-v7a,它神奇地工作了!

于 2012-01-16T22:38:10.483 回答
0

检查传递给 System.loadLibrary 的名称是否与 .apk 文件中的 .so 名称相同。Apk 文件实际上是一个 zip 文件 - 因此您可以将其重命名为 .zip 扩展名,解压缩并检查其中的 libs 文件夹。

因此,如果您在 apk 文件的 libs 文件夹下有名为 libFooBar.so 的文件,那么您应该将以下名称之一传递给 loadLibary - “FooBar”、“libFooBar”或“libFooBar.so”。

于 2012-01-16T22:36:28.077 回答
0

当我开始使用 .cpp 本机文件而不是 .c 本机文件时,我遇到了这个问题。问题是我没有考虑.cpp 构建工具中的名称修改。尝试在您的本机方法定义周围添加以下内容:

#ifdef __cplusplus 
extern "C" {
#endif
    /* ... */
#ifdef __cplusplus
}
#endif
于 2013-04-05T05:08:01.220 回答
0

我有类似的问题

上面的帖子很有帮助,我检查了我的game.apk,so库在lib/armeabi下,但是当我在eclipse中构建它时,它在libs/armeabi中。

我认为它通常应该在 libs 下,如果有人可以在构建时帮助我将 lib 更改为 libs 将非常有帮助。

于 2013-04-16T11:04:50.730 回答