JNI를 사용해서 C, C++ 코드를 사용 할 떄 각 코드별로 다르게 코딩해주어야 한다.


C 사용시
JNIEnv *GetEnv()
{
	JNIEnv *env = NULL;

	(*g_vm)->GetEnv(g_vm, (void **)&env, JNI_VERSION_1_4);
	if ( env == NULL )
	{
		(*g_vm)->AttachCurrentThread(g_vm, (JNIEnv **)&env, NULL);
	}

	return env;
}

jclass getJClass(JNIEnv *env)
{
	return (*env)->FindClass(env, "com/berabue/test/GLView");
}

C++ 사용시
JNIEnv *GetEnv()
{
	JNIEnv *env = NULL;

	g_vm->GetEnv((void **)&env, JNI_VERSION_1_4);
	if ( env == NULL )
	{
		g_vm->AttachCurrentThread((JNIEnv **)&env, NULL);
	}

	return env;
}

jclass getJMainClass(JNIEnv *env)
{
	return env->FindClass("com/berabue/test/GLView");
}







프로젝트를 Import할때 Invalid project description.  overlaps the location of another project: 에러가 나타난다면


Android -> Existing Android Code Into Workspace가 아닌


General -> Existing Projects into Workspace를 선택하여 Import하면 에러없이 된다.








android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application


다이얼로그 생성시 getApplicationContext(); 을 사용하여 발생된다.


액티비티명.this로 해결가능.




아무런 문제가 없지만 프로젝트폴더에만 x 표시가 뜨고 아래와 같은 에러메시지가 나온다면

your project contains error(s), please fix them before running your application

메뉴바 -> project -> clean 

에뮬 실행시 emulator: ERROR: the user data image is used by another emulator. aborting 라는 문구가 뜨면

특정 폴더를 지우거나 뭘 하거나 방법이 있지만..

가끔 그래도 계속 안될때가 생긴다면.. 그냥 그게 귀찮다면..

에뮬을 껏다 키기 귀찮아서 안꺼도 되는 방법으로

윈도우키+R -> cmd 입력. (명령프로프트 실행)

안드로이드가 설치된 폴더에 tools로 이동

adb kill-server 입력

adb start-server 입력

이제 에뮬이 잘 작동한다! 



+ Recent posts