如何优雅地使用NDK
来源:互联网 发布:地摊叫卖录音软件 编辑:程序博客网 时间:2024/04/30 00:53
原文地址
在Android Studio上使用了一段时间的NDK,感觉官方的插件com.android.tools.build.gradle-experimental还是不够稳定,存在一定问题,不过谷歌也声明了这个插件是在实验性阶段。幸好官方在Android Studio上提供了另一种方式使用NDK,这篇博客就讲讲这种到目前为止我觉得非常赞的方法。
开发环境
- 基础的安卓开发环境:Android Studio、SDK、JDK
- 下载好NDK,自己手动下载或者用SDK工具下载都可以
我使用的版本:Android Studio 1.5.1
配置常用命令
NDK开发比较常用的命令就是生成头文件、构建so包,在android studio上我们可以先配置好命令,使用起来就很方便了,这是我感觉最赞的地方。
如下图所示,我添加了三个命令,按加号添加
其中一个命令的配置详情如下图:
命令配置参数:
javah用于生成头文件
Program:$JDKPath$/bin/javah
Parameters: -encoding UTF-8 -d ../jni -jni $FileClass$
注意:这个命令我加上了-encoding UTF-8
指定编码,你可以改成你工程的编码。
Working directory: $SourcepathEntry$\..\java
ndk-build用于构建so包
Program: 你的NDK目录\build\ndk-build.cmd
注意:windows用ndk-build.cmd
,MAC/Linux用ndk-build
Parameters: 什么都不用填
Working directory:$ModuleFileDir$\src\main
ndk-build clean清除so包
Program: 你的NDK目录\build\ndk-build.cmd
注意:windows用ndk-build.cmd
,MAC/Linux用ndk-build
Parameters: clean
Working directory:$ModuleFileDir$\src\main
配置完三个命令之后,你就可以在右键菜单中找到这几个命令,可以直接使用。如下图演示了生成NdkTest类的头文件
配置工程
让工程项目使用NDK,需要做一些配置工作
在local.properties文件中填写使用的NDK目录:
ndk.dir=你的NDK目录的绝对路径
在gradle.properties文件中添加如下代码
android.useDeprecatedNdk = true
在module的build.gradle添加如下代码:
android { defaultConfig { ndk { moduleName "NdkTest"//定义NDKlibrary的名字 //ldLibs "log" 添加log库,看自己需求 } } //这里设置目录,默认就这样写就可以了 sourceSets { main { jni.srcDir "src/main/jni" jniLibs.srcDir "src/main/libs" } }}
Hello word
按上面的步骤全都配置完之后就可以在Android Studio上享受NDK了。
下面写一个简单的返回Hello word字符串的程序。
首先在java中声明一个本地方法,并加载本地库,如下:
public class NdkTest{ static { System.loadLibrary("NdkTest"); } public static native String getString();}
生成它的头文件(自动生成的名字是包名+类名me_majiajie_ndktest_NdkTest.h
),并且创建c/c++文件(NdkTest.cpp),如下:
#include "me_majiajie_ndktest_NdkTest.h"JNIEXPORT jstring JNICALL Java_me_majiajie_ndktest_NdkTest_getString (JNIEnv *env, jclass jc){ return env->NewStringUTF("Hello word !!!");}
在jni目录创建一个文件命名为Android.mk
,填入以下内容
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := NdkTestLOCAL_SRC_FILES := NdkTest.cppinclude $(BUILD_SHARED_LIBRARY)
然后在jni目录创建一个文件命名为Application.mk
,填入以下内容
APP_MODULES := NdkTestAPP_ABI := all
注意:Android.mk
和Application.mk
都是NDK默认的配置文件,关于这两个文件的详细介绍可以看官网。
最后生成so包就可以了,记住每次修改C文件都需要重新生成so包:
- 如何优雅地使用NDK
- 如何优雅地使用NDK[功能补充]
- 如何优雅地使用Win10
- 如何优雅地使用 KVO
- 如何优雅地使用Vim?(趣味篇)
- 如何优雅地使用Vim?(美化篇)
- 如何优雅地使用Vim?(实用篇)
- 如何优雅地使用 Stack Overflow?
- 如何优雅地使用iPad阅读源代码
- 如何优雅地使用 Sublime Text
- 如何优雅地使用Sublime Text
- 如何优雅地使用Sublime Text
- 如何优雅地使用Sublime Text3
- 如何优雅地使用 Stack Overflow?
- 如何优雅地使用 Windows 10 ?
- 如何优雅地使用git(一)
- 如何优雅地使用git(二)
- 如何更优雅地使用Static Cell
- Linux中如何开启8080端口供外界访问
- MIPS cpu_save_nonscratch cpu_restore_nonscratch
- Eclipse打印Java的char默认值,出现方框原因
- MYSQL的常用命令和增删改查语句和数据类型
- strcpy_s 和 strcat_s的用法
- 如何优雅地使用NDK
- java线程同步——信号量(Semaphore)
- Linux系统下JavaJDK,Eclipse,Androrid studio的安装教程
- Java基础------知识点整理(二)
- HDU 4324 Triangle LOVE 拓扑排序
- Debugging Under Unix: gdb Tutorial
- 数据结构实验之栈:行编辑器
- VB 课感受
- 单链表是否有环并如何找到环入口