Android Studio NDK编程初探
继上一篇学习了如何使用NDK编译FFMPEG后,接下来就是要学习如何在Android Studio中使用了。
经过参考和一系列的摸索,记录下具体步骤。
创建C++ Support的Android Studio工程
创建C++ Support的Android Studio工程,记得勾选,其他默认下一步就好

默认创建的项目会自动创建一个native-lib.cpp的文件,这个文件后面会编译成对应的so文件。在MainActivity中,系统默认添加了如下native代码:
1public native String ();打开native-lib.cpp文件,可以看到里面含有一个native方法。方法的命名格式
Java_包名_类名_方法名中间的点分号改为下划线。1234567891011#include <string>extern "C"JNIEXPORT jstringJNICALLJava_com_example_simonzheng_ndktest_MainActivity_stringFromJNI(JNIEnv *env,jobject ) {std::string hello = "Hello from C++";return env->NewStringUTF(hello.c_str());}编译运行默认的项目程序,这里假如之前没有按照NDK环境的话,Gradle会报错。只需要按照上一篇的步骤在sdk中下载好NDK所需的依赖环境即可。运行成功后可以在模拟器中看到默认的App,显示”Hello from C++”。
书写自己的c++文件并调用
回到Android项目,在MainActivity中添加自己的native方法。最后在activity_main.xml文件中添加一个TextView,在MainActivity中设置这个TextView的显示文本
12TextView tv1 = findViewById(R.id.myTest_test);tv1.setText(myTest());Android Studio会自动提示

可以选择直接在默认的native-lib.cpp文件中创建,或者自己创建新的cpp文件。这里选择了自己创建新文件。
创建一个叫mytest-lib.cpp的文件,并实现方法,这里注意方法的命名规则:
123456789101112#include <string>extern "C"JNIEXPORT jstring JNICALLJava_com_example_simonzheng_ndktest_MainActivity_myTest2(JNIEnv *env, jobject instance) {// TODOstd::string myTest = "Hello My Test Library!";return env->NewStringUTF(myTest.c_str());}然后编译项目会发现,对应的会生成mytest-lib.cpp.o文件

别忘记回到MainActivity中加载这个库
123static {System.loadLibrary("mytest-lib");}编译运行项目,可以在模拟器中看到对应的效果

Android Studio NDK编程初探的更多相关文章
- Android Studio Ndk 编程
如今开发Android程序基本都已经从Eclipse转到了Android Studio了, 近期项目需求, 须要用到ndk编程, 于是就折腾了一下. 开发环境 Android Studio 1.5.1 ...
- Android Studio NDK编程-环境搭建及Hello!
一,下载 安装android-ndk开发包 NDK各个版本链接二,新建项目NDKDemo,选择空Activity就可以:(注:Android studio 2.2,可通过SDK Tools 添加LLD ...
- Android Studio NDK编程-环境搭建及Hello!
一,下载 安装android-ndk开发包 NDK各个版本链接二,新建项目NDKDemo,选择空Activity就可以:(注:Android studio 2.2,可通过SDK Tools 添加LLD ...
- Android Studio NDK环境配置
本文参考:Android Studio NDK环境配置及JNI使用方法:http://blog.csdn.net/tongseng/article/details/53005123 并添加自己的实践: ...
- 【Android】Android Studio NDK 开发
Android Studio NDK 开发 记录在Android Studio中NDK简单开发的步骤 用到的Android Studio版本为3.5. 配置NDK 下载NDK 一般在SDK下已经有自带 ...
- Android Studio NDK初探
Android Studio中实现NDK开发较之前Eclipse+Cygwin,方便了很多. 本文以最简单的从C程序中获取字符串,并显示到MainActivity的TextView上为例进行NDK开发 ...
- android studio ndk配置和ndk开发
配置开发环境: 1:下载ndk,导入android studio中. 2:在项目中引入NDK 3:在计算机path变量中导入NDK路径,在编译.h文件的时候会用到. 一:建立java的native ...
- android studio ndk使用openMP
好久没碰ndk了,之前都是在eclipse下写makefile配置c++程序的,现在发现主流都是用android studio,eclipse俨然已经被遗弃了,正好最近项目需要用openMP做算法加速 ...
- Android Studio NDK 学习之接受Java传入的字符串
本博客是基于Android Studio 1.3 preview版本,且默认你已经安装了Android SDK, Android NDK. 用Android Studio新建一个工程叫Prompt,其 ...
随机推荐
- 创建Maven项目时Maven中的GroupID和ArtifactID的意思
GroupID 是项目组织中唯一的标识符,对应Java包结构,在项目中看到的是main目录里java的目录结构. ArtifactID是项目的唯一的标识符,实际对应项目的名称(就是idea中工程的名字 ...
- tensorflow用法记录
使用 embedding 变量 import tensorflow as tf import numpy as np sess = tf.InteractiveSession() M = list(' ...
- Fabric不支持对同一个数据的并发事务处理
Fabric不支持对同一个数据的并发事务处理,也就是说, 如果我们同时运行了invoke(一),invoke(二),那么只会第一条Transaction成功, 而第二条失败.因为在Committer节 ...
- codeforce 1188A1 Add on a Tree 树
题意:给你一个树,有一种操作,选择两个叶子节点,然后把这两个叶子节点间的路径全部加或减一个值.问你给出的树上的每一条边经过若干次操作是否可以为任意值. 分析:画几个图后可以发现,如果树中存在一个点的度 ...
- 2019-ECfinal-M题-value
题目传送门 sol:每个下标都有选和不选两种情况,所以总方案数是$2^{n}$,在$n$最大是$100000$的情况下不符合要求.可以这样想,假设$i^{p}=k$有符合题目要求的解,还有一个整数$j ...
- Exchang Online 保护策略
一.恶意软件筛选器 1.配置反恶意软件策略 1.1Exchange管理中心->保护->恶意软件筛选器->双击Default->编辑默认的策略 1.2单击“设置”选项,根据需要进 ...
- springboot+solr基本使用
接着上一篇的搭建 首先需要的pom节点有 <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data ...
- java 之断言
今天用idea的智能提示冒出一个assert关键字,愣是没看懂!!!还是太菜了.上网查了一下,这个关键字是断言. 什么是断言? 我也说不清楚,反正就是对jvm的操作.java的错误分为两种,一种叫er ...
- 线性反馈移位寄存器(LFSR)-非线性反馈移位寄存器的verilog实现(产生伪随机数)
一.线性反馈移位寄存器(LFSR) 通过对事先选定的种子做运算使得人工生成的伪随机序列的过程,在实际中,随机种子的选择决定了输出的伪随机序列的不同,也就是说随机种子的选择至关重要. 产生伪随机数的方法 ...
- 解决2013Lost connection to MySQL server during query错误方法
在my.ini配置文件 mysqld 节点下添加 max_allowed_packet = 500M 也就是配置MySQL允许的最大数据包大小,上面的500M你可以根据你的项目修改为你自己的值,只要比 ...