Unity Cloud Build에서 Admob에 가입한 Unity 프로젝트에 대한 구성 오류 발생 시 대응 방법

환경을 확인하다

  • Unity 버전 5.5.0f3
  • Google Mobile Ads Unity Plugin버전은 3.1.3
  • 이벤트


    Unity가 제작한 애플리케이션AdMob을 표시하기 위해 가져왔지만Google Mobile Ads Unity Plugin Unity Cloud Build에 iOS를 구축하는 경우 다음과 같은 오류가 발생합니다.Android 구성은 정상적으로 수행됩니다.
    log1.txt
    2479: [Unity] 'pod' command not found; unable to generate a usable Xcode project. You can install cocoapods with the Ruby gem package manager:
    2480: [Unity]  > sudo gem install -n /usr/local/bin cocoapods
    2481: [Unity]  > pod setup
    
    log2.txt
    2491: [Unity] Error running cocoapods. Please ensure you have at least version  1.0.0.  You can install cocoapods with the Ruby gem package manager:
    2492: [Unity]  > sudo gem install -n /usr/local/bin cocoapods
    2493: [Unity]  > pod setup
    2494: [Unity] 'pod --version' returned status: 1
    2495: [Unity] output:
    

    까닭


    Google Mobile Ads Unity Plugin 내부에서 iOS 라이브러리의 의존 관계를 관리하기 위해 코코팟을 사용하지만, 유니티 클라우드 빌드에서 코코팟을 사용할 수 없기 때문이다.

    해결책


    임시 대응일 뿐이지만 Assets/GoogleMobileAds/Editor/AdMobDependencies.cs의 53줄에서 63줄로 논평을 하고 스크립트를 통해 라이브러리의 의존 관계를 해결하지 않는 것으로 변경했다.
    AdMobDependencies.cs
    #elif UNITY_IOS
    //        Type iosResolver = Google.VersionHandler.FindClass(
    //            "Google.IOSResolver", "Google.IOSResolver");
    //        if (iosResolver == null) {
    //            return;
    //        }
    //        Google.VersionHandler.InvokeStaticMethod(
    //            iosResolver, "AddPod",
    //            new object[] { "Google-Mobile-Ads-SDK" },
    //            namedArgs: new Dictionary<string, object>() {
    //                { "version", "7.13+" }
    //            });
    #endif  // UNITY_IOS
    
    위의 설명을 통해 수동으로 가져오기Google Mobile Ads SDK를 수행해야 하므로 Unity 프로젝트Assets/Plugins/iOS 내에서 구성GoogleMobileAds.framework해야 합니다.
    마지막으로 Xcode 프로젝트Enable Modules (C and Objective-C)를 자동으로 YES로 설정하기 위해 Assets/Editor 근처에서 다음 PostProcessBuild 스크립트를 설정하십시오.(Unity에서 Editor 폴더를 특수 폴더로 처리합니다.자세한 내용은 여기. 참조)
    XcodePostProcessBuild.cs
    using UnityEditor;
    using UnityEditor.Callbacks;
    using UnityEditor.iOS.Xcode;
    
    public static class XcodePostProcessBuild
    {
        [PostProcessBuild]
        public static void OnPostProcessBuild(BuildTarget target, string path)
        {
            if (target != BuildTarget.iOS)
            {
                return;
            }
    
            var project = new PBXProject();
            project.ReadFromFile(PBXProject.GetPBXProjectPath(path));
    
            var projectGuid = project.TargetGuidByName(PBXProject.GetUnityTargetName());
            // Enable Modules (C and Objective-C)をYESに設定する
            project.SetBuildProperty(projectGuid, "CLANG_ENABLE_MODULES", "YES");
    
            project.WriteToFile(PBXProject.GetPBXProjectPath(path));
        }
    }
    

    이렇게 되면 Unity Cloud Build에서도 iOS를 통해 구축할 수 있다.

    참고 자료

  • 구글 모바일 Ads SDK Developers 포럼
  • Google Mobile Ads Unity Plugin
  • Google Mobile Ads SDK
  • 좋은 웹페이지 즐겨찾기