关闭

Android studio ndk 第一个测试

标签: androidndk
128人阅读 评论(0) 收藏 举报
分类:

1.配置android studio ndk环境
这里写图片描述
主要是ndk location,sdk 路径要正确
2. 在你的工程目录下新建一个类,在类里面什么你的方法,主要是要声明一个native关键字。
这里写图片描述
现在方法是红色的没有关系
3.用命令生成.h文件,然后通过.h文件创建我们实际要实现方法的.c文件。
(1)首先我们要重新编译一些,因为我们创建TestJni类后还没有生成类在我们的build文件里面如下图
这里写图片描述
注意这个位置是在 app/build/intermediates/classes/debug目录下,这个是工程编译后存放地址( 切记不要再往下面层级跳了,不然javah -jni命令不行,我也不知道为何,我试了很久,感觉是android studio的一个bug)
这里写图片描述
这里写图片描述
这个时候说明已经有了,因为我们后面步骤需要跳转到这个地址 进行生成.h文件
(2)teminal窗口跳转到debug文件下,用javah -jni 工程名.xxx.TestJni 生成.h文件
这里写图片描述
这个时候在debug目录下生成一个.h 文件 ,然后在app main目录下新建一个jni 目录,把那个.h文件剪切到jni目录。
这里写图片描述
然后再new 一个.c文件。文件名字你随便取。把.h文件里面的方法声明取过来,然后在参数上不齐,这里只是返回一个简单的字符串,如果想要复杂的逻辑,自己c++写就是了。
.h文件内容
这里写图片描述
.c文件内容
这里写图片描述
可以看出 返回名字是按照一定的规则生成的,这个是jni的规则生成。.c 文件要补足方法 参数,然后返回字符串 ,后来发现这里有点失误,要去掉 jstring 前面的JNIEXPORT 只能有一个返回类型
4. 然后配置app 下面的build.gradle 配置ndk 如图 在android studio 不需要去配置Android.mk文件,系统已经在build的生成上配置了。所有只需要在defaultConfig 配置ndk子项,
ndk {
// 设置支持的 SO 库构架
moduleName= ‘test’
abiFilters ‘armeabi’, ‘armeabi-v7a’, ‘arm64-v8a’, ‘x86’, ‘x86_64’, ‘mips’, ‘mips64’
}
其中moduleName的名字很重要,是一个表示,对生成的so文件的名称和加载时候的标示。abiFilters 是生成不同指令集的c代码,不需要修改,直接用就是。
sourceSets {
main {
jniLibs.srcDirs = [‘libs’]
}
}
是配置src的目录,需要配置。
新建c文件
修改的build.gradle
这里写图片描述
这里就是android studio 已经帮我们编写的android.mk文件
这个文件和用eclipse自己编写的文件差不多吧
这里写图片描述
这个文件需要第5步做了后,点击编译后生成的
5.最后修改全局的gradle.properties 这个文件修改配置ndk设置
android.useDeprecatedNdk=true
这里写图片描述
6.然后就是怎么使用的问题了。
现在稍微修改下我们编写的文件
这里写图片描述
这里写图片描述
这里你就随便找个地方测试下返回的值是否是你在c文件写的一样
这里写图片描述
这里就是我们编写的so文件地方
这里写图片描述

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7690次
    • 积分:153
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章分类