NDK开发小示例(二)
来源:互联网 发布:用java做一个登录界面 编辑:程序博客网 时间:2024/05/16 15:33
1.写native代码用于调用c代码,在java中写
public class JNI {
static {
System.loadLibrary("Hello");
}
/*
* 定义native方法
* 调用c代码对应的方法
* */
public native String sayHello();
}
2.编译动态链接库,什么也不配置,编译的动态链接库是以当前的module名称为库名称
lib+modulename+.so
最好是配置动态链接库的名称,在build.gradle中
defaultConfig {
applicationId "www.basketi.cn.basketball.ccalljavademo"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
ndk{
moduleName ("Hello");
abiFilters "armeabi", "armeabi-v7a", "x86"
}
ndk{
ldLibs "log"
}
}
3.加载动态链接库
static {
//加载动态链接库
System.loadLibrary("Hello");
}
4.写对应的c代码
java中native去调用c代码
给含有native方法的类生成头文件,如JNI类,然后根据头文件中的方法,写对应的c代码
c代码
#include <stdio.h>
#include <stdlib.h>
#include <jni.h>
/*
jstring 返回值
Java_全类名_方法名
JNIEnv* env 里面有很多方法
jobject jobj 谁调用了这个方法是谁的实例
*/
jstring Java_www_basketi_cn_basketball_ndkdemo_JNI_sayHello(JNIEnv* env,jobject jobj){
// jstring (*NewString)(JNIEnv*, const jchar*);
char* text="I am from c";
return (*env)->NewStringUTF(env,text);
}
5.执行java调用c的代码
public class JNI {
static {
System.loadLibrary("Hello");
}
/*
* 定义native方法
* 调用c代码对应的方法
* */
public native String sayHello();
}
2.编译动态链接库,什么也不配置,编译的动态链接库是以当前的module名称为库名称
lib+modulename+.so
最好是配置动态链接库的名称,在build.gradle中
defaultConfig {
applicationId "www.basketi.cn.basketball.ccalljavademo"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
ndk{
moduleName ("Hello");
abiFilters "armeabi", "armeabi-v7a", "x86"
}
ndk{
ldLibs "log"
}
}
3.加载动态链接库
static {
//加载动态链接库
System.loadLibrary("Hello");
}
4.写对应的c代码
java中native去调用c代码
给含有native方法的类生成头文件,如JNI类,然后根据头文件中的方法,写对应的c代码
c代码
#include <stdio.h>
#include <stdlib.h>
#include <jni.h>
/*
jstring 返回值
Java_全类名_方法名
JNIEnv* env 里面有很多方法
jobject jobj 谁调用了这个方法是谁的实例
*/
jstring Java_www_basketi_cn_basketball_ndkdemo_JNI_sayHello(JNIEnv* env,jobject jobj){
// jstring (*NewString)(JNIEnv*, const jchar*);
char* text="I am from c";
return (*env)->NewStringUTF(env,text);
}
5.执行java调用c的代码
String result=new JNI().sayHello();
源码位置:http://download.csdn.net/detail/lzq520210/9733426
0 0
- NDK开发小示例(二)
- Android NDK开发-----示例
- JNI和NDK编程(二)NDK的开发流程
- Android NDK 开发之(二) 牛刀小试
- Android NDK 开发之(二) 牛刀小试
- Android NDK开发学习(二)
- Android NDK开发(二)数组
- Android——NDK开发(二)
- JNI/NDK开发指南(二)
- Android学习笔记-NDK开发(二)
- android ndk开发二
- NDK开发系列二
- Android 新手listview小示例(二)
- Android NDK开发(一)环境搭建及运行示例
- Android NDK开发(一)环境搭建及运行示例
- android开发之绝对安全(二) NDK开发
- Android开发篇(二)-- JNI 与 NDK开发
- Android NDK开发技巧二
- android笔记-蓝牙开发
- FFMPEG视音频编解码零基础学习方法
- 常用的MySQL数据类型汇总
- 关于mybatis单独传入String时出现There is no getter for property named 'keyWord' in class 'java.lang.String'解决
- 说得再好不如脚踏实地,国产游戏引擎现状浅析
- NDK开发小示例(二)
- ROS学习(十一):ROS URDF->model
- 在码云上用GIT上传自己的代码
- JAVA之模拟注册登录幸运抽奖
- 深入Java集合学习系列:HashMap的实现原理
- java基础算法之兔子总数
- Android中常见的图片处理框架的简单使用
- unity3d引擎的游戏的脚本DUMP及HOOK方案优化
- git的恢复操作