用到的命令
编译.java文件用 javac <XX.java>
用.c文件生成.so文件:gcc -fPIC -I <JAVAHOME>/include -I< JAVAHOME>/include/linux -shared -o <XX.so> <XX.c>
运行.class文件java -Djava.library.path=. <XX>不能加.class后缀名
注意:<>后中的内容用实际值替换
由于命令太长,可以用alias 给命令取个别名
比如我将生成.so的命令取个名字叫c2so 则执行
下次我只要执行类似c2so libHellojni.so HelloJni.c的操作,即可生成.so文件
alias c2so='gcc -fPIC -I /home/myfile/jdk1.6.0_23/include -I /home/myfile/jdk1.6.0_23/include/linux -shared -o'
/home/myfile/jdk1.6.0_23/ 为我的jdk路径
函数参数类型对应
具体的每一个字符的对应关系如下
字符 Java类型 C类型
V void void
Z jboolean boolean
I jint int
J jlong long
D jdouble double
F jfloat float
B jbyte byte
C jchar char
S jshort short
数组则以"["开始,用两个字符表示
[I jintArray int[]
[F jfloatArray float[]
[B jbyteArray byte[]
[C jcharArray char[]
[S jshortArray short[]
[D jdoubleArray double[]
[J jlongArray long[]
[Z jbooleanArray boolean[]
上面的都是基本类型。如果Java函数的参数是class,则以"L"开头,以";"结尾,中间是用"/" 隔开的包及类名。而其对应的C函数名的参数则为jobject. 一个例外是String类,其对应的类为jstring
Ljava/lang/String; String jstring
Ljava/net/Socket; Socket jobject
如果JAVA函数位于一个嵌入类,则用$作为类名间的分隔符。
例如 "(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z"
这些东西其实也可以不用记的,需要用的时候使用命令 javap -s 类名 进行查看,例如
分享到:
相关推荐
ubuntu上面使用jni例子
NULL 博文链接:https://407827531.iteye.com/blog/1313926
主要介绍了Ubuntu 使用Jni开发实例详解的相关资料,需要的朋友可以参考下
基于ubuntuLINUX下的JAVA开发,可以生成动态链接库,亲测可用!
android下JNI使用方法.JNI入门教程等网络资源合集
学习JNI编译时,缺少的jni.h和jni_md.h头文件,Java调用C和C++函数时的JNI使用区别: 注意:jni.h头文件中对于***.c & ***.cpp采用不同的定义
这是一个androidstudio环境下的jni的学习,里面包含了基本数据类型转化,引用数据类型转化,json格式数据类型的转化等
JNI的两个头文件jni.h和jni_md.h,提供需要的人下载!!!!!
NULL 博文链接:https://wen866595.iteye.com/blog/974802
总结了Android下jni开发的一些重要知识点,并且以代码的形式提供供大家参考
mac 下jni编译详见文章: http://blog.csdn.net/qwezcl/article/details/17766397
内容包含了jni的介绍和作用,jni在android系统中的具体应用,jni的编写和编译技术,hal的介绍,hal的编写技术
JNI资料大全JNI资料大全JNI资料大全JNI资料大全JNI资料大全JNI资料大全JNI资料大全JNI资料大全JNI资料大全
JAVA下JNI编程教程
AndroidStudio环境下的jni调用(NDK),这个教程可以让完全不会AndroidStudio的人学会jni调用。完全步骤话,非常简单。
JNI规范中文版,学习JNI/NDK编译的同时,学习下JNI规范
visual studio 2019下C++通过JNI调用JAVA代码
DELPHI开发JNI必备 jni.pas 包含文件 jni.pas JNI_MD.INC
Android Studio 下的JNIDemo
3. 在根目录下创建 jni 目录(mkdir jni). 4. 利用命令生成相应的头文件,在根目录下执行:javah -classpath bin/classes -d jni com.xxx.hello.HelloJni ————————————— ——————— ^ ^ 包名 ...