2012-08-30 47 views
3

我发现了很多教程,展示了如何使用NDK开始开发Android应用程序。重复使用代码Android NDK

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

请考虑以下两个教程:

  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.csomething.so到包括共享库?:

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

任何建议或教程欢迎。提前致谢。

回答

3

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

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

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库。

让我们开心。