Unity3D/Editor

[에디터확장] WindowsIL2CPPBuildBackUpThisFolderDeleter

blueasa 2022. 9. 14. 22:17

[사용엔진] Unity 2021.3.9f1

 

Unity 2021을 설치하고 Android 빌드를 하니 빌드 파일 위치에 'BuildFileName_BackUpThisFolder_ButDontShipItWithYourGame'라는 폴더가 생긴다.

 

난 프로젝트 메인 위치에 빌드 파일 생성하게 하다보니 'BuildFileName_BackUpThisFolder_ButDontShipItWithYourGame' 폴더가 git이 인식하는 위치에 생성되는데다

BuildFileName을 계속 넘버링하면서 만들다보니 위의 폴더도 계속 생성된다.

 

  [문제점]

1. 폴더가 파일명에 맞게 계속 생성돼서 계속 많아진다.(SSD/HDD 용량이슈 등)

2. 생성되는 폴더 위치가 git 관리 영역이라 git에 생성된 파일로 보여서 문제가 생긴다.(파일 갯수도 많음)

 

그래서 유니티에 생성 안하게 하는 옵션이 없나하고 검색해 봤지만 별시리 없는 것 같고..

계속 검색하다보니 PostprocessBuild로 해당 폴더를 삭제 해버리는 방식을 사용하는 포스팅을 보고 적용해서 잘되는 것을 확인하고 올려 둔다.

 

[해결방법]

- 아래 Script를 Editor 폴더에 넣자~

 

using System.IO;
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;

public sealed class WindowsIL2CPPBuildBackUpThisFolderDeleter : IPostprocessBuildWithReport
{
    public int callbackOrder => 0;
    // 확정된 폴더명은 readonly 변수로 만듬
    private readonly string m_strBackUpThisFolder_ButDontShipItWithYourGame = "BackUpThisFolder_ButDontShipItWithYourGame";

    public void OnPostprocessBuild(BuildReport report)
    {
        var summary = report.summary;
        var platform = summary.platform;

        if (platform != BuildTarget.StandaloneWindows 
            && platform != BuildTarget.StandaloneWindows64
            && platform != BuildTarget.Android  // Android 플랫폼에서도 작동하도록 추가
            && platform != BuildTarget.iOS)     // iOS 플랫폼에서도 작동하도록 추가
        {
            return;
        }

        if (summary.options.HasFlag(BuildOptions.Development))
        {
            return;
        }

        var outputPath = summary.outputPath;
        var outputDirectoryPath = Path.GetDirectoryName(outputPath);
        
        // 빌드 폴더 이름이 FileName을 따라가서 FileName을 폴더명으로 쓰도록 수정
        var outputFileName = Path.GetFileNameWithoutExtension(outputPath);
        //var productName = PlayerSettings.productName;

        var backUpThisFolderPath = $"{outputDirectoryPath}/{outputFileName}_{m_strBackUpThisFolder_ButDontShipItWithYourGame}";

        if (!Directory.Exists(backUpThisFolderPath))
        {
            return;
        }

        Directory.Delete(backUpThisFolderPath, true);
    }
}

 

아래 참조한 포스팅의 스크립트는 Windows에서 Android 플랫폼 빌드를 했을때 처리가 안되고,

BuildFileName을 제대로 찾지 못해서 스크립트 내용 중 일부를 수정해서 제대로 삭제하는 것까지 확인함.

 

[추가 처리]

혹시 몰라서 git에 잘못 올라가지 않도록, git ignore list에 아래와 같이 추가 해놓음.

[git ignore list 추가] *_BackUpThisFolder_ButDontShipItWithYourGame/

 

 

[참조] https://baba-s.hatenablog.com/entry/2022/02/08/090000

 

【Unity】Windows IL2CPP ビルドした時に生成される XXXX_BackUpThisFolder_ButDontShipItWithYourGame を自動で削

ソースコード using System.IO; using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; public sealed class WindowsIL2CPPBuildBackUpThisFolderDeleter : IPostprocessBuildWithReport { public int callbackOrder => 0; public void OnPo

baba-s.hatenablog.com

 

반응형