【Android】Android Studio NDK 开发
Android Studio NDK 开发
记录在Android Studio中NDK简单开发的步骤
用到的Android Studio版本为3.5。
配置NDK
下载NDK
一般在SDK下已经有自带的ndk文件夹,如sdk目录下的ndk-bundle文件夹。

如果没有,可以在SDK Manager中下载

下载LLDB、NDK两项
下载完成后,可以在sdk目录下看到ndk的文件夹

配置环境变量
我的电脑-属性-高级系统设置-环境变量
新建一个ANDROID_NDK变量,配置上ndk文件夹的位置(在这个文件夹下可以看ndk-build.cmd等文件)

然后将这个变量加入到path变量中

生成SO库
新建一个Hello.java文件,里面增加一个本地方法
public static native String hi();
执行Build-Make Project,在app\build\intermediates\javac\debug\classes目录下执行以下cmd命令生成头文件:
javah -jni com.wangyz.ndk.Hello
在该目录下,可以看到生成的com_wangyz_ndk_Hello.h文件。
在app/src/main/目录下新建jni目录,将生成的头文件复制到jni目录下。
在jni目录下新建com_wangyz_ndk_Hello.c文件,编写C语言实现代码:
#include "com_wangyz_ndk_Hello.h"
JNIEXPORT jstring JNICALL Java_com_wangyz_ndk_Hello_hi
(JNIEnv *env, jclass clazz){
return (*env)->NewStringUTF(env,"Hello");
}
在jni目录下新建Android.mk文件,内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Hello
LOCAL_SRC_FILES := com_wangyz_ndk_Hello.c
include $(BUILD_SHARED_LIBRARY)
在jni目录下新建Application.mk文件,内容如下:
APP_ABI := all
在该目录下执行cmd命令:
ndk-build
执行后生成所需的so文件。
引用SO库
在app/src/main目录下新建目录jniLibs,将对应的so复制到该目录下:

在Activity中引入:
static {
System.loadLibrary("Hello");
}
使用SO库中的方法
String hi = Hello.hi();
Toast.makeText(getApplicationContext(), hi, Toast.LENGTH_SHORT).show();
Android Studio中NDK的简单开发到此结束。
【Android】Android Studio NDK 开发的更多相关文章
- (原)使用android studio ndk开发流程
先使用android stuido创建一个app工程,创建工程的时候,.gradle目录结构下为2.8目录.(note:2.10目录为后续更新结果出现.) 依次修改上述红色方框标注部分内容: 1)修改 ...
- android studio ndk 开发入门
ndk 开发没什么神秘的ndk 说白了就是一个交叉编译的工具链,用它来生成各个CPU架构下的静态或动态链接库,linux 下就是 .a 和 .so 文件.原理就是 java 通过 JNI 和 C.C+ ...
- Android Studio NDK开发-JNI调用Java方法
相对于NDK来说SDK里面有更多API可以调用,有时候我们在做NDK开发的时候,需要在JNI直接Java中的方法和变量,比如callback,系统信息等.... 如何在JNI中调用Java方法呢?就需 ...
- Android -- Android下的NDK开发(一)
1,NDK是什么?为什么要进行NDK开发? NDK:Native Development Kit.Android应用运行在Dalvik虚拟机中.NDK允许开发人员使用本地代码语言(例如C和C++)实现 ...
- Android学Jni/Ndk 开发记录(一)
治疗拖延症的唯一办法就是:一想起些什么 / 要做些什么就 TM 立马去做! 是的,突然想起我不会 JNI.NDK 开发.解决办法:立马去学! 一:配置 NDK 环境 下载 NDK 写入到配置文件 ...
- Android Studio NDK开发环境搭建
一. 下载安装Android studio 和 NDK 二. 在Android studio中配置NDK(和SDK配置一样) 三. 用Android studio建立一个工程,打开proj ...
- Android Studio NDK开发入门
从Android Studio 1.3 Beta1开始,就支持了NDK,我目前使用的版本是1.5.首先强调几点. 1.必须安装NDK并配置好环境变量(和配置JDK环境变量如出一辙:新建NDK_HOME ...
- Android Studio NDK开发浅谈
环境: Android Studio 1.1.0 NDK-r10d 1.新建项目--->包名:com.mxl.az.ndk 新建包含native方法的类:JniOperation.class p ...
- Android Studio NDK 开发 问题记录
Android NDK 开发 问题解决 编译:找不到gles3库 使用旧的编译方式,写Android.mk 进行编译.报错如下 gles3/gl3.h no such file or director ...
随机推荐
- base64编码的字符串与图片相互转换
#region 图片转为base64编码的字符串---ImgToBase64String /// <summary> /// 图片转为base64编码的字符串 /// </summa ...
- telnet远程登陆
这篇文章是第二次更新,内容为telnet远程登陆路由器,非常简单.直接进入正题,在网络配通的情况下,为路由器设置登陆密码和管理员密码,就可以通过pc机远程管理路由器或交换机. 目的: 网络拓扑图如下, ...
- C#实现在foreach遍历中删除集合中的元素(方法总结)
目录 方法一:采用for循环,并且从尾到头遍历 方法二:使用递归 方法三:通过泛型类实现IEnumerator 在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致 ...
- 【CSS】309- 复习 CSS盒模型
点击上方"前端自习课"关注,学习起来~ 一.概念 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距(margin).边框(border).内边距(padding ...
- 视频来了!Visual Studio Online 东半球首秀 @ .NET Conf 2019
2019 年 11 月 9 日,.NET Conf 2019 中国峰会于上海中谷小南国花园酒店举行,全国的 .NET 大咖相聚上海. 这次我演讲的主题是<Visual Studio Code — ...
- 如何在Sublime中打开左侧文件夹导航
Sublime中我们可以通过菜单栏的View->Side Bar->Hide Side Bar(Show Side Bar)来显示和隐藏左侧的导航栏,如下图所示. 但是,这里只会显示当前打 ...
- Internet History,Technology,and Security -Technology: Application Protocols(Week7)
Week7 Technology: Application Protocols This week, we’ll be covering application protocols. With rel ...
- C++生成完全二叉树
C++生成完全二叉树 2019-12-20 By Gauss 1.背景介绍 完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的.对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都 ...
- 通过 Drone Rest API 获取构建记录日志
Drone是一款CICD工具,提供rest API,简单介绍下如何使用API 获取构建日志. 获取token 登录进入drone,点头像,在菜单里选择token 复制token即可 API 介绍 Dr ...
- 小程序 wx.request请求
1.wx.request相当于发送ajax请求 微信官方解释 参数 属性 类型 默认值 必填 说明 url string 是 开发者服务器接口地址 data string/object/ArrayBu ...