android中调用native code时,需要用到jni,第一步就是生成类的头文件,android提供了javah工具,貌似是个反编译生成class.h,用法:javah -jni xx.xx.xx,后面是类的路径+名字,但好多时间都报错找不到类文件,主要是2个问题。

1.生成的类是单独的,没有和android有关系的情况下,一般是路径设置问题。比如,我生成的类名字为hellofore,package为com.example.sayhellojni,目录在worksapce下面。

code:

package com.example.sayhellojni;

public class HelloFore{
public HelloFore(){

}
public native void sayHello(String name);

}

目录:G:\Work\Android\workspace\SayHelloJni。

那么要执行命令如下:javah -jni com.example.sayhellojni.HelloFore . 这个一般都没问题,但还是报错,原因就是路径有问题。

正确的执行路径是:G:\Work\Android\workspace\SayHelloJni\bin\classes,也就是工程的bin\classes目录下,因为javah -jni执行的是com\example\sayhellojni\HelloFore.class,HelloFore.class是javac HelloFore.java得到的。javah -jni 是对class执行的。

2.生成的类如果和android相关的,要set android相关的source code.

比如:MainActivity class,是android默认的class.如果javah -jni com.example.sayhellojni.MainActivity,还是报错,找不到类文件,但这次是由于没有相关的android class source引起的,需要 set CLASSPATH来解决,可以在cmd下设置工程的src,set CLASSPATH=G:\Work\Android\workspace\SayHelloJni\src.

这样再执行javah -jni com.example.sayhellojni.MainActivity就不会报错,并且在com目录下生成了com_example_sayhellojnia_HelloFore.h,com_example_sayhellojni_MainActivity.h文件。

更多相关文章

  1. Android 文件操作心得体会
  2. 海康威视视频监控demo 源码+库文件
  3. Android studio 添加assets文件夹
  4. android R 文件生成不了
  5. Android 实现文件上传功能(upload)
  6. Android清单文件详解(六) ---- 节点的属性
  7. Android Uri获取资源文件(多种方式)
  8. 编译android 之后生成的 img 文件介绍

随机推荐

  1. Android转场动画windowAnimation和Activi
  2. Android(安卓)Market的 Loading效果
  3. android截图代码
  4. Android(安卓)JNI cpp文件创建 java bean
  5. 如何POST一个JSON格式的数据给Restful服
  6. Studio 1.5模拟器启动错误android/metric
  7. Unable to instantiate activity Compone
  8. Android中SQLiteOpenHelper类的onUpgrade
  9. android NDK 开发
  10. 开发Android平板电脑程序不能全屏显示问