Java 如何在Android应用程序中打包本机库?

Java 如何在Android应用程序中打包本机库?,java,android,java-native-interface,libgdx,Java,Android,Java Native Interface,Libgdx,我试图在Android应用程序中包含一个使用本机代码的预构建库,但没有成功。我不知道我做错了什么 完成的.apk文件的内容如下所示。(我正在使用NetBeans和Ant构建所有东西——如果有人需要,我可以包括Ant脚本的相关部分。) 在应用程序代码中,我有: static { System.loadLibrary("gdx"); System.loadLibrary("androidgl20"); } 但我一直收到错误:java.lang.UnsatisfiedLinkErro

我试图在Android应用程序中包含一个使用本机代码的预构建库,但没有成功。我不知道我做错了什么

完成的.apk文件的内容如下所示。(我正在使用NetBeans和Ant构建所有东西——如果有人需要,我可以包括Ant脚本的相关部分。)

在应用程序代码中,我有:

static {
    System.loadLibrary("gdx");
    System.loadLibrary("androidgl20");
}
但我一直收到错误:
java.lang.UnsatisfiedLinkError:Library gdx not found

我把.so文件放对地方了吗?是否需要执行其他操作以确保运行时知道它们?

System.load()需要共享对象的确切路径(包括全名)。这就是你做错的地方


使用
System.loadLibrary(“gdx”)

您确定满足“gdx”的所有依赖项吗?

该库中是否有未实现的本机函数?

这是正确的,但我仍然得到错误。因此,它必须是除此之外的其他内容。您能验证库是否被放置在您的/data/data/(package.name)/lib目录中吗?明白了!这是两个错误的组合:如您所指出的,不使用loadLibrary,并将目录命名为“libs”而不是“lib”。libgdx发行版中只包含两个.so文件,我拥有这两个文件,因此可以安全地假设满足了所有依赖项。这就是文件中所说的。尝试使用ldd(或类似的东西),并且非常清楚依赖关系。还要检查是否实现了所有本机函数。。。
static {
    System.loadLibrary("gdx");
    System.loadLibrary("androidgl20");
}