Android Studio 使用NDK编程
2015-08-25 16:01
337 查看
基本步骤:
1.编写A类,生成A.class
2.生成A.h
3.编写A.cpp
4.配置生成.so
5.loadLibrary,调用native方法
Step1:编写A类,生成A.class
示例:
Step2.生成A.h
通过javah命令,将class文件转换成头文件
示例:
头文件会在jni目录下生成
示例:
Step3.编写A.cpp
Step4.配置生成.so
build.gradle 增加生成so的名称配置,还可以增加其他配置
示例:
Step5.loadLibrary,调用native方法
其实之前写java类时已经写了,主要是这一句
调用
1.编写A类,生成A.class
2.生成A.h
3.编写A.cpp
4.配置生成.so
5.loadLibrary,调用native方法
Step1:编写A类,生成A.class
示例:
[code]public class TestNdk { public native String getStr(String str); static { System.loadLibrary("JniDemo"); } }
Step2.生成A.h
通过javah命令,将class文件转换成头文件
示例:
[code]D:\workspace_studio\dev_launcher_bugfix\launcher\src\main>javah -d jni -classpat h D:\androidsdk\platforms\android-21\android.jar;..\..\build\intermediates\class es\debug com.ksmobile.launcher.custom.TestNdk
头文件会在jni目录下生成
示例:
[code]/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_ksmobile_launcher_custom_TestNdk */ #ifndef _Included_com_ksmobile_launcher_custom_TestNdk #define _Included_com_ksmobile_launcher_custom_TestNdk #ifdef __cplusplus extern "C" { #endif /* * Class: com_ksmobile_launcher_custom_TestNdk * Method: getStr * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_ksmobile_launcher_custom_TestNdk_getStr (JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif
Step3.编写A.cpp
[code]/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_ksmobile_launcher_custom_TestNdk */ #ifndef _Included_com_ksmobile_launcher_custom_TestNdk #define _Included_com_ksmobile_launcher_custom_TestNdk #ifdef __cplusplus extern "C" { #endif /* * Class: com_ksmobile_launcher_custom_TestNdk * Method: getStr * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_ksmobile_launcher_custom_TestNdk_getStr (JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif
Step4.配置生成.so
build.gradle 增加生成so的名称配置,还可以增加其他配置
示例:
[code]defaultConfig { applicationId "com.ksmobile.launcher" minSdkVersion 14 targetSdkVersion 17 ndk{ moduleName "JniDemo" //设置库(so)文件名称 } }
Step5.loadLibrary,调用native方法
其实之前写java类时已经写了,主要是这一句
[code]static { System.loadLibrary("JniDemo"); }
调用
[code]Log.d("","ndk:str:"+new TestNdk().getStr("arg str"));
相关文章推荐
- android解析xml格式数据
- Android异步消息处理机制完全解析,带你从源码的角度彻底理解
- android MTK驱动背光唤醒流程
- 离线安装ADT 23.0.4遇到的问题与解决方法
- Android 触摸手势基础 官方文档概览
- AndroidStudio使用GreenDao实战
- 在Android程序中保存全局变量
- android 学习笔记 读取系统联系人
- Android-画廊实现 (Gallery , ImageSwitch)
- android——如何从一个activity中退出程序
- android沉浸式状态栏设置(4.4以上版本)
- 百度定位Sdk 162错误解决方法之Android Studio
- Android 模式 持续更新
- 曲线解决Android中对布局的截屏
- Android Studio上使用GBK编码
- Android自定义日期滚动控件
- Android Studio 获取数字签名信息(SHA1)
- android学习笔记4 - Visibility控件的可见性
- Android SurfaceView + MediaPlayer实现视频播放器
- android中读取原始(Raw)资源