Mac Javah生成JNI头文件

原创 2015年07月10日 15:50:56

在NDK开发中,我们最开始起步的时候会有四步来走。
一。新建Android程序工程。
二。生成.h头文件,编写.c文件。
三。编写mk文件,使用Cygwin编译出so文件。
四。加载so文件,运行程序。

而我今天所讲的主题:生成.h头文件,编译环境:MAC

在实际生产当中,往往会报两类错误:
一类:Javah生成JNI头文件出现找不到类的错误
二类:mac jni 无法访问android.app.Activity

那这两类不管出现其中的任何一种,都会导致编译生成头文件失败。

根据网上大量的博客来看,基本都会告诉你:编译工程之后,进入工程目录文件下,在控制台运行
javah -classpath . -jni com.jni.MainActivity
或者
javah -classpath bin/classes -d jni com.hh.jni.MActivity
执行完成后,就会在工程目录下生成一个jni文件夹,里面就会有.h的头文件了。
可实际上,你会遇到如上所述的两个错误;当我们遇到这错误的时候,往往也是很纠结痛苦的事情。

怎么办呢?
目前一共有三种解决方式:
第一种:
在工程目录下运行命令,貌似 谷歌NDK的samples里面(samples这个文件夹,就是NDK的示例程序目录,对我们来说,就是教程了)的头文件好像用的就是这种。
在终端命令中输入:
cd 工程总路径/src

例如我得:
cd /Users/chiyan/work/workspace/helloJni/src
回车后:
javah -d jni com.example.helloJni.MainActivity
回车。
然后你刷新你的工程目录,就会发现src文件下,多了个jni文件夹,里面多了个.h文件。

第二种:
在终端命令中输入:
cd 工程总路径/src

例如我得:
cd /Users/chiyan/work/workspace/helloJni
回车
javah -classpath /Users/work/android_tools/macsdkeclipse/android-sdk-macosx/platforms/android-20/android.jar:bin/classes -d jni com.example.helloJni.MainActivity

这里需要注意:
1.javah -classpath
2./Users/work/android_tools/macsdkeclipse/android-sdk-macosx/platforms/android-20/android.jar:bin/classes
3.-d
4.jni
5.com.example.helloJni.MainActivity
1想必大家都清楚了,2.就是第二类问题的解决办法,也就是在编译的适合去相对应的android.jar中找相对应的import。
3.是当前工程目录
4.是指定3下得jni目录
5.是最开始定位的工程目录,如果你在第一步中/Users/chiyan/work/workspace/helloJni/bin/classes的话,肯定会报第一类问题,找不到实体类。

第三种方案:就是在eclipse中关联。不要每次在终端输入命令然后生成了。
这里写图片描述

好的,梳理完毕。不喜勿喷。谢谢。

Mac环境下Android Studio jni开发调用 javah编译不了头文件问题

最近在弄JNI的东西,网上的资料不少,可是按着一步一步来出现了许多问题,在Android Studio中用javah -classpath 编译头文件总是报错bash: ../../build/int...
  • huxing0215
  • huxing0215
  • 2015年12月30日 17:51
  • 855

Ndk-->通过Javah生成.h头文件(Jni入门之路)

如果你还不了解什么是Jni, 移步: https://www.baidu.com/s?wd=jni 这里有更权威的介绍: http://docs.oracle.com/javase/7/docs/t...
  • angcyo
  • angcyo
  • 2016年06月05日 21:48
  • 3650

Android Studio NDK开发之javah命令使用

Android Studio NDK开发之javah命令使用 最近打算用AS测试一下NDK开发,但是遇到了用javah太麻烦的问题,后面经过研究发现可以有简单的方法 进入java目录执...
  • free555
  • free555
  • 2016年06月02日 17:06
  • 3609

javah用法

javah命令详解   2011-06-21 20:55:09|  分类: JDK命令 |  标签:java命令   |字号大中小 订阅 http://...
  • zzhays
  • zzhays
  • 2013年08月29日 14:28
  • 15053

Eclipse中配置javah命令自动生成JNI头文件

首先要在CMD命令提示符下保证你输入的命令时可以生成头文件的 我用的命令格式是 D:\Test\jnitest javah -classpath /bin/classes;D:/android/sdk...
  • wshngyf
  • wshngyf
  • 2016年03月08日 23:32
  • 1699

jni 之 利用javac,javah生成jni头文件

编译环境eclipse, ubuntu 工程路径:   src/com/cqb/hellojnitest package com.cqb.hellojnitest; public cla...
  • liuhongxiangm
  • liuhongxiangm
  • 2014年02月20日 10:47
  • 7735

Android 开发中如何用Javah命令生成JNI头文件

近段时间接触JNI,发现每个JNI头文件开头都有下面一段说明,大概的意思是这个头文件是自动生成的,不要修改。我就好奇这个文件是如何自动生成的,捣鼓的半天才弄明白。现在整理一下希望可以帮到大家。 /* ...
  • qq_37858386
  • qq_37858386
  • 2017年04月26日 18:39
  • 408

JNI用javah命令生成头文件

以下代码在Android中JNI的使用之HelloWorld的基础上操作Android中JNI的使用之HelloWorld2.4在工程的src目录下,在dos窗口使用javah命令 后面跟 Ma...
  • qq_33689414
  • qq_33689414
  • 2016年02月27日 14:07
  • 4818

Eclipse中配置javah命令自动生成JNI头文件

首先要在CMD命令提示符下保证你输入的命令时可以生成头文件的 我用的命令格式是 D:\Test\jnitest javah -classpath /bin/classes;D:/android/sdk...
  • wshngyf
  • wshngyf
  • 2016年03月08日 23:32
  • 1699

Ndk-->通过Javah生成.h头文件(Jni入门之路)

如果你还不了解什么是Jni, 移步: https://www.baidu.com/s?wd=jni 这里有更权威的介绍: http://docs.oracle.com/javase/7/docs/t...
  • angcyo
  • angcyo
  • 2016年06月05日 21:48
  • 3650
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mac Javah生成JNI头文件
举报原因:
原因补充:

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