美文网首页
ndk-build生成so库备忘

ndk-build生成so库备忘

作者: 汶水一方 | 来源:发表于2018-03-31 09:53 被阅读69次

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

    相关文章

      网友评论

          本文标题:ndk-build生成so库备忘

          本文链接:https://www.haomeiwen.com/subject/wzfgcftx.html