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

并生产:

在此处输入图像描述

是否可以使用结果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)

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

4

2 回答 2

3

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

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

于 2012-08-30T19:20:47.997 回答
0

Via VitamioBundle,

You no need to do re-using code:

is it possible to use the resulted libhello-jni.so and distribute this to others instead of the actual C code? For example modifying the Android.mk and replacing com_myproject_MyActivity.c to something.so in order to include the shared library?

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

VitamioBundle can be considered as shared library,

Therefore, you can use it as your Android Library.

Let's fun.

于 2013-11-18T09:29:30.813 回答