Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java

转载 2012年03月29日 17:52:20

转自:http://www.android123.com.cn/androidkaifa/686.html

一、 在JNI中执行Java方法

class AndroidJniDemo {
 private native void executeMethod();
 private void show() {
  System.out.println("Java cwj print"); //执行了show方法后打印java层的输出
 }
 public static void main(String args[]) {  //这里我们在J2SE中测试,Android开发者可以放到Activity中的onCreate调用
  AndroidJniDemo ajd = new AndroidJniDemo();
  ajd.executeMethod(); 
 }
 static {
  System.loadLibrary("AndroidJniDemo");
 }
}

下面是JNI代码:

JNIEXPORT void JNICALL
Java_AndroidJniDemo_executeMethod(JNIEnv *env, jobject obj)
{
 jclass clazz = (*env)->GetObjectClass(env, obj); //通过类的对象
 jmethodID mid = (*env)->GetMethodID(env, clazz, "show", "()V"); //查找java中的show方法的ID,最后的签名符号为void类型
 if (mid == NULL) {
  return;   //如果方法ID没有找到
 }

 printf("JNI cwj print"); //从JNI中打印输出

 (*env)->CallVoidMethod(env, obj, mid); //执行show方法
}

相关文章推荐

Android-本地方法C调用Java中的方法/NDK-JNI开发实例(六)

流程:  点击button按钮调用本地方法,本地方法中使用C调用Java中的show()方法; 生成方法的签名: 打印方法签名 项目名-->app-->build-->interm...

Android-本地方法与Java相互调用-自定义ProgressBar(锅炉压力监测例子)/NDK-JNI开发实例(七)

流程: 点击“开始检测按钮”Java调用本地方法startMonitor(),并启动一个线程,本地方法使用C来实现;本地方法的实现 产生随机数传给Java中的show()方法,show()方法中调用M...

Android NDK混合使用java和C/C++代码--Hello JNI

简单记录下java调用C/C++函数其实很简单, 需要以下几个步骤: 1.在java代码中声明本地方法 2.实现Java本地接口(JNI)粘合层 3.创建Android Makefile文件 ...

JNI/NDK开发指南(六)——C/C++访问Java实例方法和静态方法

通过前面5章的学习,我们知道了如何通过JNI函数来访问JVM中的基本数据类型、字符串和数组这些数据类型。下一步我们来学习本地代码如何与JVM中任意对象的属性和方法进行交互。比如本地代码调用Java层某...
  • xyang81
  • xyang81
  • 2015年01月11日 01:29
  • 17091

Android JNI简单实例(Android java调用C/C++代码)

android 的应用程序(Dalvik VM)中使用JNI(Java Native Interface)调用C/C++开发的共享库。 c/c++中调用java程序的方法以后再发。 开...

Android NDK(JNI)学习总结一:Java代码中申明native函数-Java调用C函数,并在C函数中访问java类和方法、属性

本文不涉及android-ndk开发环境搭。步骤一:新建一个APP,名称为HelloJNI,然后定义一个类(将会在native代码中调用和访问该类):/* * mynative.cpp * * ...

Android-调用本地方法实现将C进程分支出来即生成系统进程/NDK-JNI开发实例(九)

流程: 点击button调用本地方法,使用C实现本地方法;C实现方法中分支出C进程; 如何在本地方中打印LOG; build.gradle配置 : defaultConfig { ...

Android之NDK(jni, java调用c/c++)

java调用c/c++过程 1. 已采用ndk编译出c/c++库(c_libname.a/ c_libname so),根据c_libname.h编写对应的java类; 2. 根据native...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
举报原因:
原因补充:

(最多只允许输入30个字)