Android Studio ndk-Jni开发
2016-06-05 14:35
309 查看
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。它使得Java虚拟机内部运行的Java代码能够与其它编程语言(C&C++)编写的应用程序和库进行交互操作.
2.点击Build -> Rebuild Project
3.打开Android Studio 的Terminal并进入app/build/intermediates/classes/debug目录
4.输入javah -jni <包名>.<类名>
5.在app/main目录下新建jni目录,并将之前生成的.h文件剪切到该目录下
2.在build.gradle文件的defaultConfig括号内添加如下内容
3.配置完毕后,点击Build -> Rebuild Project
C问文件建好后点击Build -> Rebuild Project,此时JniUtils类里就不会报红色了
1.使用Android Studio新建一个项目
2.新建JniUtils类并实现native方法
public class JniUtils { public static native String sayHello(); }
3.生成.h文件
1. 点击Build -> Clean Project2.点击Build -> Rebuild Project
3.打开Android Studio 的Terminal并进入app/build/intermediates/classes/debug目录
cd app/build/intermediates/classes/debug
4.输入javah -jni <包名>.<类名>
javah -jni com.coolke.helloworld.JniUtils
5.在app/main目录下新建jni目录,并将之前生成的.h文件剪切到该目录下
4.配置jni开发的相关设置
1.在gradle.properties文件末尾添加android.useDeprecatedNdk=true2.在build.gradle文件的defaultConfig括号内添加如下内容
ndk { moduleName "hello" //生成的so名字 abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库,目前可有可无。 }
3.配置完毕后,点击Build -> Rebuild Project
4.在jni目录下新建.c文件,文件名随意
#include <jni.h> // // Created by coolke on 16-6-4. // JNIEXPORT jstring JNICALL Java_com_coolke_helloworld_JniUtils_sayHello(JNIEnv *env, jclass obj) { return (*env)->NewStringUTF(env,"hello"); }
C问文件建好后点击Build -> Rebuild Project,此时JniUtils类里就不会报红色了
5.在JniUtils类中加入加载库的代码
static { System.loadLibrary("hello"); }
6.使用
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeText(this,JniUtils.sayHello(),Toast.LENGTH_SHORT).show(); } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题