前言
不知道往Markdown编辑器里贴了点啥(贴了一些从CMD窗口 dir /s/b的结果),居然挂掉了…
重新打开chrome, 点击写新文章,博客缓存也载入不进来,一直显示等待博客站点的响应…
害的我换个浏览器重新总结 ?
做了试验,搞清楚了用javah生成jni本地方法头文件的方法.
看了别人做的试验,和自己的情况也有一点小不一样.
实验记录
建立一个android工程, 在MainActivity中写一个本地方法, 先编译通过.
package com.ls.testjni;
import android.app.Activity;
import android.os.Bundle;
// import android.view.Menu;
// import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public static native void native_fn_help();
}
去工程的src目录下,建立一个 make_native_h.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\bin\classes>cd D:\AndroidWorkspace\TestJni\src
D:\AndroidWorkspace\TestJni\src>dir
驱动器 D 中的卷是 dat
卷的序列号是 66A6-68F9
D:\AndroidWorkspace\TestJni\src 的目录
2016/06/05 17:18 <DIR> .
2016/06/05 17:18 <DIR> ..
2016/06/05 16:16 <DIR> com
2016/06/05 16:26 176 make_native_h.cmd
1 个文件 176 字节
3 个目录 864,780,472,320 可用字节
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:19 <DIR> .
2016/06/05 17:19 <DIR> ..
2016/06/05 16:16 <DIR> com
2016/06/05 17:19 3,414 com_ls_testjni_MainActivity.h
2016/06/05 16:26 176 make_native_h.cmd
2 个文件 3,590 字节
3 个目录 864,780,468,224 可用字节
D:\AndroidWorkspace\TestJni\src>
头文件就生成好了
备注1
清单文件中的 android:targetSdkVersion 要写成android-SDK中有的版本, 我选的是API15 为android4.0.3
javah -classpath … 中写的android.rar的路径要和 android:targetSdkVersion匹配
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,778,371,072 可用字节
D:\Android\adt-bundle-windows-x86_64-20140702\sdk\platforms>
备注2
javah -classpath … 中指定的工程class路径中是编译后生成好的class文件, 包含有jni本地方法定义的class就在这个目录.