Unity 5의 PostProcess Build로 Xcode Capability를 설정하는 방법

6490 단어 Unity
PostProcessBuild를 통해 Xcode의Capability를 설정하는 여러 가지 방법.
Push 설정 등 효과적인 거.

대략적인 절차


In-App Purchase 등 entitlements 파일의 capability가 필요하지 않을 경우

  • 유니티 창고에서 최신 Xcode Manipulation API(이하 Xcode API로 약칭)를 가져옵니다
  • 기존 프로젝트를 가져올 수 있도록 수정
  • Script
  • 최신 API에 쓰기

    iCloud 등 entitlements 파일의capability가 필요한 경우

  • Xcode Project 구축 후 생성
  • capability를 설정하고entitlements 파일을 만듭니다
  • PostProcessBuild에 entitlements 파일과 구축 속성 추가
  • 이후에 entitlements file가 필요하지 않은 상황에서 합류
  • 세부 프로세스


    entitlements 파일의capability가 필요하지 않은 경우


    Unity 창고에서 최신 Xcode API 가져오기


  • https://bitbucket.org/Unity-Technologies/xcodeapi창고로 가세요.
  • 라이센스 파일 읽기 및 라이센스 이해
  • 분기 획득PostProcessBuildstable
  • 창고 내의 Xcode 폴더를 데스크톱 등 작업 환경으로 복사
  • 터미널에서 Xcode 디렉토리로 이동하여 다음 명령으로 C#의 소스 코드의namespace를 변경합니다.가령 변경된namespace는Revision 102
  • $ pwd
    Users/fullcorder/Desktop/Xcode
    $ find . -name '*.cs' | xargs sed -i "" 's/UnityEditor.iOS.Xcode/Unity2017.iOS.Xcode/g'
    
  • Xcode/Prooperties 디렉토리가 필요하지 않으므로 삭제
  • 각 Xcode 폴더를 Unity 프로젝트의 Editor 디렉토리로 가져오기
  • Unity2017.iOS.Xcode 스크립트를 만들고 다음 방법PostProcessBuild으로 추가
    Unity2017.1의 참조
    https://docs.unity3d.com/2017.1/Documentation/ScriptReference/iOS.Xcode.PBXProject.AddCapability.html
    [PostProcessBuild]
    public static void AddCapability(BuildTarget buildTarget, string path)
    {
        if(EditorUserBuildSettings.activeBuildTarget != BuildTarget.iOS)
        {
            return;
        }
    
        string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
    
        var proj = new PBXProject();
        proj.ReadFromString(File.ReadAllText(projPath));
    
        string target = proj.TargetGuidByName(TargetGroup);
    
        proj.AddCapability(target, PBXCapabilityType.PushNotifications);
        proj.AddCapability(target, PBXCapabilityType.InAppPurchase);
    
        File.WriteAllText(projPath, proj.WriteToString());
    }
    
  • 이상이면 구축 가능
  • entitlements 파일의capability가 필요한 경우


    entitlements 파일이 필요할 때 entitlements 파일을 만드는 파일PBXProject#AddCapability을 추가한 다음 entitlements 파일이 필요하지 않은 상황에서 합류합니다

    entitlements 파일 만들기

  • Unity로 iOS 구축 및 Xcode Project 토출
  • 캐비닛 라벨을 제거하고 Push 등을 이런 상태로 설정하고PostProcessBuild 이후의 형식
  • entitlements 파일은 Xcode 프로젝트에서 제작되며, Unity Project
  • 를 꺼내 가져옵니다.
  • Unity Forum의 다음 우체통에서 다운로드PostProcessBuildUnity
  • 가져오기
  • EntitlementsPostProcess.csEntitlementsPostProcess.csEnitlements File에 entitlements 파일 설정
  • 이상 entitlements 파일 추가 완료
  • 이후 앞의 순서에 따라 구축하면 안전하게 설정을 반영할 수 있다
    (Plaist 편집은 별도의 스크립트로 작성)

    기타


    Unity 2017부터 사용 가능한 API일 수 있으며, 긴 프로젝트는 플랫폼 의존 컴파일에서 Unity 5만 한정하고 이번에 변경된namespace를 사용하는 것이 좋다.

    컨디션


    macOS Sierra
    Unity 5.5.3f1
    Xcode 8.3.2
    참고 자료
    https://bitbucket.org/Unity-Technologies/xcodeapi
    https://forum.unity3d.com/threads/how-to-put-ios-entitlements-file-in-a-unity-project.442277/

    좋은 웹페이지 즐겨찾기