2012-01-16 5 views
1

저는 libgdx와 bullet physics 엔진을 사용하는 안드로이드 게임을 개발 중입니다. 나는 아무 문제없이 게임을 컴파일 할 수 있습니다,하지만 난 게임에 총알을 추가 할 때이 오류로 충돌 :android NDK 라이브러리로드 중 - UnsatisfiedLinkError

.... UnsatisfiedLinkError를 : 총알을로드 할 수 없습니다 : findLibrary가 null 반환 ...

I을 글 머리 기호 라이브러리를 잘 컴파일 할 수 있지만 내 코드에서 사용할 때 충돌이 일어납니다. 재미있는 점은 글 머리 기호를 사용하지만 libgdx없이 다른 문제없이 작동하는 또 다른 프로젝트가 있다는 것입니다. 어떤 사람이 문제가 될 수 있는지 알고 있습니까? 내가 아는 바로는 ndk-build는 .so 파일과 obj 폴더 만 생성합니다.

글 머리 기호 .so 파일이 .apk에 포함되지 않아 충돌이 발생한 것 같습니다. 그것이 맞는지 어떻게 확인할 수 있습니까? 비슷한 문제가있는 사람이 있습니까?

도움 주셔서 감사합니다.

+0

.apk를 압축 해제하여 확인할 수 있습니다. – Ludevik

답변

1

내 문제가 해결되었습니다. 문제는 libgdx에 libe 폴더에 armeabi 및 armeabi-v7a 폴더가 있고 bullet에는 armeabi 만있는 것입니다. 그래서 나는 armeabi-v7a를 제거했고 마술처럼 작동했습니다!

0

System.loadLibrary에 전달 된 이름이 .apk 파일의 .so 이름과 같은지 확인하십시오. Apk 파일은 실제로 zip 파일입니다. 그래서이 파일의 이름을 .zip 확장자로 변경하고 압축을 풀고 libs 폴더 내부를 검사 할 수 있습니다.

apk 파일의 libs 폴더에 libFooBar.so라는 파일이 있으면 loadLibary에 다음 이름 중 하나를 전달해야합니다 (예 : "FooBar", "libFooBar"또는 "libFooBar.so").

0

.c 기본 파일 대신 .cpp 기본 파일을 사용하기 시작했을 때이 문제가 발생했습니다. 문제는 .cpp 빌드 도구에서 name-mangling을 차지하지 않는다는 것이 었습니다. 네이티브 메소드 정의를 둘러싼 다음을 추가하십시오 :

#ifdef __cplusplus 
extern "C" { 
#endif 
    /* ... */ 
#ifdef __cplusplus 
} 
#endif 
0

메신저, 위의 게시물 helpfull는하지만, 내 game.apk을 확인하고 너무 라이브러리를 lib 디렉토리/armeabi 아래

비슷한 문제가 있지만, 내가 그것을 libs/armeabi에서 일식으로 빌드하면.

나는 libs에 있어야한다고 생각한다. 누군가가 나에게 lib 디렉토리를 바꿀 수있게 도와 주면 도움이 될 것이다.