重复使用 Android NDK 代码

3

我发现很多教程都展示了如何使用NDK开始开发Android应用程序。

但是我有一个相对“简单/愚蠢”的问题:

请考虑以下两个教程:

  1. http://mobile.tutsplus.com/tutorials/android/ndk-tutorial/
  2. http://www.indiedb.com/tutorials/creating-compiling-and-deploying-native-projects-from-the-android-ndk
  3. http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
  4. http://marakana.com/forums/android/examples/49.html
现在,在第二个教程中,他们正在构建hello-jni示例。

我的问题是:

使用ndk-build之后,是否生成了:

enter image description here

是否可以使用生成的 libhello-jni.so 并将其分发给他人,而不是实际的 C 代码?

例如,修改 Android.mk 并将 com_myproject_MyActivity.c 替换为 something.so 以便包括共享库:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := com_myproject_MyActivity.c
include $(BUILD_SHARED_LIBRARY)

任何建议或教程都受欢迎。提前致谢。
2个回答

3
您可以通过将预构建的 NDK 库复制到 libs/armeabi(或其他适用架构),然后在运行时加载来使用它。从 Android 构建系统的角度来看,这只是要包含在 APK 中的另一个文件而已。
然而,问题在于 JNI 函数名称按照惯例包括它们所属的包和类的名称;因此,从 SO 消费者项目的角度来看,它的使用看起来相当不自然,因为没有 JNI 函数适合其类。您可能需要提供一个伴随 JAR 文件,在其中声明相应的 Java 类。

0

通过VitamioBundle,

您无需重新编写代码:

有没有可能使用生成的libhello-jni.so并将其分发给其他人,而不是实际的C代码?例如,修改Android.mk并将com_myproject_MyActivity.c替换为something.so以便包含共享库?

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := com_myproject_MyActivity.c
include $(BUILD_SHARED_LIBRARY)

VitamioBundle可以被认为是共享库,

因此,您可以将其用作Android Library。

让我们开始吧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接