android ndk开发dome,Android Studio NDK编程-环境搭建及Hello!

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

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

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

8f23c4946ea4d34cd0cbf6c8775d48e5.png四,在MainActivity中添加以下代码:android

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

d114c56fcbdb5b0ca9305fa6caa637ab.png

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

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

d179d3941b7b045c0b56d84d08a2c154.png使用Android studio2.2 就是这锤子图标!工具

六,经过class文件生成头文件!gradle

b70bd0044f9cdc41a3c5335746dc23ab.png(1)经过Terminal 中的命令来生成:ui

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

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

d05fdcb3edceb6c720699a946a2a9bb2.png

你们看了,是否是有点晕圈啊,虽然能够复制路径,但若是每次都这样就太不方便了!!

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

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

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

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

b8ad7a78e15dbefb84dabc6c4c40acd4.png

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

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

添加ndk-build配置以下:fb28a526678388665c34041c819d2bb6.png

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 中,就右击该类生成!

0b30b80e8d8c0089be7a723dfde77b97.png

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

0ad897fa538abc1fe22443386bdf6c1f.png

如今ok了,快捷就是爽啊!!!

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

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

62d196ed2a5b67c760fa53c2db0ecb4a.png

注:

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

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

以下图:

212299c9951d1ce1d37419e06d32df62.png

b02f7eaa42180dbb8790bbda35cf362d.png

添加以下代码:

217aed3a315ae75dde4498ec7e4d9c23.png

八,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"

ad2213201caa6bf6edd50356a7237e96.png

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

如图:

a30d44149f707d11ee2eaeb619309cdb.png

注:

把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

如图:

236b476e656da568c6021debe796c581.png

最后,运行成功OK!

02bb3db032364bb5080fd339dc29bfe6.png

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值