用javah生成jni本地方法的头文件
2016-06-05 17:57
363 查看
前言
今天写这个总结,让我重做了3遍,我内心是崩溃的.我试出一个CSDN markdown编辑器的一个BUG.
BUG触发后,CSDN MarkDown博客编辑器会挂掉,网页失去响应. 重新打开编辑器,写博客也会挂掉,一直显示“等待博客站点的响应.
重现方法 : 向代码区贴一段dir /s/b的命令行窗口全选结果. 在我的计算机上,不管是chrome或者360浏览器,都有这个问题,是不是测试的时候没测试到呢?
就贴图了, 不敢再贴结果.
这个图是用eclipse编译android工程后,生成的class文件.
试验总结
建立一个android工程, 在MainActivity写上一个jni本地方法定义.重新编译工程.
在工程的src目录中,建立一个cmd文件.
javah -classpath "D:\Android\adt-bundle-windows-x86_64-20140702\sdk\platforms\android-20\android.jar;D:\AndroidWorkspace\TestJni\bin\classes" -jni com.ls.testjni.MainActivity
打开命令行窗口,进入src目录,运行此cmd, 生成头文件.
D:\AndroidWorkspace\TestJni\src>dir 驱动器 D 中的卷是 dat 卷的序列号是 66A6-68F9 D:\AndroidWorkspace\TestJni\src 的目录 2016/06/05 17:44 <DIR> . 2016/06/05 17:44 <DIR> .. 2016/06/05 16:16 <DIR> com 2016/06/05 16:26 176 make_native_h.cmd 1 个文件 176 字节 3 个目录 864,802,648,064 可用字节 D:\AndroidWorkspace\TestJni\src>make_native_h.cmd D:\AndroidWorkspace\TestJni\src>javah -classpath "D:\Android\adt-bundle-windows-x86_64-20140702\sdk\platforms\android-20 \android.jar;D:\AndroidWorkspace\TestJni\bin\classes" -jni com.ls.testjni.MainActivity D:\AndroidWorkspace\TestJni\src>dir 驱动器 D 中的卷是 dat 卷的序列号是 66A6-68F9 D:\AndroidWorkspace\TestJni\src 的目录 2016/06/05 17:44 <DIR> . 2016/06/05 17:44 <DIR> .. 2016/06/05 16:16 <DIR> com 2016/06/05 17:44 3,414 com_ls_testjni_MainActivity.h 2016/06/05 16:26 176 make_native_h.cmd 2 个文件 3,590 字节 3 个目录 864,802,643,968 可用字节 D:\AndroidWorkspace\TestJni\src>
打开com_ls_testjni_MainActivity.h, 可以看到jni本地接口已经生成了
/* * Class: com_ls_testjni_MainActivity * Method: native_fn_help * Signature: ()V */ JNIEXPORT void JNICALL Java_com_ls_testjni_MainActivity_native_1fn_1help (JNIEnv *, jclass);
备注-平台SDK版本
工程清单中指定的平台目标版本,应该是android-sdk中已经存在的SDK版本我这选的是API-15, 对应android-v4.0.3
android.jar路径也要是对应平台中的android.jar
D:\Android\adt-bundle-windows-x86_64-20140702\sdk\platforms\android-20\android.jar
javah -classpath 是全路径名称, 如果编译时,说那个类文件找不到,继续加在-classpath后面,多个全路径之间用;符号隔开
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ls.testjni" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
D:\Android\adt-bundle-windows-x86_64-20140702\sdk\platforms>dir 驱动器 D 中的卷是 dat 卷的序列号是 66A6-68F9 D:\Android\adt-bundle-windows-x86_64-20140702\sdk\platforms 的目录 2016/05/10 18:47 <DIR> . 2016/05/10 18:47 <DIR> .. 2016/05/10 18:42 <DIR> android-10 2016/05/10 18:37 <DIR> android-15 2016/05/10 18:34 <DIR> android-16 2016/05/10 18:31 <DIR> android-17 2016/05/10 18:28 <DIR> android-18 2016/05/10 18:24 <DIR> android-19 2016/05/10 18:19 <DIR> android-20 2016/05/10 18:15 <DIR> android-22 2016/05/10 18:11 <DIR> android-23 2016/05/10 18:47 <DIR> android-8 0 个文件 0 字节 12 个目录 864,802,562,048 可用字节 D:\Android\adt-bundle-windows-x86_64-20140702\sdk\platforms>
备注-类名
类名要按工程中实际情况来填写类名为 包名+类名
com.ls.testjni.MainActivity
相关文章推荐
- 彻底解决Spring MVC 中文乱码 问题
- Java核心技术卷2---第二章 XML
- Springmvc基础四之上传文件
- java分层开发
- JavaWeb开发技术——过滤器基础
- Java 课程设计
- java虚拟机学习01——jvm参数
- JAVA学习总结十三
- JavaSE学习随笔(一) Cloneable接口源码分析与技术细节
- JavaSE_ JVM GC垃圾回收算法
- Java泛型 - 第一篇
- 【Spring学习】Bean的扫描注册
- Java对ArrayList进行排序
- Java大牛养成记(10)----Maven
- java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
- Java千百问_01基本概念(007)_线程的状态有哪些
- JavaWEB_POI导出大量数据excel(50万左右)
- Eclipse中System.out.println()快捷键?
- Java实现动态加载读取properties文件
- struts各种问题