ing*_*.am 2 c++ java eclipse macos android
我最近一直在玩NDK,发现许多在线提供的教程确实无济于事.我一直在使用这个教程,我已经运行得很好.
然而.这是正确使用NDK吗?我的意思是,如果我有一个游戏说C++中的许多类,我希望移植到android.我是否必须真正手动将我的所有方法更改为:
JNIEXPORT jstring JNICALL Java_com_domain_ndk_NativeLib_hello
(JNIEnv * env, jobject obj) {
return (*env)->NewStringUTF(env, "Hello World!");
}
Run Code Online (Sandbox Code Playgroud)
我无法看到这是一种非常有效的移植代码的方式,我觉得我使用的是NDK错误.我也不知道NDK样本应该如何工作.有人能指出我正确的方向吗?
谢谢
您无需更改任何现有方法即可使用"自动绑定"JNI格式.Google NDK示例中没有很好的示例,但Google SDK在内部使用其他JNI绑定方法:在JNI文档中搜索RegisterNatives().但即便如此,你真的只需要为Android SDK需要与你的库交谈的几个地方创建一个包装器:一般的用户输入/传感器,绘制回调,以及可能的"更新"回调.除此之外,应用程序的其余部分应保持不变,除了要构建它.
为简化起见,我建议您不要使用本机小部件; 如果你把你的游戏完全放在OpenGL中,你可以避免通过Java,例如,在屏幕上绘制纹理,至少如果你的目标是1.6设备和更新,NDK具有OpenGL的本机绑定.
相反,一些意见(包括谷歌的),则可以NDK,经常被用于游戏移植到Android.事实上,我现在正以这种方式使用它.您需要将用户事件从Java传递到C++,并且您需要让Java设置基本的GL上下文(NDK中没有EGL绑定),但是您可以使用OpenGL在C++中完成其他所有操作,并且基本的Java消息正在传递给C++,你可以(大部分)忽略Java.谢天谢地.:)
你仍然需要与Java谈论声音,并且能够访问你的文件:两者仍然需要通过Java,所以你可能想要使用"反向JNI",你从C++调用Java函数.也不难,整个地方都有例子.
我在这里详细介绍了如何访问您的资产:Android NDK中的文件操作
祝好运.
| 归档时间: |
|
| 查看次数: |
1400 次 |
| 最近记录: |