记下吧,省得又忘记。
Java配置环境变量,在系统变量内新建,若存在则编辑
JAVA_HOME
C:\Program Files\Java\jdk1.6.0_29
Path
%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin
javah生成.h
进入工程目录下的...\bin\classes
javah -classpath <类路径> 包名.类名
也可看javah的帮助,一目了然
用法:javah [选项] <类>
其中 [选项] 包括:
-help 输出此帮助消息并退出
-classpath <路径> 用于装入类的路径
-bootclasspath <路径> 用于装入引导类的路径
-d <目录> 输出目录
-o <文件> 输出文件(只能使用 -d 或 -o 中的一个)
-jni 生成 JNI样式的头文件(默认)
-version 输出版本信息
-verbose 启用详细输出
-force 始终写入输出文件
eclipse加入Ndk_builder
Location:
D:\huangx\android-ndk-r8c-windows\android-ndk-r8c\ndk-build.cmd
Working Directory:
D:\huangx\video_project
注:video_project是真实路径名称,当然也可以选工程名
eclipse加入Javah_builder
Location:
C:\Program Files\Java\jdk1.6.0_29\bin\javah.exe
Working Directory:
${workspace_loc:/Video_Record_RTPActivity}
Arguments:
-verbose -classpath ${workspace_loc:/Video_Record_RTPActivity}/bin/classes -d ${workspace_loc:/Video_Record_RTPActivity}/bin/classes guxiaojun.demo.video_record_rtp.Cache_Jni
注:Video_Record_RTPActivity是工程名,如果有错误,注意classpath还要加上Android.jar的路径。
Java调用C流程
1. Test.java
public class Test {
static public native void myStart();
static public native void myStop();
}
2. javah生成 包名_类名.h
JNIEXPORT void JNICALL
Java_com_test_demo_Test_myStart(JNIEnv *, jclass );
JNIEXPORT void JNICALL
Java_com_test_demo_Test_myStop(JNIEnv *, jclass );
3. 根据.h写c文件