一,下载 安装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. SharePoint服务器端对象模型 之 使用CAML进展数据查询

    SharePoint服务器端对象模型 之 使用CAML进行数据查询 一.概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列 ...

  2. Html5的一些基础知识

    <!DOCTYPE html><html><head><meta charset="utf-8" /><title>页面 ...

  3. AES 加密工具类

    /** * AES 是一种可逆加密算法,对用户的敏感信息加密处理 对原始数据进行AES加密后,在进行Base64编码转化: */public class AESOperator { /* * 加密用的 ...

  4. 设置Hyper V

    1.打开服务器管理器 2.添加角色和功能 3.安装类型 -> 基于角色或基于功能的安装 4.服务器选择 -> 下一步 5.服务器角色 勾选"Hyper V"

  5. NSError

    -(NSString * )backErrorString{ //    self.code; //http://blog.csdn.net/linkai5696/article/details/59 ...

  6. SQL Server 2008 R2的发布订阅配置实践

    纸上得来终觉浅,绝知此事要躬行.搞技术尤其如此,看别人配置SQL SERVER的复制,发布-订阅.镜像.日志传送者方面的文章,感觉挺简单,好像轻轻松松的,但是当你自己去实践的时候,你会发现还真不是那么 ...

  7. MongoDB学习笔记~批量插入方法的实现

    回到目录 批量插入在EF时代大叔就自己封装过,原理是将多次SQL连接和多次向SQL发送的指令减少到1次,或者1000条数据1次,而对于EF产生的语句来说,这无疑是性能高效的,因为EF这边在处理时,每个 ...

  8. SQL闲杂知识点汇总【2015年12月】

    2015.12.14 知识点1:DEFAULT VALUES实现插入行 --临时创建临时表 CREATE TABLE [dbo].[tblTmp] ( iTmpID ,) NOT NULL PRIMA ...

  9. hive建表与数据的导入导出

    建表: create EXTERNAL table tabtext(IMSI string,MDN string,MEID string,NAI string,DestinationIP string ...

  10. logback配置详解4-实例配置

    莫个银行项目中实际引用的logback实例,提供大家参考!!!! [html] view plaincopy <?xml version="1.0" encoding=&qu ...