• NDK plugin来构建JNI项目(相对于手动构建)


    http://blog.csdn.net/codezjx/article/details/8879670

    1.添加ndk环境支持

    Android Tools -> Add Native Support...

    2.需要手动添加include头目录,否则jni.h不被识别

    项目Properties -> C/C++ General -> Path and Symbols
    include标签c,cpp,点Add添加头文件路径,FileSystem浏览自己NDK的头文件路径,比如我的:

    E:/Documents/Android/sdk/ndk-bundle/platforms/android-19/arch-arm/usr/include

    3.需要手动生成.h文件:

    cmd(powershell报错)下

    E:DocumentsworkspaceTestNDKPlugin>javah -classpath E:DocumentsAndroidsdkplatformsandroid-25android.jar;./bin/classes com.my.testndkplugin.MainActivity (要包含android环境类,否则类找不到)

    powershell下:

    E:DocumentsworkspaceTestNDKPlugin> javah -classpath bin/classes -bootclasspath E:DocumentsAndroidsdkplatformsandroid-25android.jar com.my.testndkplugin.MainActivity

     并且这种方式生成的头文件有很多其他undef信息,如下:

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class com_my_testndkplugin_MainActivity */
    
    #ifndef _Included_com_my_testndkplugin_MainActivity
    #define _Included_com_my_testndkplugin_MainActivity
    #ifdef __cplusplus
    extern "C" {
    #endif
    #undef com_my_testndkplugin_MainActivity_BIND_ABOVE_CLIENT
    #define com_my_testndkplugin_MainActivity_BIND_ABOVE_CLIENT 8L
    #undef com_my_testndkplugin_MainActivity_BIND_ADJUST_WITH_ACTIVITY
    #define com_my_testndkplugin_MainActivity_BIND_ADJUST_WITH_ACTIVITY 128L
    #undef com_my_testndkplugin_MainActivity_BIND_ALLOW_OOM_MANAGEMENT
    #define com_my_testndkplugin_MainActivity_BIND_ALLOW_OOM_MANAGEMENT 16L
    #undef com_my_testndkplugin_MainActivity_BIND_AUTO_CREATE
    #define com_my_testndkplugin_MainActivity_BIND_AUTO_CREATE 1L
    #undef com_my_testndkplugin_MainActivity_BIND_DEBUG_UNBIND
    #define com_my_testndkplugin_MainActivity_BIND_DEBUG_UNBIND 2L
    #undef com_my_testndkplugin_MainActivity_BIND_EXTERNAL_SERVICE
    #define com_my_testndkplugin_MainActivity_BIND_EXTERNAL_SERVICE -2147483648L
    #undef com_my_testndkplugin_MainActivity_BIND_IMPORTANT
    #define com_my_testndkplugin_MainActivity_BIND_IMPORTANT 64L
    #undef com_my_testndkplugin_MainActivity_BIND_NOT_FOREGROUND
    #define com_my_testndkplugin_MainActivity_BIND_NOT_FOREGROUND 4L
    #undef com_my_testndkplugin_MainActivity_BIND_WAIVE_PRIORITY
    #define com_my_testndkplugin_MainActivity_BIND_WAIVE_PRIORITY 32L
    #undef com_my_testndkplugin_MainActivity_CONTEXT_IGNORE_SECURITY
    #define com_my_testndkplugin_MainActivity_CONTEXT_IGNORE_SECURITY 2L
    #undef com_my_testndkplugin_MainActivity_CONTEXT_INCLUDE_CODE
    #define com_my_testndkplugin_MainActivity_CONTEXT_INCLUDE_CODE 1L
    #undef com_my_testndkplugin_MainActivity_CONTEXT_RESTRICTED
    #define com_my_testndkplugin_MainActivity_CONTEXT_RESTRICTED 4L
    #undef com_my_testndkplugin_MainActivity_MODE_APPEND
    #define com_my_testndkplugin_MainActivity_MODE_APPEND 32768L
    #undef com_my_testndkplugin_MainActivity_MODE_ENABLE_WRITE_AHEAD_LOGGING
    #define com_my_testndkplugin_MainActivity_MODE_ENABLE_WRITE_AHEAD_LOGGING 8L
    #undef com_my_testndkplugin_MainActivity_MODE_MULTI_PROCESS
    #define com_my_testndkplugin_MainActivity_MODE_MULTI_PROCESS 4L
    #undef com_my_testndkplugin_MainActivity_MODE_NO_LOCALIZED_COLLATORS
    #define com_my_testndkplugin_MainActivity_MODE_NO_LOCALIZED_COLLATORS 16L
    #undef com_my_testndkplugin_MainActivity_MODE_PRIVATE
    #define com_my_testndkplugin_MainActivity_MODE_PRIVATE 0L
    #undef com_my_testndkplugin_MainActivity_MODE_WORLD_READABLE
    #define com_my_testndkplugin_MainActivity_MODE_WORLD_READABLE 1L
    #undef com_my_testndkplugin_MainActivity_MODE_WORLD_WRITEABLE
    #define com_my_testndkplugin_MainActivity_MODE_WORLD_WRITEABLE 2L
    #undef com_my_testndkplugin_MainActivity_DEFAULT_KEYS_DIALER
    #define com_my_testndkplugin_MainActivity_DEFAULT_KEYS_DIALER 1L
    #undef com_my_testndkplugin_MainActivity_DEFAULT_KEYS_DISABLE
    #define com_my_testndkplugin_MainActivity_DEFAULT_KEYS_DISABLE 0L
    #undef com_my_testndkplugin_MainActivity_DEFAULT_KEYS_SEARCH_GLOBAL
    #define com_my_testndkplugin_MainActivity_DEFAULT_KEYS_SEARCH_GLOBAL 4L
    #undef com_my_testndkplugin_MainActivity_DEFAULT_KEYS_SEARCH_LOCAL
    #define com_my_testndkplugin_MainActivity_DEFAULT_KEYS_SEARCH_LOCAL 3L
    #undef com_my_testndkplugin_MainActivity_DEFAULT_KEYS_SHORTCUT
    #define com_my_testndkplugin_MainActivity_DEFAULT_KEYS_SHORTCUT 2L
    #undef com_my_testndkplugin_MainActivity_RESULT_CANCELED
    #define com_my_testndkplugin_MainActivity_RESULT_CANCELED 0L
    #undef com_my_testndkplugin_MainActivity_RESULT_FIRST_USER
    #define com_my_testndkplugin_MainActivity_RESULT_FIRST_USER 1L
    #undef com_my_testndkplugin_MainActivity_RESULT_OK
    #define com_my_testndkplugin_MainActivity_RESULT_OK -1L
    /*
     * Class:     com_my_testndkplugin_MainActivity
     * Method:    StringFromJni
     * Signature: ()Ljava/lang/String;
     */
    JNIEXPORT jstring JNICALL Java_com_my_testndkplugin_MainActivity_StringFromJni
      (JNIEnv *, jobject);
    
    #ifdef __cplusplus
    }
    #endif
    #endif

    4.编辑C文件,编译ok

     

    此时的编译命令为:

    若要ndk编译生成gdb.setup和gdbserver
    编译的时候,在$ndk-build指令后面加多一行 NDK_DEBUG=1,即$ndk-build NDK_DEBUG=1,则最后在libs目录下可以看到gdb.setup和gdbserver。

    结果如下图:

     =======================手动构建ndk工程======================

    1.手动生成.h文件

    2.手动创建jni目录,Android.mk、Application.mk、c文件

    3.手动配置ndkBuilder

    4.编译

  • 相关阅读:
    Jenkins+ant循环执行jmeter文件
    Jmeter接口模版说明
    jenkins与远程服务器配置SSH免密登录
    xcode developer tools简介
    MySQL之模糊查询
    MySQL排名函数
    openblas下载安装与使用
    CVX安装使用
    AMD包下载及使用
    Python及相应软件安装
  • 原文地址:https://www.cnblogs.com/xunbu7/p/6868439.html
Copyright © 2020-2023  润新知