我发现了许多教程,展示了如何使用NDK开始开发Android应用程序。
但我有一个相当“轻松/愚蠢”的问题:
请考虑以下两个教程:
现在,在第二篇教程中,他们正在构建hello-jni
示例。
我的问题是:
使用ndk-build
并制作:
是否可以使用结果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)
欢迎任何建议或教程。提前谢谢。
答案 0 :(得分:3)
您可以将预先构建的NDK库复制到libs/armeabi
(或其所用的任何架构)中,然后在运行时加载。从Android构建系统的角度来看,它只是包含在APK中的另一个文件。
然而,问题是JNI函数名称按惯例包括它们将属于的包的名称和类;所以从SO消费者项目的角度来看,它的使用看起来相当不自然,因为JNI函数都不适合它的类。您可能必须提供声明相应Java类的伴随JAR。
答案 1 :(得分:0)
您无需重复使用代码:
是否可以使用生成的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库。
让我们玩得开心。