현재 cocos2d-x 를 이용하여 게임을 개발하고 있습니다.

물론 멀티플랫폼을 위해서 사용하고 있습니다.

xcode로 주로 코딩을 하고 안드로이드 용으로 빌드하면서 현재 개발중입니다.

iap를 붙이기 위해서 아이폰과 안드로이드 각각 코딩을 따로 하고 있는 중인데요.

문제는 안드로이드에서 특정 클래스의 함수를 호출하려고 하는데 그게 잘 안됩니다.


소스는 다음과 같습니다.


cpp 단  소스


MyClass::invoke_init()
{
   JavaVM* jvm = JniHelper::getJavaVM();
   JNIEnv* env;

   jvm->GetEnv((void **) &env, JNI_VERSION_1_2);
    
   jclass cls;
   jmethodID method;
    
   cls = env->FindClass("com/joycestudios/game/SampleActivity");
   method = env->GetMethodID(cls, "initFunc", "()V");
   env->CallVoidMethod(cls, method); 
}


java 단 소스


public class SampleActivity extends Cocos2dxActivity
{
    public void initFunc()
    {
    	Log.v("LOG_INFO", "initFunc()");
    }
}


다음과 같이 간단히 우선 테스트를 진행중인데요.

xcode에서 빌드하고 build_native.sh로 다시 빌드하고 마지막으로 eclipse에서 빌드 하고 

실행하면 그냥 검은 화면만 나오다 앱이 종료됩니다.


cpp 부분의 이 라인(env->CallVoidMethod(cls, method);)을 주석처리하면 안드로이드에서 문제없이 앱은 뜹니다.

결국 제가 원하는 것은 initFunc()을 원하는 시점에 호출하는 것인데, 그 부분을 할려고 호출하면 안드로이드에서 제대로 실행이 

안되고, 호출을 하지 않으면 문제가 없다는 겁니다.


어떻게 하면 java 클래스의 함수를 호출할 수 있나요?

제가 여러 샘플 등을 보면서 분석해도 별 문제가 안 보이는데, 혹시 뭐가 문제인가요?