JNI学习一(最简单的java调 用本地c代码 )
2014-12-18 00:40
477 查看
首先了解理一个文件结构,如下图
三个文件的代码如下:
java文件
c 文件
这就是最基本的jni 例子了
三个文件的代码如下:
java文件
public class HelloJni extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); //调用c 代码 tv.setText( stringFromJNI() ); setContentView(tv); } //c本地方法 public native String stringFromJNI(); //加载c库 static { System.loadLibrary("hello-jni"); } }mk 文件
# Copyright (C) 2009 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # LOCAL_PATH := $(call my-dir) #清理所在变量,除classpath外,每个模块都是以include $(CLEAR_VARS)开始,以include $(BUILD_SHARED_LIBRARY)结束 include $(CLEAR_VARS) #生成的库名hello-jni LOCAL_MODULE := hello-jni #源文件 LOCAL_SRC_FILES := hello-jni.c #生成动态共享库 include $(BUILD_SHARED_LIBRARY)
c 文件
#include <string.h> //导进jni头文件 #include <jni.h> //返回java字符串 jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ) { <span style="white-space:pre"> </span>//*env 上下文环境变量,具体怎么用,下一篇介绍 <span style="white-space:pre"> </span>//thiz 调用当前方法的对象 <span style="white-space:pre"> </span>/** <span style="white-space:pre"> </span> * 创建java 字符串并返回,NewStringUTF,可以在jni.h文件JNINativeInterface 找到,表示,java c 本地方法接 <span style="white-space:pre"> </span> * 后面将会根据实际应用进行说解 <span style="white-space:pre"> </span> */ return (*env)->NewStringUTF(env, "Hello from JNI qqq!"); }
这就是最基本的jni 例子了
相关文章推荐
- JNI学习笔记2——本地代码访问Java代码
- JNI学习笔记4——本地代码创建Java对象(包括javaString)
- JNI学习笔记4——本地代码创建Java对象(包括javaString)
- JNI学习笔记:(1)开篇(2)本地代码访问Java代码 (3)本地方法取得Java属性/调用java方法 (4)本地代码创建Java对象(包括javaString) (5) 本地方法处理java数组
- Android中JNI高级应用 - 本地C代码中创建Java对象及本地JNI对象的保存 .
- 深入了解android平台的jni---本地多线程调用java代码
- Android中JNI高级应用 - 本地C代码中创建Java对象及本地JNI对象的保存
- JAVA 本地调用(JNI)之用dev c++简单实现
- 简单学习JNI编程,照搬网上代码编译运行跑通第一步
- Java本地方法理解及通过JNI的简单实现
- JNI技术2---本地代码反调用java类方法过程详解
- 深入了解android平台的jni---本地多线程调用java代码
- JNI学习笔记(四)JNI中本地语言创建Java对象并且访问具体方法(附例子)
- JNI学习笔记5——本地方法处理java数组/引用问题/缓存jfieldID/jmethodID
- java学习笔记3--最简单的代码
- JAVA 本地调用(JNI)之用dev c++简单实现
- 深入了解android平台的jni---本地多线程调用java代码
- Android中JNI高级应用 - 本地C代码中创建Java对象及本地JNI对象的保存
- JNI技术2---本地代码反调用java类方法过程详解
- Cocos2d-x学习之通过Jni调用Android的Java层代码