Android中使用NDK
首先用Android Studio下载NDK

这个比较简单,就不多说了
1.写调用jni的Java代码
新建一个JniUtils类
 public class JniUtils {
     static {
         System.loadLibrary("test");
     }
     public native String getString();
 }
代码会报错,先不管,在后面解决跟方便:)
然后修改MainActivity(主要用于显示结果)
 public class MainActivity extends AppCompatActivity {
     private TextView tv;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         tv= (TextView) findViewById(R.id.tv);
         JniUtils jni=new JniUtils();
         tv.setText(jni.getString());
     }
 }
2.修改配置文件
在app对应的build.gradle文件
在defaultConfig下添加NDK的配置,如下
...
defaultConfig {
applicationId "com.vonnie.ndkexample"//你的包名
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk {
moduleName "test" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。目前可有可无。
}
}
...
之后在gradle.properties文件的末尾添加
android.useDeprecatedNdk=true
然后点击Sync Now,开始同步
3.写C的代码
同步完成后,就可以处理1中的错误代码了,鼠标点中报错的getString()函数按ALT+ENT键(Windows下的自动提示错误的快捷键)。

选择Create function,就可以创建一个test.C的文件了(值根据你所加载的库的名字所创建的),修改文件如下
#include <jni.h>
JNIEXPORT jstring JNICALL
Java_com_kun_ndkexample_JniUtils_getString(JNIEnv *env, jobject instance) {
return (*env)->NewStringUTF(env,"Android Studio NDK JNI developer from test!");
}
现在运行一下程序就ok了

如果有朋友遇到问题,欢迎留言
Android中使用NDK的更多相关文章
- Android中NDK的搭建及简单使用 Android.mk相关介绍 JNI的使用
		Android中NDK的搭建及简单使用: 使用NDK,简述其重要步骤:.搭建NDK环境(作用:用于自动生成jni下的.c对应的so文件)---到Android NDK官网或Android官网下载ndk ... 
- 在Android studio中进行NDK开发
		在Android studio中进行NDK开发 分类: Android平台 软硬件环境 ubuntu kylin 14.04 红米note增强版 Android studio 0.8.6 ndk ... 
- 如何在Android Studio中指定NDK位置?
		如何在Android Studio中指定NDK位置? 问题描述 NDK已经手工下载解包在本地: D:\Portable\android-ndk-r13b 每次创建支持C++项目时,都提示NDK没配置, ... 
- android studio使用ndk,jni随记
		1.下载ndk(会下载到sdk目录下) 2.配置 3.配置build.gradle(app) android { defaultConfig { ndk { moduleName "JniD ... 
- Android Native 代码NDK开发学习笔记
		引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ... 
- Android APP使用NDK编译后的ffmpeg库出现undefined reference to 'posix_memalign'错误
		在android程序中使用NDK编译后的ffmpeg库的时候出现了如下错误: jni/libs/libavutil.a(mem.o): in function av_malloc:libavutil/ ... 
- Android JNI  和 NDK
		1.Android NDK 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第 ... 
- Android Studio JNI/NDK 编程简介(一)
		首先说一下概念及相关的东西: JNI : JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始 ... 
- Android 中JNI创建实例
		参考文档: http://blog.sina.com.cn/s/blog_a11f64590101924l.html http://www.cnblogs.com/hoys/archive/2010/ ... 
随机推荐
- MySQL学习系列一---命令行连接mysql和执行sql文件
			1.命令行连接mysql #mysql -h(主机) -u(用户名) -p (数据库名) mysql -hlocalhost -uroot -p testdb Enter password: **** ... 
- ortoiseSVN无法编辑日志信息的解决方法
			提交时忘记编写日志,想重新编辑日志信息,弹出错误提示: DAV 请求失败:可能是版本库的 pre-revprop-change 钩子执行失败或者不存在 至少有一个属性变更失败:版本库未改变 设置属性 ... 
- IOS UTI统一类型标识符:判断文件类型通过后缀
			今天在学习文档和数据共享中,首先讲的处理统一类型标识符UTI.第一次见,所以记下来以备之用,首先了解UTI和MIME的概念 1.同一类型标识符(Uniform Type Identifier,UTI) ... 
- 关于结构体和C++类的内存地址问题
			关于结构体和C++类的内存地址问题 今天终于有时间写点东西了~ 太爽了 *_* 很多人都知道C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样 ... 
- BZOJ 4259 残缺的字符串(FFT)
			[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4259 [题目大意] 给出两个包含*和小写字母的字符串,*为适配符,可以和任何字符匹配, ... 
- NYOJ541 最强DE 战斗力(第五届省赛试题)
			最强DE 战斗力 时间限制:1000 ms | 内存限制:65535 KB 难度: 描述 春秋战国时期,赵国地大物博,资源非常丰富,人民安居乐业.但许多国家对它虎视眈眈,准备联合起来对赵国发起一场 ... 
- Element DOM Tree jQuery plugin – Firebug like functionality | RockingCode
			Element DOM Tree jQuery plugin – Firebug like functionality | RockingCode Element DOM Tree jQuery pl ... 
- tree(简单并差集)
			tree Accepts: 156 Submissions: 807 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65 ... 
- 超级密码(bfs)
			超级密码 Time Limit : 20000/10000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ... 
- CentOS 6.4 U盘启动盘制作、安装及遇到的问题解决
			用UltraISO Premium Edition 9.3 制作的CentOS 6.4 U盘安装盘, 制作过程參考我写的百度经验:UltraISO制作U盘系统盘安装CentOS经验分享 安装时提示P ... 
