重用代码Android NDK

时间:2012-08-30 11:02:53

标签: android android-ndk android-library

我发现了许多教程,展示了如何使用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
  5. 现在,在第二篇教程中,他们正在构建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 个答案:

答案 0 :(得分:3)

您可以将预先构建的NDK库复制到libs/armeabi(或其所用的任何架构)中,然后在运行时加载。从Android构建系统的角度来看,它只是包含在APK中的另一个文件。

然而,问题是JNI函数名称按惯例包括它们将属于的包的名称和类;所以从SO消费者项目的角度来看,它的使用看起来相当不自然,因为JNI函数都不适合它的类。您可能必须提供声明相应Java类的伴随JAR。

答案 1 :(得分: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库。

让我们玩得开心。