一,下载 安装android-ndk开发包

NDK各个版本链接
二,新建项目NDKDemo,选择空Activity就可以;
(注:Android studio 2.2,可通过SDK Tools 添加LLDB,CMake,更方便的开发jni程序了)

三,按F12,配置项目NDK路径:



四,在MainActivity中添加如下代码:

static {
    System.loadLibrary("MyJni");//导入生成的链接库文件
}
public native String getStringFromNative();//本地方法
public native String getString_From_c();

红色代码是本地方法!不知是否Android studio对ndk支持不太好所致,但不影响开发JNI程序!

在最新的Android Studio2.2 能很好的支持ndk了,不再出现红色!
五,Make Project一下,生成class文件!


使用Android studio2.2 就是这锤子图标!

六,通过class文件生成头文件!


(1)通过Terminal 中的命令来生成:

输入javah -d jni -classpath ../../build/intermediates/classes/debug com.it5.ndkdemo
(注意前后有英文的;号隔开的哈)!

注:../后面的就是class文件的目录!!

大家看了,是不是有点晕圈啊,虽然可以复制路径,但如果每次都这样就太不方便了!!

另可以在工具中配置命令的快捷键,来完成!

(2)Settings -> External tools中配置javah,ndk-build快捷方式!!

javah(生成头文件),ndk-build(编译)

打开External Tools 点加号添加javah:如下图:

参数配置:
Program: $JDKPath$\bin\javah.exe 
Parameters: -classpath . -jni -o $ModuleFileDir$/src/main/jni/$Prompt$ $FileClass$ 
Working directory: $ModuleFileDir$\src\main\Java 
Parameters的另外一种写法 -classpath . -jni -d $ModuleFileDir$/src/main/jni $FileClass$

按上图依次填好,就好了!!

添加ndk-build配置如下:

Program: D:\Android_NDK\android-ndk-r11b\ndk-build.cmd

Working directory: $ProjectFileDir$\app\src\main 
这样配置后,以后只要把需要运行的类上右键 --> External Tools-->javah/ndk-build!

就可完成头文件及编译的工作!
哈哈!! 爽歪歪!

(3)用命令生成头文件!!

选中需要执行javah命令的类,然后右击,按照下图选择命令即可。
注:生成 .h头文件,所以一般是在含有 native字样的本地方法的类!

本地方法写在MainActivity.java 中,就右击该类生成!

这样就会在main文件下创建jni文件夹并生成 .h头文件成功!

现在ok了,快捷就是爽啊!!!

接下来,就是编写C/C++的代码了!

七,在jni目录编写C代码!

注:

项目结构切换成 Android状态时,jni文件夹显示成 cpp名字!

当切换成project时就显示成jni文件夹!!

如下图:

 

添加如下代码:

八,Gradle文件添加配置!

(1)在module中的build.gradle中defaultConfig{}标志里添加!

ndk{
        moduleName "MyJni"
        ldLibs "log"
        abiFilters "armeabi","armeabi-v7a","x86"
}

编译会根据配置生成不同的目录来存放 .so文件!

参数配置:

在defaultConfig中添加一个ndk{}

ndk{}可添加的属性如下:

moduleName "xxx" :        编译后so库的名字

ldLibs "xxx" "xxx" :     连接的库,可以有多个

abiFilters "xxx" "xxx" :

so库运行的cpu架构,有armeabi armeabi-v7a arm64-v8a x86 x86_64 mips mips64这些,常用的是armeabi和armeabi-v7a

stl "xxx" :                       C++ runtime support library,共有九种

cFlags "xxx" "xxx" :     编译选项

例如  :

要使工具自动识别C++提示只要如下语句:

stl "gnustl_shared"
cFlags "-IE:/Android_NDK/android-ndk-r11b/sources/cxx-stl/gnu-libstdc++/4.9/include"

注:Android.mk文件 Android Studio会自动生成!与Eclipse不同!

如图:

注:

把Android.mk文件拷贝到 main/jni文件夹下

右键--->External Tools -->ndk-build  生成 .so文件!!

如做如下配置 .so 就会生成在指定的目录下:

sourceSets.main{     jni.srcDirs = []         jniLibs.srcDir "src/main/libs"    }

(2)在项目的gradle.properties 文件中添加

android.useDeprecatedNdk=true

如图:

最后,运行成功OK!

这是之前的配置方法,有个不方便的地方就是无法DEBUG jni,要另添加插件,对写C/C++代码提示功能也不尽人意!

不过本篇是以Android Studio 2.2来配置滴!!在2.2版本,对NDK支持也越来越完善了,可以在

SDK Tool 中添加 CMake,LLDB来创建ndk项目并支持调试,自动编译,对C/C++的代码提示功能也增强了!

Android Studio NDK编程-环境搭建及Hello!的更多相关文章

  1. Android Studio NDK编程-环境搭建及Hello!

    一,下载 安装android-ndk开发包 NDK各个版本链接二,新建项目NDKDemo,选择空Activity就可以:(注:Android studio 2.2,可通过SDK Tools 添加LLD ...

  2. Android Studio NDK开发环境搭建

    一.   下载安装Android studio 和 NDK 二.   在Android studio中配置NDK(和SDK配置一样) 三.   用Android studio建立一个工程,打开proj ...

  3. Android Studio NDK编程初探

    继上一篇学习了如何使用NDK编译FFMPEG后,接下来就是要学习如何在Android Studio中使用了. 经过参考和一系列的摸索,记录下具体步骤. 创建C++ Support的Android St ...

  4. Android下NDK开发环境搭建

    Android下NDK开发环境搭建 1.     AndroidNDK安装与配置 1.1  NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部 ...

  5. android Jni NDK开发环境搭建及其简单实例的编写

    android  Jni  NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...

  6. android studio 安装与环境搭建

    转摘自:http://blog.csdn.net/zhanghefu/article/details/9286123 第一章   andriod studio 安装与环境搭建 一.Android St ...

  7. Android Studio Ndk 编程

    如今开发Android程序基本都已经从Eclipse转到了Android Studio了, 近期项目需求, 须要用到ndk编程, 于是就折腾了一下. 开发环境 Android Studio 1.5.1 ...

  8. Android Studio for windows环境搭建

    Android Studio环境搭建 个人博客 欢迎大家多多关注该独立博客:   csdn博客  一直想把自己的经验分享出来,记得上次写博客还是ok6410的笔记,感觉时代久远啊.记得那个时候我还一心 ...

  9. Android Studio NDK环境配置

    本文参考:Android Studio NDK环境配置及JNI使用方法:http://blog.csdn.net/tongseng/article/details/53005123 并添加自己的实践: ...

随机推荐

  1. Thrift-java实例

    ➠更多技术干货请戳:听云博客 Thrift实例1 功能描述:客户端与服务器端分别是两个应用,先启动服务器端,再启动客户端,实现执行客户端运行服务器端的加法方法. 源码截图(源码在附件中): 客户端: ...

  2. 【转载】ReactiveX 的理念和特点

    原作者地址:http://www.open-open.com/lib/view/open1440166491833.html ReactiveX是Reactive Extensions的缩写,一般简写 ...

  3. J2ObjC 1.0 发布,将 Java 转换为 Objective-C

    J2ObjC 是一个Google开发的开源工具,用于将Java代码转换为Objective-C代码.其目的是为了能在iOS平台上重用Android平台.web服务器端的Java代码.服务器端代码的转换 ...

  4. ObjectAnimator.start()工作原理

    分析下面一段代码的逻辑 objectAnimator.start(); 他会调用父类的start(),即ValueAnimator,我们分析valueAnimator.start()即可 ValueA ...

  5. SqlHelper类

    using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...

  6. Oracle RAMN 备份解决方案一例

    以前在博客里面介绍了RMAN备份脚本一列分享,通过RMAN备份到本地路径,然后通过FTP将备份文件上传到FTP服务器. 下面简单介绍另外一例RMAN备份解决方案,下面是我简单画的一个图(很少画图,感觉 ...

  7. winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

    DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx> ...

  8. WPF DEV控件-ChartControl用法

    WPF常用的第三方控件集,DevExpress 下面介绍如何生成Chart界面: <dxc:ChartControl AnimationMode="OnDataChanged" ...

  9. linux小技巧

    主机禁止ping: 修改/proc/sys/net/ipv4/icmp_echo_ignore_all 值为1 默认是0 echo '1' > /proc/sys/net/ipv4/icmp_e ...

  10. DIV+CSS 图文混排的图片居中办法

    不少人为了让 Div 图文混排的图片可以居中,给 IMG 套各式各样的 SPAN.DIV.LI 等等,以便于使用 text-align来进行居中. <div>图文混排 <br> ...