标签:android io ar java sp 文件 on cti bs
今天来看jni的部分吧
主Activity里static 的System.loadLibrary("String");
这句话是为了加载你所加载的库,可能是文件也可能是一个命名空间等。
public native functionName();这个是声明你在jni里需要调用的函数,只用做声明不用去定义实现他。
一般就只是传递一些基本类型,复杂类型我也不知道该如何去做,这就够了。
传递的大多是些整形的或者字符型的变量,这些就是买的游戏里的东西或者传递的一些简单消息。
因为java和c是不能直接互调的,所以还需要掌握jni里的基本类型,这些也都简单,差不多只要在基本类型前加个"j"就ok了
例如int->jint double->jdouble boolean->jboolean
这些是基本的,也有jobject这是jni里所有类的父类,和java的object类似吧
再看jni的文件,java层里调用的native方法,在jni的文件里都要把名字定义好,要不然生成so库的就麻烦了
例如我的java的主类是在hbsi.dtd.game包下的MainActivity
那么在你jni里要实现的nativite方法就要写成
JNIEXPORT void JNICALL Java_hbsi_dtd_test_MainActivity_FucntionName(JNIEnv *, jobject);
如果返回整形或者要传递参数要改成
JNIEXPORT jint JNICALL Java_hbsi_dtd_test_MainActivity_FucntionName(JNIEnv *, jobject,jint agr);
以此类推。第一个参数要把JNIEnv传递进去,JNIEnv是当前所在线程,通过调用 android::AndroidRuntime::registerNativeMethods()注册native实现的函数指针。
一般在游戏里这些东西都由游戏引擎封装好了,对这些底层的封装做个了解,能加个方法用用就够了。
要学习的还有很多。
标签:android io ar java sp 文件 on cti bs
原文地址:http://www.cnblogs.com/52111314ly/p/4060830.html