如何将动态c ++库添加到Android源代码?

时间:2013-08-06 15:49:42

标签: android c++

我需要将我的原生库添加到Android源代码,其他应用程序可以使用它(在代码中调用此库中的函数)。我需要使用像嵌入这样的库,而不是将它添加到我希望使用它的每个项目中。但我无法找到有关此事的信息。

请告诉我如何执行此操作。遗憾

1 个答案:

答案 0 :(得分:3)

据我了解,您要做的是在Android上运行c / c ++代码。我是对的吗?

为了能够做到这一点,你应该使用Android NDK来构建你的本机库,然后将它加载到java代码中。

安装ndk后,您需要按照4个简单的步骤在Android上运行本机代码:

1)为您的本机代码创建Java“包装器” - for。例如。创建名为MyNatives的类,它将保存使用native关键字声明的方法。这告诉编译器,此方法的实现是在本机库中完成的。创建静态初始化程序,它将加载库。例如:

    public class MyNatives { 
        static {
            System.loadLibrary("hello-jni"); 
        }
        public void native nativeMethod(int x); 
    }

2)编译代码,并为您的本机类运行名为javah的工具(有一些eclipsee插件可以为您执行此操作,例如。sequoyah

    cd <your project path>
    mkdir jni
    javah -d jni -classpath bin/classes com.example.MyNatives

这将在jni目录中生成标题(android项目中的所有本机代码都应该在此目录中)

3)从生成的标题

添加方法的实现

4)为android构建系统和构建库创建makefile。 Makefile应命名为Android.mk。它使用了一些特定的变量和宏,有关详细信息,请参阅NDK文档,例如:

    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)
    # your library name
    LOCAL_MODULE    := hello-jni

    # all source files
    LOCAL_SRC_FILES := hello-jni.c

    include $(BUILD_SHARED_LIBRARY)

到buld库只需从项目根目录

中调用ndk-build

有关详细信息,请参阅Android NDK文档。希望它有所帮助。