我有一些C文件,我想在我的java-android项目中使用。使用JNI包装器和NDK创建SO。我能够从我的java代码中访问C方法。一切正常。 现在我想创建一个这个项目的jar文件,以便进一步向其他开发人员提供它(这样可以隐藏其他人的C代码)。 这是我面临一些问题的地方。当我尝试在其他项目中使用创建的JAR时,我开始得到" UnsatisfiedLink Error"在加载SO时。 SO在同一个项目中加载完全正常,但是当创建具有相同项目的jar并尝试在另一个项目中使用它时,它会导致问题。 *使用Eclipse。
答案 0 :(得分:0)
使用eclipse / ant时,需要单独分发.jar和.so文件。其他开发人员必须将.so文件重新集成到lib/ABI
文件夹中。
您可能会发现一些hacky方法可以使用仅包含.so文件的其他jar文件来集成.so文件,但这并不会改变您需要单独分发它们的事实。
要将您的.so文件作为单个文件分发,您应该构建.aar而不是 .jar 。 Android Studio / gradle可直接使用这些文件, .so 文件直接集成在aar文件的jni/ABI
文件夹下。