学习

来源:互联网 发布:linux 修改文件指令 编辑:程序博客网 时间:2024/06/04 18:50

1.Android 中static 区声明的代码会在oncreate前执行,所以jni加载库可以在static区中加。如果jni方法不是应用程序入口,那么jni库会在第一次调用这个类的时候加载

2.Android 中 字符串间隔符为"*^|,.:"的时候需要加转意字符“\\”,否则不能分割

3.jni 数据类型对应关系

表A

Java 类型本地类型描述booleanjbooleanC/C++8位整型bytejbyteC/C++带符号的8位整型charjcharC/C++无符号的16位整型shortjshortC/C++带符号的16位整型intjintC/C++带符号的32位整型longjlongC/C++带符号的64位整型efloatjfloatC/C++32位浮点型doublejdoubleC/C++64位浮点型Objectjobject任何Java对象,或者没有对应java类型的对象ClassjclassClass对象Stringjstring字符串对象Object[]jobjectArray任何对象的数组boolean[]jbooleanArray布尔型数组byte[]jbyteArray比特型数组char[]jcharArray字符型数组short[]jshortArray短整型数组int[]jintArray整型数组long[]jlongArray长整型数组float[]jfloatArray浮点型数组double[]jdoubleArray双浮点型数组

※     JNI类型映射

4.套接字socket连接不能再主线程中进行


5,eclipse jni函数红色报错,有可能没有导入源文件

Project Properties -> C/C++ General -> Path and Symbols
选择include标签,Add -> $Android_NDK_HOME/platforms/android-14/arch-arm/usr/include
且选中All languages.
最后Apply -> OK
6.elipse 导出apk时引用jar包混淆,由于冲突警报报错,无法编译
解决办法:将导入的jar包 写入混淆文件-libraryjars libs/*.jar
将冲突类-keep class android.view.类 { *; }-dontwarn android.view.类**
或加上-ignorewarnings

0 0
原创粉丝点击