使用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库。可以按需添加。
网友评论