ndk-build生成so库备忘

使用ndk-build命令生成so库,需要4个文件:

  • 头文件(例如test.h)
  • c文件(例如test.c或test.cpp)
  • Android.mk
  • Application.mk

1. 头文件模板

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_aiden_jnitest_MyJNITest */

#ifndef _Included_com_aiden_jnitest_MyJNITest
#define _Included_com_aiden_jnitest_MyJNITest
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_aiden_jnitest_MyJNITest
 * Method:    getString
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_aiden_jnitest_MyJNITest_getString
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

2. c文件模板

#include "jni.h"
#include "com_aiden_jnitest_MyJNITest.h"

JNIEXPORT jstring JNICALL Java_com_aiden_jnitest_MyJNITest_getString
  (JNIEnv *env, jclass jz){

  return (*env)->NewStringUTF(env, "JNI is powerful and fun");

  }

3. Android.mk文件模板

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := MyTest
LOCAL_SRC_FILES := Test.c
include $(BUILD_SHARED_LIBRARY)

执行ndk-build后会生成libMyTest.so的库文件。

4. Application.mk文件模板

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_PLATFORM := android-14
APP_ABI := armeabi-v7a arm64-v8a

表示会按这2个平台生成2组相应的so库。可以按需添加。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容