Version: 2021.1
언어: 한국어
Play Asset Delivery
Android 심볼 활성화

빠른 개발 반복을 위한 앱 패치

프로젝트 규모에 따라 Android 앱 빌드에는 상당한 시간이 소요될 수 있습니다. 개발 과정 중에 반복을 보다 신속하게 수행하기 위해 앱 패키지를 다시 빌드하지 않고 패치할 수 있습니다. 빌드를 패치하면 스크립트 관련 파일만 기기로 전송됩니다.

Android의 빌드 설정 창
Android의 빌드 설정 창

앱 패치하기

앱을 패치하려면 먼저 앱을 빌드하고 기기에 앱을 설치해야 합니다. 자세한 내용은 Android용 앱 빌드를 참조하십시오.

중요: Chrome OS 기반 기기에서는 앱 패치가 지원되지 않습니다.

앱을 패치하려면 다음 단계를 따르십시오.

  1. 스크립트 파일을 업데이트합니다.

    참고: 게임 오브젝트에 연결된 스크립트의 레이아웃을 변경하면(예: 새로운 public 변수 추가) 스크립트 전용 빌드와 패치 프로세스에 실패하게 됩니다.

  2. 에디터에서 File > Build Settings 를 클릭합니다.

  3. Build Type 드롭다운 메뉴에서 Development 를 선택합니다.

  4. IL2CPP 스크립팅 백엔드를 사용하는 경우 다음 단계를 따르십시오. 해당하지 않는 경우 다음 단계로 건너뛰십시오.

    1. Player Settings 버튼을 클릭합니다.
    2. Inspector 에서 Other Settings 섹션을 확장합니다.
    3. Strip Engine Code 가 선택되어 있는 경우 선택 해제합니다.
  5. Scripts Only Build 체크박스를 선택합니다.

  6. Patch 또는 Patch & Run 을 클릭합니다.

업데이트한 스크립트 파일을 빌드하면 Unity가 업데이트된 파일을 Run Device 필드에 명시된 기기로 전송합니다.

자체 빌드 파이프라인을 구현했다면 BuildPipeline.BuildPlayer 메서드에 BuildOptions.BuildScriptsOnlyBuildOptions.PatchPackage 옵션을 전달하여 스크립팅 API를 사용해 앱을 패치할 수 있습니다.

예제:

    BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = new[] { "Assets/Scene1.unity"};
        buildPlayerOptions.target = BuildTarget.Android;

        // Build & Run the game normally, this will install the application on the android device
        buildPlayerOptions.options = BuildOptions.AutoRunPlayer
        BuildPipeline.BuildPlayer(buildPlayerOptions);

        // Modify some scripts in your Unity Project
        // Patch & Run the application
        // (Unity will only recompile script files and push only the necessary files to the android device)
        buildPlayerOptions.options = BuildOptions.BuildScriptsOnly | BuildOptions.PatchPackage | BuildOptions.AutoRunPlayer;
        BuildPipeline.BuildPlayer(buildPlayerOptions);

앱 패치는 어떻게 작동합니까?

Unity가 업데이트된 스크립트를 포함하는 파일을 앱의 캐시 폴더로 전송합니다. 시동된 앱은 파일을 로드하기 전에 캐시 폴더를 확인합니다. 앱이 필요한 파일을 찾으면 앱의 데이터 폴더가 아닌 캐시 폴더의 파일이 로드됩니다.

사용하는 스크립팅 백엔드에 따라 Unity가 전송하는 파일이 달라집니다.

Mono

프로젝트 스크립트 파일, 패키지 스크립트 파일이나 asmdef 파일에서 컴파일된 관리되는 어셈블리가 /storage/emulated/0/Android/data/<PackageName>/cache/ScriptOnly/<UnityVersion>/mono/Managed로 전송됩니다.

IL2CPP

  • libil2cpp.so가 /data/data/<PackageName>/cache/ScriptOnly/<UnityVersion>/il2cpp로 전송됩니다.

    참고: 내부 캐시입니다. Android 7.0에 도입된 보안 개선 사항으로 인해 에뮬레이트된 스토리지에서 동역학 라이브러리를 로드할 수 없습니다. 자세한 내용은 Android 개발자 웹사이트의 Android 7.0 동작 변경 사항을 참조하십시오.

  • IL2CPP 리소스 파일이 /storage/emulated/0/Android/data/<PackageName>/cache/ScriptOnly/<UnityVersion>/il2cpp로 전송됩니다.

패치 파일 지우기

Android 스토리지 설정을 사용하여 앱의 캐시를 지울 수 있습니다. 그러면 스크립트 전용 빌드 프로세스에 의해 설치된 패치 파일이 삭제됩니다. 기기에서 캐시를 지우려면 설정으로 이동하여 애플리케이션 목록을 엽니다. 일반적으로 여기에는 저장된 데이터 및/또는 캐시를 지울 수 있는 옵션이 있습니다. 일부 Android OS 구현에서는 스토리지 옵션으로 이동하여 캐시를 지울 옵션을 찾아야 합니다.


2018–11–13 페이지 게시됨

Play Asset Delivery
Android 심볼 활성화