第一、通过eclipse新建一个工程名为HelloJni的android工程,并编译。

第二、右键工程-->Android Tools --> Add Native Support,出现如下界面,名字默认就可以了,点击finish。

第三、我们在MainActivity类中加入要调用的native代码

public native String  stringFromJNI();

 以及加入我们要调用的lib库,名字就是上面图中的名字了。

static {
System.loadLibrary("HelloJni");
}

第四、用eclipse编译工程,使其在工程bin/classes目录下生成class文件

然后在工程根目录的src执行

javah -d ../jni com.example.hellojni.MainActivity

其中-d 表示生产目录,这时候jni目录会生产com_example_hellojni_MainActivity.h头文件。

在jni目录下创建com_example_hellojni_MainActivity.c文件,并实现stringFromJNI方法

#include <string.h>
#include <jni.h>
#include "com_example_hellojni_MainActivity.h" /* This is a trivial JNI example where we use a native method
* to return a new VM String. See the corresponding Java source
* file located at:
*
* src/com/example/hellojni/MainActivity.java
*/
jstring Java_com_example_hellojni_MainActivity_stringFromJNI(JNIEnv *env, jobject this)
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}

将com_example_hellojni_MainActivity.c添加到jni的Android.mk中,同时删除HelloJni.cpp文件

最后我们添加Toast来显示stringFromJNI返回的文本。

Toast.makeText(getApplicationContext(), str, 90000000).show();

OK,接下去就是编译安装包看下效果了。

工程源码下载:

http://files.cnblogs.com/chuanwei-zhang/HelloJni.zip

最后附上一篇非常不错的文章:http://www.cnblogs.com/eddy-he/archive/2012/08/08/2628676.html

Android与JNI(一) ---- Java调用C 静态调用的更多相关文章

  1. Android 通过 JNI 访问 Java 字段和方法调用

    在前面的两篇文章中,介绍了 Android 通过 JNI 进行基础类型.字符串和数组的相关操作,并描述了 Java 和 Native 在类型和签名之间的转换关系. 有了之前那些基础,就可以实现 Jav ...

  2. Delphi 类库(DLL)动态调用与静态调用示例讲解

    在Delphi或者其它程序中我们经常需要调用别人写好的DLL类库,下面直接上示例代码演示如何进行动态和静态的调用方法: { ************************************** ...

  3. Android与JNI(二) ---- Java调用C++ 动态调用

    目录: 1. 简介 2. JNI 组件的入口函数 3. 使用 registerNativeMethods 方法 4. 测试 5. JNI 帮助方法 6. 参考资料 1. 简介 Android与JNI( ...

  4. jQuery扩展两类函数(对象调用,静态调用)

    作者:zccst 先看小例子: $(function(){ //扩展方式1-通过对新调用 $.fn.each1=function(){ console.log("hehehehe$.fn.f ...

  5. Android使用JNI实现Java与C之间传递数据(转)

    介绍Java如何将数据传递给C和C回调Java的方法.  java传递数据给C,在C代码中进行处理数据,处理完数据后返回给java.C的回调是Java传递数据给C,C需要用到Java中的某个方法,就需 ...

  6. Android使用JNI实现Java与C之间传递数据

    介绍Java如何将数据传递给C和C回调Java的方法. java传递数据给C,在C代码中进行处理数据,处理完数据后返回给java.C的回调是Java传递数据给C,C需要用到Java中的某个方法,就需要 ...

  7. JNI实现JAVA和C++互相调用

    SDK.h #ifndef SDK_H #define SDK_H #include "AsyncProxy.h" #include "Module.h" #i ...

  8. 通过adb命令在Android设备中执行Java命令, 并调用so文件。

    一.难点一:无法复制so文件到/system/lib或者/vendor/lib下,提示只读 解决方法: 2.使用android device monitor放库进入到 /system/lib出现只读权 ...

  9. Android NDK开发 JNI操作java构造方法,普通方法,静态方法(七)

    Android NDK开发 JNI操作java普通.静态.构造方法 1.Jni实例化一个Java类的实例jobject 1.通过FindClas( ),获取Java类的的jclass 2.通过GetM ...

随机推荐

  1. java 设计模式之单利模式以及代理模式(静态)

    1:单利模式: public class Singleton { private static Singleton uniqueInstance = null; private Singleton() ...

  2. 修改tomcat的get方法的参数长度

    在solr查询中,遇到查询字符串过长,返回错误,在tomcat的conf/server.xml中修改下面的参数即可.加上maxHttpHeaderSize="65536" < ...

  3. java项目(java project)如何导入jar包的解决方案列表

    右键项目-properties-java build path(左侧菜单)-选择libraries 有两种方式,导入jar包实际上就是建立一种链接,并不是copy式的导入 一.导入外部包,add ex ...

  4. 修改document.domain的注意事项(转)

    有时候,需要修改document.domain. 典型的情形:http://a.xxx.com/A.htm 的主页面有一个<iframe src="http://b.xxx.com/B ...

  5. 9、外观模式(Facade)

    外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口 ...

  6. android使用support的ActionBar时遇到的问题

    多从网上下载好了support library之后,把android-support-v7-appcompat.jar放到了libs目录下,并加入到了编译路径,本以为万事大吉,可是却报了下面的一个错误 ...

  7. Nested weights are bad for performance

    警告信息“Nested weights are bad for performance”的消除方法 原因分析:在布局进行嵌套使用时,父布局与子布局都使用了android:layout_weight,但 ...

  8. 引入bootstrap

    下载bootstrap的min.css文件,下载地址为:http://www.bootcss.com/ 你也可以去bootstrap中文站上去下载和学习: http://v3.bootcss.com/ ...

  9. photosho 等距复制或旋转复制

    选区是不可以复制的,不过可以用这个方法:1.新建图层,任意绘制一个图形2.ctrl+j复制一层,ctrl+T 切换到变形工具,移动或变形该图形后enter.3.按Alt+Shift+ctrl+T.4. ...

  10. Firebug Console 与命令行全集

    Console API 当打开 firebug (也包括 Chrome 等浏览器的自带调试工具),window 下面会注册一个叫做 console 的对象,它提供多种方法向控制台输出信息,供开发人员调 ...