game/godot

Godot3 - Compiling for Android - Troubleshooting Fail

C/H 2018. 11. 24. 08:30

scons 컴파일 에러 발생

결국 Godot 3.0.6 compile Success Process방법으로 성공했다.
아래 내용은 히스토리로 남겨둔다.

=====
In file included from thirdparty\bullet\BulletCollision\BroadphaseCollision\btAxisSweep3.cpp:20:
In file included from thirdparty\bullet\BulletCollision\BroadphaseCollision/btAxisSweep3.h:23:
In file included from thirdparty\bullet\BulletCollision\BroadphaseCollision/btOverlappingPairCache.h:24:
thirdparty\bullet\LinearMath/btAlignedObjectArray.h:39:10: fatal error: 'new' file not found
#include  //for placement new
         ^~~~~
1 error generated.

=====
scons: *** [thirdparty\bullet\BulletCollision\BroadphaseCollision\btAxisSweep3.android.opt.debug.armv7.neon.o] Error 1
scons: building terminated because of errors.

Solution

platform/android/detect.py 파일에서 android_stl 옵션 기본값이 no다. scons p=android --help 명령으로 옵션을 확인 할 수 있다.

scons p=android android_stl=yes
scons p=android android_stl=yes target=release_debug --config=force
scons platform=android target=release_debug android_stl=true

옵션으로 해결이 가능하다고 나오지만 같은 에러가 발생함.
이슈를 따라가다 보면 결국 3.0.6에서는 NDK 버전을 16, 17버전으로 다운그레이드 해서 컴파일 가능.
17 beta2 로 ANDROID_NDK_ROOT 설정을 바꾼후 android_stl 옵션없이 실행하면 정상적으로 컴파일 된다.

scons platform=android target=release_debug -j4 --config=force
2018.11.13일 현재 Android Studio 에서 사용하는 NDK는 18.1.5063045 버전이다.

https://github.com/godotengine/godot master는 위 문제가 발생하지 않음.

gradlew build 에러

16, 17 beta2 컴파일 후 gradlew build 시 아래 문제가 발생했다.

* What went wrong:
A problem occurred configuring root project 'java'.
> No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 2m 22s


Conclusion

일단 현재로서 Godot 3.0.6 컴파일은 모두 실패 했다. 테스트는 16b, 17c, 17 beta2 NDK 모두 build 실패를 했고, 에러문제를 해결하기 위해 여러가지 꼼수를 사용해 봤지만 해결되지 않았다.
마지막으로 에러를 우회하는 방법으로 현재 https://github.com/godotengine/godot master 파일을 다운 받은 후 platform/android/java/gradle폴더를 3.0.6 버전에 덮어쓴 뒤 build.gradle 수정 후 컴파일을 했을때 문제 없이 작동하는것을 확인했다.
다만 이게 맞는 방법인지 확인 하기 위해서 android_debug.apk, android_release.apk 파일을 비교 했을때 차이가 있었다.
왜 차이가 나는지, 그리고 컴파일 파일이 없을 경우 어떤 문제가 발생하는지는 확인하지 못했다.

Diff

Godot3.0.6 lib in public android_debug.apk
  • arm64-v8a/libgodot_android.so 39,796KB
  • armeabi-v7a/libgodot_android.so 41,524KB
  • x86/libgodot_android.so 42,438KB
Godot3.0.6 lib in compile android_debug.apk

android-ndk-r17c Build

  • arm64-v8a/libc++_shared.so 574KB
  • arm64-v8a/libgodot_android.so 35,824KB
Godot3.1.alpha lib in public android_debug.apk
  • arm64-v8a/libc++_shared.so 10,325KB
  • arm64-v8a/libgodot_android.so 45,128KB
  • armeabi-v7a/libc++_shared.so 642KB
  • armeabi-v7a/libgodot_android.so 48,599KB
  • x86/libc++_shared.so 1,070KB
  • x86/libgodot_android.so 48,086KB
Godot3.1.alpha lib in compile android_debug.apk

Android Studio ndk-bundle 18.1.5063045

  • arm64-v8a/libc++_shared.so 574KB
  • arm64-v8a/libgodot_android.so 35,825KB


PS. Unknown Error...

버튼이 하나있는 기본적인 프로젝트는 문제가 없이 안드로이드에 포팅이 되었지만,
실제 프로젝트를 포팅했을 때 문제가 발생했고 제대로 동작하지 않았다.
프로젝트는 Secne실행(F5)은 아무런 문제가 없었고, public android_debug.apk는 아무런 문제가 없었다.

gradlew build 에서 아래 에러결과를 뿜어낸다. 결국 compile android_debug.apk 가 정상 동작하지 않는게 맞다.
그런데, 이건 배보다 배꼽이 더 큰거 아닌가? 하~

Ran lint on variant debug: 107 issues found
Ran lint on variant release: 107 issues found
Wrote HTML report to file:///C:/Users/uncao/Downloads/godot-master.20181113/platform/android/java/build/reports/lint-results.html
Wrote XML report to file:///C:/Users/uncao/Downloads/godot-master.20181113/platform/android/java/build/reports/lint-results.xml

반응형

'game > godot' 카테고리의 다른 글

Godot - Services for iOS  (0) 2018.11.27
Gdoot - Android in-app purchases  (0) 2018.11.26
Godot3 - Compiling for Android  (0) 2018.11.23
Godot3 - ConfigFile  (0) 2018.11.21
Godot3 - I/O  (0) 2018.11.20