game/godot

Godot3 - Compiling for Android

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

Compiling for Android

Note

For most cases, using the built-in deployer and export templates is good enough. Compiling the Android APK manually is mostly useful for custom builds or custom packages for the deployer.
대부분의 경우 기본 제공 배포자 및 내보내기 템플릿을 사용하면 충분합니다. Android APK를 수동으로 컴파일하는 것은 배포자 용 맞춤 빌드 또는 맞춤 패키지에 주로 유용합니다.

Also, you still need to do all the steps mentioned in the Exporting for Android tutorial before attempting your custom export template.
또한 사용자 정의 내보내기 템플릿을 시도하기 전에 Android 용 내보내기 자습서에서 언급 한 모든 단계를 수행해야합니다.

Requirements

For compiling under Windows, Linux or macOS, the following is required:
Windows, Linux 또는 macOS에서 컴파일하려면 다음이 필요합니다.

  • Python 2.7+ or Python 3.5+
  • SCons build system
    SCons 빌드 시스템
  • [Windows only] PyWin32 (optional, for parallel compilation)
    [Windows 전용] PyWin32 (옵션, 병렬 컴파일 용)
  • Android SDK version 23.0.3
    [Note: Please install all tools and extras of the SDK Manager]
    [참고 : SDK 관리자의 모든 도구와 추가 기능을 설치하십시오.]
  • Android build tools version 19.1
    Android 빌드 도구 버전 19.1
  • Android NDK r13 or later
    Android NDK r13 이상
  • Gradle
    (will be downloaded and installed automatically if missing)
    (누락되면 자동으로 다운로드되고 설치됩니다.)
  • JDK 6 or later (either OpenJDK or Oracle JDK) - JDK 9 & 10 do not work with current Gradle.
    JDK 6 이상 (OpenJDK 또는 Oracle JDK) - JDK 9 및 10은 현재 Gradle에서 작동하지 않습니다.

Setting up the buildsystem

Set the environment variable ANDROID_HOME to point to the Android SDK.
안드로이드 SDK를 가르키도록 환경 변수 ANDROID_HOME을 설정하십시오.

Set the environment variable ANDROID_NDK_ROOT to point to the Android NDK.
Android NDK를 가리 키도록 환경 변수 ANDROID_NDK_ROOT를 설정하십시오.

To set those environment variables on Windows, press Windows+R, type "control system", then click on Advanced system settings in the left pane, then click on Environment variables on the window that appears.
Windows에서 환경 변수를 설정하려면 Windows+R을 누르고 "control system"을 입력 한 다음 왼쪽 창에서 고급 시스템 설정을 클릭 한 다음 나타나는 창에서 환경 변수를 클릭하십시오.

To set those environment variables on Unix (e.g. Linux, macOS), use export ANDROID_HOME=/path/to/android-sdk and export ANDROID_NDK_ROOT=/path/to/android-ndk. Where /path/to/android-sdk and /path/to/android-ndk is the path where Android SDK and Android NDK are placed on your PC.
Unix (예 : Linux, macOS)에서 환경 변수를 설정하려면 export ANDROID_HOME=/path/to/android-sdkexport ANDROID_NDK_ROOT=/path/to/android-ndk. 여기서 /path/to/android-sdk 및 /path/to/android-ndk는 Android SDK 및 Android NDK가 PC에 저장되는 경로입니다.

Toolchain

We usually try to keep the Godot Android build code up to date, but Google changes their toolchain versions often, so if compilation fails due to wrong toolchain version, go to your NDK directory and check the current number, then set the following environment variable:
우리는 대개 Godot Android 빌드 코드를 최신 상태로 유지하려고 시도하지만 Google은 툴 체인 버전을 자주 변경하므로 잘못된 툴체인 버전으로 인해 컴파일이 실패하면 NDK 디렉토리로 이동하여 현재 번호를 확인한 후 다음 환경 변수를 설정하십시오.

NDK_TARGET (by default set to "arm-linux-androideabi-4.9")

Building the export templates

Godot needs two export templates for Android: the optimized "release" template (android_release.apk) and the debug version (android_debug.apk). Compiling the standard export templates is done by calling scons with the following arguments:
Godot은 Android 용으로 두 가지 내보내기 템플릿, 즉 최적화 된 "릴리스"템플릿 (android_release.apk)과 디버그 버전(android_debug.apk)이 필요합니다. 표준 내보내기 템플릿을 컴파일하려면 다음 인수를 사용하여 scons를 호출합니다.

  • Release template (used when exporting with "Debugging Enabled" OFF)
    릴리스 템플릿 ("Debugging Enabled" OFF로 내보낼 때 사용됨)
    C:\godot> scons platform=android target=release
    C:\godot> cd platform/android/java
    C:\godot\platform\android\java> gradlew build
    

    (on Linux or macOS, execute the gradlew script with ./gradlew build)
    (Linux 또는 macOS에서는 ./gradlew 빌드로 gradlew 스크립트를 실행하십시오)

The resulting APK is in:
결과 APK는 다음과 같습니다.

bin\android_release.apk
  • Debug template (used when exporting with "Debugging Enabled" ON)
    디버그 템플릿 ("Debugging Enabled" ON으로 설정하여 내보내기 할 때 사용)
    C:\godot> scons platform=android target=release_debug
    C:\godot> cd platform/android/java
    C:\godot\platform\android\java> gradlew build
    

    The resulting APK is in:
    결과 APK는 다음과 같습니다.

    bin\android_debug.apk
  • Faster compilation

    If you are on Unix or installed PyWin32 on Windows and have multiple CPU cores available, you can speed up the compilation by adding the -jX argument to the SCons command, where X is the number of cores that you want to allocate to the compilation, e.g. scons -j4.
    Unix 또는 Windows에서 PyWin32를 설치하고 여러개의 CPU코어를 사용할 수있는 경우 SCons 명령에 -jX 인수를 추가하여 컴파일 시간을 단축 할 수 있습니다. 여기서 X위치에 코어수를 할당합니다. scons -j4.

    Adding support for x86 devices

    If you also want to include support for x86 devices, run the scons command a second time with the android_arch=x86 argument before building the APK with Gradle. For example for the release template:
    x86 장치에 대한 지원을 포함하려면 Gradle을 사용하여 APK를 빌드하기 전에 android_arch=x86 인수로 scons 명령을 두 번 실행하십시오. 릴리스 템플릿 예 :

    C:\godot> scons platform=android target=release
    C:\godot> scons platform=android target=release android_arch=x86
    C:\godot> cd platform/android/java
    C:\godot\platform\android\java> gradlew build
    

    This will create a fat binary that works in both platforms, but will add about 6 megabytes to the APK.
    이렇게하면 두 플랫폼 모두에서 작동하는 뚱뚱한 바이너리가 생성되고 APK에 약 6 메가 바이트가 추가됩니다.

    Troubleshooting

    It might be necessary to clean the build cache between two APK compilations, as some users have reported issues when building the two export templates one after the other.
    두개의 내보내기 템플릿을 차례로 빌드 할 때 일부 사용자가 문제를 보고 했으므로 두개의 APK 컴파일간에 빌드 캐시를 정리해야 할 수도 있습니다.

    Using the export templates

    As export templates for Android, Godot needs release and debug APKs that were compiled against the same version/commit as the editor. If you are using official binaries for the editor, make sure to install the matching export templates, or to build your own from the same version.
    Android 용 내보내기 템플릿으로, Godot는 편집기와 동일한 버전/커밋에 대해 컴파일 된 APK를 릴리스 및 디버그해야합니다. 에디터용 공식 바이너리를 사용하는 경우 일치하는 내보내기 템플릿을 설치하거나 동일한 버전에서 직접 빌드하십시오.

    When exporting your game, Godot opens the APK, changes a few things inside and adds your files.
    게임을 내보낼 때 Godot은 APK를 열고 내부의 몇 가지 사항을 변경하고 파일을 추가합니다.

    Installing the templates

    The newly-compiled templates (android_debug.apk and android_release.apk) must be copied to Godot's templates folder with their respective names. The templates folder can be located in:
    새로 컴파일된 템플릿(android_debug.apk 및 android_release.apk)은 각각의 이름과 함께 Godot의 템플릿 폴더에 복사해야합니다. 템플릿 폴더는 다음 위치에 있습니다:

    • Windows: C:\Users\[username]\AppData\Roaming\Godot\templates\[version]\
    • Linux: /home/[username]/.local/share/godot/templates/[version]/
    • macOS: /Users/[username]/Library/Application Support/Godot/templates/[version]/

    [version] is of the form major.minor[.patch].status using values from version.py in your Godot source repository (e.g. 3.0.5.stable or 3.1.dev`). You also need to write this same version string to a version.txt file located next to your export templates.
    [version]은 Godot 소스 저장소의 version.py에있는 값을 사용하여 major.minor[.patch].status 형식입니다 (예: 3.0.5.stable 또는 3.1.dev`). 또한 이 동일한 버전 문자열을 내보내기 템플릿 옆에있는 version.txt 파일에 작성해야합니다.

    However, if you are writing your custom modules or custom C++ code, you might instead want to configure your APKs as custom export templates here:
    그러나 맞춤 모듈이나 맞춤 C ++ 코드를 작성하는 경우 여기에서 APK를 맞춤 내보내기 템플릿으로 구성 할 수 있습니다.

    You don't even need to copy them, you can just reference the resulting file in the bin\ directory of your Godot source folder, so that the next time you build you will automatically have the custom templates referenced.
    복사 할 필요가 없으며, Godot 소스 폴더의 bin\ 디렉토리에서 결과 파일을 참조하기만 하면 다음에 빌드 할 때 자동으로 사용자 정의 템플리트가 참조됩니다.

    Troubleshooting

    Application not installed

    Android might complain the application is not correctly installed. If so, check the following:
    Android가 애플리케이션이 올바르게 설치되지 않았다는 불만을 나타낼 수 있습니다. 그렇다면 다음을 확인하십시오.

    • Check that the debug keystore is properly generated.
      디버그 키 스토어가 제대로 생성되었는지 확인하십시오.
    • Check that jarsigner is from JDK 6, 7 or 8.
      jarsigner가 JDK6, 7 또는 8인지 확인하십시오.

    If it still fails, open a command line and run logcat:
    그래도 실패하면 명령 행을 열고 logcat을 실행하십시오.

    C:\android-sdk\platform-tools> adb logcat

    And check the output while the application is installed. Reason for failure should be presented there.
    응용 프로그램이 설치되어있는 동안 출력을 확인하십시오. 실패 이유를 제시해야합니다.

    Seek assistance if you can't figure it out.
    도움이되지 않는다면 도움을 요청하십시오.

    Application exits immediately

    If the application runs but exits immediately, there might be one of the following reasons:
    응용 프로그램이 실행되지만 즉시 종료되는 경우 다음 이유중 하나일 수 있습니다.

    • Make sure to use export templates that match your editor version; if you use a new Godot version, you have to update the templates too.
      편집기 버전과 일치하는 내보내기 템플릿을 사용해야합니다. 새로운 Godot 버전을 사용하는 경우 템플릿을 업데이트해야합니다.
    • libgodot_android.so is not in lib/armeabi-v7a or lib/armeabi
      libgodot_android.so는 lib/armeabi-v7a 또는 lib/armeabi에 없습니다.
    • Device does not support armv7 (try compiling yourself for armv6)
      장치가 armv7을 지원하지 않습니다 (armv6에 대해 직접 컴파일 해보십시오).
    • Device is Intel, and apk is compiled for ARM.
      장치는 Intel이고 apk는 ARM 용으로 컴파일되었습니다.

    In any case, adb logcat should also show the cause of the error.
    어쨌든, adb logcat은 오류의 원인도 표시해야합니다.

    Compilation fails

    On Linux systems with Kernel version 4.3 or newer, compilation may fail with the error "pthread_create failed: Resource temporarily unavailable."
    커널 버전이 4.3 이상인 Linux 시스템에서는 "pthread_create failed : Resource temporarily unavailable"오류로 인해 컴파일이 실패 할 수 있습니다.

    This is because of a change in the way Linux limits thread creation. But you can change those limits through the command line. Please read this section thoroughly before beginning.
    이는 Linux가 쓰레드 생성을 제한하는 방식의 변화 때문입니다. 그러나 명령 줄을 통해 이러한 제한을 변경할 수 있습니다. 시작하기 전에이 섹션을 자세히 읽으십시오.

    First open a terminal, then begin compilation as usual (it may be a good idea to run a --clean first). While compiling enter the following in your terminal:
    먼저 터미널을 열고 평소와 같이 컴파일을 시작하십시오 (먼저 --clean을 실행하는 것이 좋습니다). 컴파일하는 동안 터미널에 다음을 입력하십시오 :

    user@host:~/$ top -b -n 1 | grep scons

    The output should list a scons process, with its PID as the first number in the output. For example the PID 1077 in the output shown below:
    출력은 PID를 출력의 첫 번째 숫자로 사용하여 scons 프로세스를 나열해야합니다. 예를 들어 아래와 같은 출력의 PID 1077 :

    user@host:~/$ top -b -n 1 | grep scons
    1077 user     20   0   10544   1628   1508 S 0.000 0.027   0:00.00 grep
    

    Now you can use another command to increase the number of processes that scons is allowed to spawn. You can check its current limits with:
    이제 다른 명령을 사용하여 scons가 생성 할 수있는 프로세스의 수를 늘릴 수 있습니다. 다음과 같이 현재 한계를 확인할 수 있습니다.

    user@host:~/$ prlimit --pid=1077 --nproc

    You can increase those limits with the command:
    다음 명령을 사용하여 한계를 높일 수 있습니다.

    user@host:~/$ prlimit --pid=1077 --nproc=60000:60500

    Obviously you should substitute the scons PID output by top and a limits that you think suitable. These are in the form --nproc=soft:hard where soft must be lesser than or equal to hard. See the man page for more information.
    분명히 scons PID 출력을 상단과 적당한 것으로 대체해야합니다. 이들은 --nproc=soft:hard 형식으로되어 있습니다. 여기서 soft는 하드보다 작거나 같아야합니다. 자세한 내용은 맨 페이지를 참조하십시오.

    If all went well, and you entered the prlimit command while scons was running, then your compilation should continue without the error.
    scons가 실행되는 동안 모두 제대로 작동하고 prlimit 명령을 입력하면 오류없이 컴파일 작업을 계속 진행해야합니다.

    정리

    1. python27, pywin32 설치, 기본값 설정
      # python27 설치
      scoop install python27
      scoop reset python27
      
      # python 3+ 설치, 기본값 설정
      scoon install python
      scoon reset python
      pip install pywin32
      
    2. scons 설치
      scoop install scons
    3. Android Studio 설치
      • 프로젝트 생성화면 우 하단 Configure > SDK manager
      • Android SDK 창
        • Android SDK Location: 폴더 정보가 있다.
        • SDK Tool 탭 선택
          • NDK 선택
            • NDK 폴더는 "Android SDK Location" 하위에 ndk-bundle 폴더에 다운로드 된다.
          • Android SDK Build-Tools 를 선택 후 하단에 Show Package Details 선택
            • 19.1.0 을 선택
      • OK 를 선택하면 필요한 SDK가 설치된다.
    4. Path 등록
      • Android SDK Location: 폴더를 "ANDROID_HOME" 으로 Path 를 등록하자.
        Windows10 이라면 "C:\Users\[username]\AppData\Local\Android\Sdk" 일 것이다.
      • NDK 폴더를 "ANDROID_NDK_ROOT" 로 Paht를 등록하자.
        Windows10 이라면 "C:\Users\[username]\AppData\Local\Android\Sdk\ndk-bundle" 일 것이다.
    5. godot 다운로드
    6. godot 폴더에서 scons 실행
      • c:\godot 폴더라면
      • * Debug 용
        --config=force 옵션은 캐시를 사용하지 않고 다시 컴파일한다.
        C:\godot> scons platform=android target=release_debug
        ... 컴파일 ...
        C:\godot> cd platform/android/java
        C:\godot\platform\android\java> gradlew build
        
        * Release 용
        C:\godot> scons platform=android target=release
        ... 컴파일 ...
        C:\godot> cd platform/android/java
        C:\godot\platform\android\java> gradlew build
        
        * Release x86 디바이스 지원 추가
        C:\godot> scons platform=android target=release
        ... 컴파일 ...
        C:\godot> scons platform=android target=release android_arch=x86
        ... 컴파일 ...
        C:\godot> cd platform/android/java
        C:\godot\platform\android\java> gradlew build
        
      • 모두 컴파일 시간은 제법 걸린다. 차한잔 여유로 기다리자.


    반응형

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

    Gdoot - Android in-app purchases  (0) 2018.11.26
    Godot3 - Compiling for Android - Troubleshooting Fail  (0) 2018.11.24
    Godot3 - ConfigFile  (0) 2018.11.21
    Godot3 - I/O  (0) 2018.11.20
    Godot3 - I/O Encrypting save games  (0) 2018.11.20