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-/arch-arm/usr/include

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

cmd(powershell报错)下

E:\Documents\workspace\TestNDKPlugin>javah -classpath E:\Documents\Android\sdk\platforms\android-\android.jar;./bin/classes com.my.testndkplugin.MainActivity (要包含android环境类,否则类找不到)

powershell下:

E:\Documents\workspace\TestNDKPlugin> javah -classpath bin/classes -bootclasspath E:\Documents\Android\sdk\platforms\android-\android.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.编译

NDK plugin来构建JNI项目(相对于手动构建)的更多相关文章

  1. [ci]jenkins构建容器项目java-helloworld-非docker plugin模式

    栗子思路说明: 不使用任何docker plugin 使用jenkins server本地(含mvn环境)构建,无jenkins slave jenkins server本地构建的war包,推送dep ...

  2. 使用Gradle构建Android项目

    阅读目录 Gradle是什么? 环境需求 Gradle基本结构 任务task的执行 基本的构建定制 目录配置 签名配置 代码混淆设置 依赖配置 输出不同配置的应用 生成多个渠道包(以Umeng为例) ...

  3. Jenkins中构建Testcomplete项目的方法介绍

    Jenkins的部署在上一篇随笔中已经和大家介绍了,下面我们介绍一下再Jenkins中构建testcomplete项目.我这里使用的是Testcomplete11,下面详细介绍一下构建步骤. 1.Je ...

  4. 【转】使用Eclipse构建Maven项目 (step-by-step)

    安装eclipse 及配置maven时,参考的资料!!! from:http://blog.csdn.net/qjyong/article/details/9098213 Maven这个个项目管理和构 ...

  5. 使用Maven构建Android项目

    http://www.ikoding.com/build-android-project-with-maven/ 之前一直在做WEB前端项目,前段时间接手第一个Android项目,拿到代码之后,先试着 ...

  6. 使用Eclipse构建Maven项目 (step-by-step)

    Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包.本文仅对Eclipse中如何安装.配置和使用Maven进行了介绍.完全step by step. 如果觉得本文 ...

  7. Gradle用户指南(3)-构建Java项目

    1.构建基本的Java项目 为了使用 Java 插件,添加下面代码到构建文件: build.gradle apply plugin: 'java' 这个就是 定义一个 Java 项目的全部.它会将 J ...

  8. 使用Eclipse构建Maven项目 (转)

    Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包.本文仅对Eclipse中如何安装.配置和使用Maven进行了介绍.完全step by step. 如果觉得本文 ...

  9. 构建maven项目3

    1.1.创建Jave Project 1.使用mvn archetype:generate命令,如下所示: mvn archetype:generate -DgroupId=com.mycompany ...

随机推荐

  1. Python常用函数--return 语句

    在Python教程中return 语句是函数中常用的一个语句.return 语句用于从函数中返回,也就是中断函数.我们也可以选择在中断函数时从函数中返回一个值.案例(保存为 function_retu ...

  2. 利用爬虫、SMTP和树莓派3B发送邮件(爬取墨迹天气预报信息)

    -----------------------------------------学无止境----------------------------------------- 前言:大家好,欢迎来到誉雪 ...

  3. VMware实现控制台功能(VMware Remote Console)

    说明: 刚开始一脸懵逼,google了一些资料,发现基本没有能快速落地的,自己做完后梳理了一下发上来供大家参考. 如果帮到你了,请点赞评论关注,以资鼓励,多谢~ 实现VMware控制台功能主要有两种方 ...

  4. python 打包

    一.下载 pip install Pyinstaller 二.使用Pyinstaller 1.使用下载安装的方式安装的Pyinstaller打包方式 将需要打包的文件放在解压得到的Pyinstalle ...

  5. IDEA搭载Tomcat使用JSTL连接Oracle数据库

    1.在IDEA中,JSTL库添加到WEB-INF/lib下面可以直接在JSP页面上通过 <%@ taglib uri="http://java.sun.com/jsp/jstl/cor ...

  6. Ubuntu16.04安装wps办公软件解决文字缺失

    先到wps官网下载linux版wps安装包 选择64位的alpha版本下载: 下载完后,同样是cd到Downloads目录,用dpkg命令来安装它: cd  Downloads/ sudo dpkg ...

  7. Machine Learning笔记整理 ------ (三)基本性能度量

    1. 均方误差,错误率,精度 给定样例集 (Example set): D = {(x1, y1), (x2, y2), (x3, y3), ......, (xm, ym)} 其中xi是对应属性的值 ...

  8. Python3 数据类型-列表

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. 索引如下图: 列表命名(list): 组成:使用[]括起来,并且 ...

  9. LintCode-374.螺旋矩阵

    螺旋矩阵 给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素. 样例 给定如下矩阵: [     [ 1, 2, 3 ],     [ 4, 5, 6 ...

  10. <Effective C++>读书摘要--Ctors、Dtors and Assignment Operators<二>

    <Item 9> Never call virtual functions during construction or destruction 1.you shouldn't call ...