參考GoogleVRHMD的編寫:
1.Java 調用CPP的函數大概是都是這個樣子:
extern "C" void Java_com_epicgames_ue4_GameActivity_native**********(JNIEnv* jenv, jobject thiz)
{
}
前面是Java對應函數聲明的位置。
在xml也要定義一下:
public native void nativeOnUiLayerBack();
2.CPP調用Java一般大概是這樣:
void AndroidThunkCpp_UiLayer_SetEnabled(bool bEnable)
{
if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
{
static jmethodID UiLayerMethod = FJavaWrapper::FindMethod(Env, FJavaWrapper::GameActivityClassID, "AndroidThunkJava_UiLayer_SetEnabled", "(Z)V", false);
FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, UiLayerMethod, bEnable);
}
}
3.虛幻有一個xml文件比較有意思:
GoogleVRHMD_APL.xml
大概是這個意思,虛幻打包安卓錢,先遍歷一遍這個xml文件,把所有的xml文件裏面的標註gameActivityClassAdditions的添加的類裏面,還有一堆其他的,可以拷貝文件,可以gameActivityImportAdditions。