如何用Android.mk编译Cmake文件?

时间:2014-07-02 07:42:35

标签: android c++ x86 cmake arm

我需要为示例ARM项目生成CPP结构共享库。

示例项目包含:

  • 的CMakeLists.txt
  • some.cpp(s)
  • Some.h(s)
  • some.tab.cpp.make(S)
  • some.tab.hpp.cmake(s)

现在,我想为不同的Android项目创建一个共享库。我尝试使用[Android-Cmake][1]进行编译,但它生成X86架构库而不是ARM。

如果有其他方法,请告诉我。我也可以在Android平台上为所有版本运行X86吗?

编辑:

这是我的Android.mk:

LOCAL_PATH := $(call my-dir)/../   //Path is according JNI Folder
SRC_TOP_DIR := $(LOCAL_PATH)

include $(CLEAR_VARS)

LOCAL_MODULE := smileParse
LOCAL_CFLAGS := -DANDROID

LOCAL_SRC_FILES := main.cpp test.cpp smamain.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include $(LOCAL_PATH)/

1 个答案:

答案 0 :(得分:2)

在项目中创建一个名为JNI的文件夹:

enter image description here

在JNI文件夹中创建或编辑Android.mk,设置包含和库路径,

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := some.cpp
include $(BUILD_SHARED_LIBRARY)

声明一个java包装类,声明一个本机函数:

public class JWrapperSomeClass {
    public native void Demo(int para);
}

使用 javah 命令为C ++方法包装器生成函数签名:

javah -jni -classpath bin/classes/ -d jni com.example.Your.Package.Class

用C ++编辑代码

转到项目文件夹,运行命令:

$ANDROID_NDK/ndk-build

其中$ ANDROID_NDK是安装android NDK的文件夹

这就是它。有关更多详细信息,您可能会阅读NDK或JNI文档。