Unity iOS Xcode 빌드시 Info.plist 자동 수정 간단 구현

반응형

코드 작성

using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using System.IO;
using System.Xml;

public class PostProcessBuild : MonoBehaviour
{
    [PostProcessBuild]
    public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
    {
        if (target == BuildTarget.iOS)
        {
            // Info.plist 파일 경로 설정
            string plistPath = Path.Combine(pathToBuiltProject, "Info.plist");

            // 파일 내용을 문자열로 읽어오기
            var plistContent = File.ReadAllText(plistPath);

            // XML 문서로 로드
            var xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(plistContent);

            // 루트 노드 가져오기
            var rootNode = xmlDoc.DocumentElement;

            // 새로운 키-값 쌍 추가
            AddStringElement(rootNode, "NSCameraUsageDescription", "This app requires camera access");
            AddStringElement(rootNode, "NSLocationWhenInUseUsageDescription", "This app requires location access");

            // 수정된 plist 파일 저장
            File.WriteAllText(plistPath, xmlDoc.OuterXml);

            Debug.Log("Info.plist 수정 완료.");
        }
    }

    private static void AddStringElement(XmlNode rootNode, string key, string value)
    {
        // 키 노드 생성
        var keyNode = rootNode.OwnerDocument.CreateElement("key");
        keyNode.InnerText = key;

        // 값 노드 생성
        var valueNode = rootNode.OwnerDocument.CreateElement("string");
        valueNode.InnerText = value;

        // 루트 노드에 키-값 쌍 추가
        rootNode.AppendChild(keyNode);
        rootNode.AppendChild(valueNode);
    }
}

 

작성 후 Assets / Editor 이름의 폴더를 만든 후 그 안에 넣고 빌드하면 됩니다.

반응형