블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2702)
Unity3D (793)
Programming (471)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (224)
협업 (57)
3DS Max (3)
Game (12)
Utility (136)
Etc (96)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (50)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
12-08 12:53

달력

« » 2023.12
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

공지사항

최근에 올라온 글

반응형

Xcode 15

Unity 2023.3.10f1

----

 

[Xcode Build Error]

Assertion failed: (false && "compact unwind compressed function offset doesn't fit in 24 bits"), function operator(), file Layout.cpp, line 5758.

 

Xcode 15로 업데이트 후 빌드를 했더니,

유니티 빌드는 정상적으로 됐는데 Xcode로 넘어와서는 위와 같은 에러를 내면서 빌드가 안된다.

혹시나해서 Mac OS 14로 업데이트도 해봤는데 빌드 실패함.

 

OTHER_LDFLAGS에 -ld_classic을 추가하라는 내용을 보고(아래 링크 참조) 추가해서 정상적으로 빌드 되는 것을 확인 함.

 

    ...
    var pbxProject = new PBXProject();
    pbxProject.ReadFromFile(projectPath);
 
    //Unity Framework
    target = pbxProject.GetUnityFrameworkTargetGuid();
    pbxProject.AddBuildProperty(target, "OTHER_LDFLAGS", "-ld_classic");

 

 

[참조] https://forum.unity.com/threads/project-wont-build-using-xode15-release-candidate.1491761/#post-9355667

 

Bug - Project won't build using Xode15 release candidate.

Hi there, just tried to build the project using Xcode15 RC (Released yesterday). And failed with the following error: Showing Recent Issues...

forum.unity.com

[참조] https://issuetracker.unity3d.com/issues/building-projects-with-il2cpp-scripting-backend-for-apple-platforms-fails-with-xcode-15-dot-0b6-or-newer

 

Unity IssueTracker - Building projects with IL2CPP scripting backend for Apple platforms fails with Xcode 15.0b6 or newer

Xcode >= 15.0b6 contains a change to the "ProductName" in the "version.plist", which Unity will fail to parse. Because of that, U...

issuetracker.unity3d.com

 

 

반응형
Posted by blueasa
, |
반응형

오늘 저는 다음 정보와 함께 "Command CodeSign failed with a nonzero exit code" 오류를 받았습니다 .

ID 서명: "내 ID"
/usr/bin/codesign --force --sign xxxxxxxx --timestamp=none /path/to/derived/data...
xxxxxxxx: ID를 찾을 수 없음 0이 아닌
종료 코드로 인해 명령 CodeSign이 실패함

이 오류가 발생하는 데는 몇 가지 이유가 있을 수 있습니다. 방금 나에게 일어난 일을 공유하겠습니다.

#문제의 원인

키체인 액세스 앱 에서 키체인을 망칠 때 이 문제가 발생합니다 . 새 인증서를 만들고 이전 인증서를 삭제하려고 했습니다. 그리고 Xcode가 삭제된 것을 사용하려고 시도한 것 같습니다.

 

#해결책

내 솔루션은 Xcode 문제가 발생했을 때 항상 수행하는 작업인 Clean Build Folder입니다.

  1. 옵션 키 또는 ⌘ - CMD + ⇧ - SHIFT⌥ + - option + K 를 누른 상태에서 메뉴 제품 > 빌드 폴더 정리를 클릭합니다 .
  2. Xcode를 닫습니다. 이것은 저에게 매우 중요한 단계입니다. 닫아야 작동합니다.
  3. 앱을 다시 열면 키체인에 액세스하라는 대화 상자가 표시될 수 있습니다. 액세스 권한을 부여하면 문제가 해결됩니다.

 

----

Today I got the "Command CodeSign failed with a nonzero exit code" error with the following information.

Signing Identity: "My identity"
/usr/bin/codesign --force --sign xxxxxxxx --timestamp=none /path/to/derived/data...
xxxxxxxx: no identity found
Command CodeSign failed with a nonzero exit code

There might be several reasons that cause this error. I will share one that just happened to me.

#Cause of the problem

I got this problem when I mess up with keychains in the Keychain Access app. I created a new certificate and tried to delete an old one. And I think Xcode was attempting to use the deleted one.

 

#Solution

My solution is what we always do when we got an Xcode problem, Clean Build Folder.

  1. Click menu Product > Clean Build Folder while holding down option key or ⌘ - CMD + ⇧ - SHIFT + ⌥ - option + K.
  2. Close the Xcode. This is a very important step for me. I need to close it to work.
  3. Reopen the app, and you might see the dialog asking to access the keychain. Grant the access, and the problem should go away.

 

 

[출처] https://sarunw.com/posts/how-to-fix-command-codesign-failed/

 

How to fix "no identity found - Command CodeSign failed with a nonzero exit code" error in Xcode | Sarunw

There might be several reasons that cause this error. I will share one that just happened to me.

sarunw.com

[참조] https://intrepidgeeks.com/tutorial/error-handling-ios-development-error-command-codesign-failed-with-nonzero-exit

 

[오류 처리] iOS 개발 오류, command codesign failed with a nonzero exit code

문제. Xcode 실행 코드, error입니다. 아래와 같습니다.command codesign failed with a nonzero exit code 해결하다 1. 클렌징, command+shift+k 2. 컴퓨터를 재부팅하고 다시 실행

intrepidgeeks.com

 

반응형
Posted by blueasa
, |
반응형

[링크] https://cjh94.tistory.com/3

 

[ios]codesign이 변경하려고 합니다. 허용하려면 관리자 이름 및 암호를 입력하십시오.

새로운 프로젝트와 키체인을 받아서 작업 완료 후에 TestFlight에 올리려고 하니 발생했던 상황 빌드 파일마다 암호를 요청하고 보통 이런 경우 해결 방법은 비밀번호를 누르고. 허용이 아닌 항상

cjh94.tistory.com

 

 

반응형
Posted by blueasa
, |
반응형

[Link] https://stackoverflow.com/questions/69366799/xcode-13-ios15-is-taking-longer-than-expected-to-launch-it-shows-a-lldb-related

 

Xcode 13/iOS15 is taking longer than expected to launch, it shows a LLDB related message

I am using Xcode 13 on a Macbook Pro (Intel/2019) with macOS Big Sur 11.6 I am building and launching the app on a connecting iPhone X running iOS 15.0, I am also running a UI test suite based on

stackoverflow.com

 

반응형
Posted by blueasa
, |
반응형

 

[링크] https://velog.io/@jihoson94/xcode-failed-to-prepare-device-for-development-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95

 

xcode "failed to prepare device for development" 해결방법

React Native 개발 중 실제 device에 연결해서 테스트를 해야할 때, 빌드는 완료됐지만 ios장비와 xcode가 연결이 안된채 와 같은 dialog가 계속 spinning 되는 경우가 있습니다.이에 대한 해결책으로 검색해

velog.io

 

[추가]

Finder - 응용 프로그램(Applications) - Xcode.app에서 하위가 원래 안보이는데,

Xcode.app에서 '마우스 우클릭' -  '패키지 내용 보기' 눌러서 들어가면 된다.

반응형
Posted by blueasa
, |
반응형

Unity 2021.3.16f1

Xcode 14.2

Firebase 10.4.0

----

 

[빌드 에러]

pod install output:



Analyzing dependencies

[!] CocoaPods could not find compatible versions for pod "GTMSessionFetcher/Core":

  In Podfile:

    Firebase/Auth (= 10.6.0) was resolved to 10.6.0, which depends on

      FirebaseAuth (~> 10.6.0) was resolved to 10.6.0, which depends on

        GTMSessionFetcher/Core (< 4.0, >= 2.1)



    GoogleSignIn (= 6.0.2) was resolved to 6.0.2, which depends on

      GTMAppAuth (~> 1.0) was resolved to 1.3.1, which depends on

        GTMSessionFetcher/Core (< 3.0, >= 1.5)



    GoogleSignIn (= 6.0.2) was resolved to 6.0.2, which depends on

      GTMSessionFetcher/Core (~> 1.1)

 

Firebase 10.6.0이 업데이트 돼서 다시 한 번 iOS 빌드를 시도해 봤는데 여전히 에러가 난다.

(참조 : https://blueasa.tistory.com/2706)

 

[XCode] [!] Cocoapods could not find compatible versions for pod "GTMSessionFetcher/Core"

Unity 2021.3.16f1 Xcode 14.2 Firebase 10.4.0 ---- [빌드에러] pod install output: Analyzing dependencies [!] CocoaPods could not find compatible versions for pod "GTMSessionFetcher/Core": In Podfile: Firebase/Auth (= 10.4.0) was resolved to 10.4.0, whic

blueasa.tistory.com

 

그래도 다시 이리저리 검색해보다보니 해결했다는 글이 아래와 같이 있다.

UnayOzan commented on Feb 5
Fixed this error with changing the version in "GoogleSignIn.podspec.json" file.

Firebase/Auth (= 10.4.0) was resolved to 10.4.0, which depends on
FirebaseAuth (~> 10.4.0) was resolved to 10.4.0, which depends on
GTMSessionFetcher/Core (< 4.0, >= 2.1)

GoogleSignIn (~> **5.0.2**) was resolved to **5.0.2**, which depends on
  GTMSessionFetcher/Core (~> **1.1**)
I found the file in {user}.cocoapods/repos/cocoapods/Specs and then just search for "GoogleSignIn.podspec.json".
Find the folder with the same version with the error, in my case 5.0.2.
And then change its dependencies with the version 7.0.0 or something that works with the other packages.
In my project the solution was this;

 "dependencies": {
    "AppAuth": [
      "~> 1.5"
    ],
    "GTMAppAuth": [
      ">= 1.3",
      "< 3.0"
    ],
    "GTMSessionFetcher/Core": [
      ">= 1.1",
      "< 4.0"
    ]
After that I exited Xcode, deintagrated pods, cleaned cache and installed it again.
Everything works fine now.

[링크] https://github.com/firebase/firebase-unity-sdk/issues/621

 

[Bug] FirebaseAuth and GoogleSignIn iOS Build failure · Issue #621 · firebase/firebase-unity-sdk

[REQUIRED] Please fill in the following fields: Unity editor version: 2021.3.17f1 Firebase Unity SDK version: 10.4.0 Source you installed the SDK: .unitypackage Problematic Firebase Component: Auth...

github.com

 

글을 보면 아래와 같은 내용이 있다.

And then change its dependencies with the version 7.0.0 or something that works with the other packages.
In my project the solution was this;

에러도 나와 거의 같아서 확인해보니 GoogleSignIn 버전이 현재 6.0.2여서 GTMSessionFetcher/Core (~> 1.1)를 지원하는데,

설치한 FirebaseAuth 10.6.0은 GTMSessionFetcher/Core (< 4.0, >= 2.1)을 사용하고 있어서

GTMSessionFetcher/Core 버전이 서로 호환이 안되는 것 같다.

 

위 링크의 내용대로

GoogleSignIn 버전을 7.0.0(2023-03-27 기준 최신) 버전으로 변경하고 빌드를 다시해보니 깔끔하게 빌드가 잘 된다.

 

[추가]

빌드는 잘 되는데 회사 플랫폼에서 사용하는 GoogleSignIn이 6.0.2여서 7.0.0으로 올리면서 API 호환이 안돼서 로그인 시도할 때 Crash가 나면서 앱이 강제종료 된다.

6.2.4
  2.x 버전을 허용하도록 GTMSessionFetcher 종속 항목을 업데이트했습니다. (#207)

GoogleSignIn에서 해당 빌드 오류 이슈를 해결한 버전은 6.2.4여서 6.2.4로 버전을 내렸다.

나처럼 다른 이슈로 7.0.0으로 못올리는 사람은 6.2.4로 한 번 시도해 보면 좋을 것 같다.

 

[GoogleSignIn 버전 참조] https://developers.google.com/identity/sign-in/ios/release?hl=ko

 

Google 로그인 iOS 및 macOS SDK 출시 노트  |  Authentication  |  Google Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 Google 로그인 iOS 및 macOS SDK 출시 노트 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분

developers.google.com

 

반응형
Posted by blueasa
, |
반응형

Unity 2021.3.16f1

Xcode 14.2

Firebase 10.4.0

 

----

[빌드에러]

pod install output:



Analyzing dependencies

[!] CocoaPods could not find compatible versions for pod "GTMSessionFetcher/Core":

  In Podfile:

    Firebase/Auth (= 10.4.0) was resolved to 10.4.0, which depends on

      FirebaseAuth (~> 10.4.0) was resolved to 10.4.0, which depends on

        GTMSessionFetcher/Core (< 4.0, >= 2.1)

 

최근 Firebase 10.x 버전이 Xcode 14.x 버전에서 위와 같은 오류를 내면서 빌드가 제대로 되지 않는 문제가 있어서 이리저리 알아보니 구글에서 확인하고 수정중이라고 하는 것 같다.

[참조] https://github.com/firebase/firebase-ios-sdk/issues/10359

 

GTMSessionFetcher/Core dependency conflict between Firebase/Auth and GoogleMLKit/LanguageID with Firebase 10.0.0 · Issue #10359

Description Attempting a pod update causes Firebase/Analytics and Auth to be downgraded from 9.6.0 to 3.6.0, and GoogleUtilities from 7.8.0 to 1.3.2 leading to a compile error related to a GoogleUt...

github.com

 

수정 전까지 대안으로 아래와 같이 Podfile에서 FirebaseAuth 버전을 내리라고 설명하고 있다.

유니티를 사용중이라서 Podfile을 만지는건 애매하고, Firebase의 AuthDependencies.xml 파일에서 수정해보기로 했다.

 

<iosPod name="Firebase/Auth" version="10.4.0" minTargetSdk="8.0"></iosPod>

위의 내용을 아래와 같이 수정했다.

<iosPod name="Firebase/Auth" version="~> 9.6.0" minTargetSdk="8.0"></iosPod>

 

그래서 FirebaseAuth는 사라졌는데..

 

Messaging 쪽 에러가 다시 나오면서 빌드 실패.

[에러메시지]

pod install output:



Analyzing dependencies

[!] CocoaPods could not find compatible versions for pod "Firebase/Messaging":

  In Podfile:

    Firebase/Messaging (= 10.4.0)



None of your spec sources contain a spec satisfying the dependency: `Firebase/Messaging (= 10.4.0)`.

 

[결론]

그냥 고쳐질 때까지 Firebase 9.6.0을 써야 될 것 같다..

 

 

반응형
Posted by blueasa
, |
반응형

Unity 2021.3.14f1

현재(2022-12-11) 기준 Xcode PostProcessBuild 파일

using System.IO;
using UnityEngine;
using UnityEditor;
using UnityEditor.iOS.Xcode;
using UnityEditor.Callbacks;
using System.Collections;

namespace blueasa
{
    public class XcodeSettingsPostProcessor
    {

#if UNITY_2019_3_OR_NEWER
        // FixPodFile 사용법 참조
        // https://github.com/googlesamples/unity-jar-resolver/issues/405 : Str4tos 댓글
        [PostProcessBuild(45)]//must be between 40 and 50 to ensure that it's not overriden by Podfile generation (40) and that it's added before "pod install" (50)
        private static void FixPodFile(BuildTarget buildTarget, string buildPath)
        {
            /// Stop processing if target is NOT iOS
            if (buildTarget != BuildTarget.iOS)
                return;

            using (StreamWriter sw = File.AppendText(buildPath + "/Podfile"))
            {
                // [Error 대응] (Xcode 14): Signing for "GoogleSignIn-GoogleSignIn" requires a development team.
                // [해결방법 참조] https://github.com/CocoaPods/CocoaPods/issues/11402 : JosephPoplar 댓글
                sw.WriteLine("\npost_install do |installer|\n  installer.pods_project.targets.each do |target|\n    if target.respond_to?(:product_type) and target.product_type == \"com.apple.product-type.bundle\"\n      target.build_configurations.each do |config|\n        config.build_settings['CODE_SIGN_IDENTITY'] = \"\"\n        #prevent resource bundle from reading image nil\n        config.build_settings.delete('PRODUCT_BUNDLE_IDENTIFIER')\n      end\n    end\n  end\nend");

                /// ex
                //sw.WriteLine("\ntarget 'Unity-iPhone' do\nend");
            }
        }
#endif

        [PostProcessBuild]
        public static void OnPostprocessBuild(BuildTarget buildTarget, string pathToBuiltProject)
        {

            /// Stop processing if target is NOT iOS
            if (buildTarget != BuildTarget.iOS)
                return;

            /// Initialize PbxProject
            var projectPath = PBXProject.GetPBXProjectPath(pathToBuiltProject);
            //var projectPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj";
            PBXProject pbxProject = new PBXProject();
            pbxProject.ReadFromFile(projectPath);
            // Unity 2019 대응[blueasa / 2020-12-22]
#if UNITY_2019_3_OR_NEWER
            //string targetGuid = pbxProject.GetUnityFrameworkTargetGuid();
            string strMainTargetGuid = pbxProject.GetUnityMainTargetGuid();
            string strFrameworkTargetGuid = pbxProject.GetUnityFrameworkTargetGuid();
#else
            string strMainTargetGuid = pbxProject.TargetGuidByName("Unity-iPhone");
#endif

            /// Sample of adding build property
            //pbxProject.AddBuildProperty(strMainTargetGuid, "OTHER_LDFLAGS", "-all_load");

            /// Sample of setting build property
            //pbxProject.SetBuildProperty(strMainTargetGuid, "ENABLE_BITCODE", "NO");
            //pbxProject.SetBuildProperty(strMainTargetGuid, "EMBEDDED_CONTENT_CONTAINS_SWIFT", "YES");
            //pbxProject.SetBuildProperty(strMainTargetGuid, "CODE_SIGNING_ALLOWED", "NO");

            /// Sample of update build property
            //pbxProject.UpdateBuildProperty(strMainTargetGuid, "OTHER_LDFLAGS", new string[] { "-ObjC" }, new string[] { "-weak_framework" });

            /// ITMS-90206. ITMS-90427 에러 대응[blueasa / 2022-11-17]
            // Set FrameworkTargetGuid : NO
            foreach (var targetGuid in new[] { strMainTargetGuid, pbxProject.GetUnityFrameworkTargetGuid() })
            {
                pbxProject.SetBuildProperty(targetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO");
            }
            // Set MainTargetGuid : YES
            pbxProject.SetBuildProperty(strMainTargetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");

            // [에러 처리] Undefined symbol: _vDSP_vclip, _vDSP_vsadd, _vvexpf, _vDSP_sve, _vdsp_mmul, _vDSP_maxv, _vDSP__dotpr, vDSP_vsdiv
            pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "Accelerate.framework", true);

            /// Sample of adding REQUIRED framwrok
            // Facebook SDK
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "FBAEMKit.framework", true);
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "FBSDKCoreKit.framework", true);
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "FBSDKCoreKit_Basics.framework", true);
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "FBSDKLoginKit.framework", true);

            // Facebook Audience Network
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "FBAudienceNetwork.framework", true);

            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "CoreData.framework", false);
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "Security.framework", false);
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "CoreData.framework", false);
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "libsqlite3.0.tbd", false);
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "AdSupport.framework", false); // for AppsFlyer
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "iAd.framework", false);       // for AppsFlyer

            /// Sample of adding OPTIONAL framework
            //pbxProject.AddFrameworkToProject(strFrameworkTargetGuid, "SafariServices.framework", true);

            /// Sample of setting compile flags
            //var guid = pbxProject.FindFileGuidByProjectPath("Classes/UI/Keyboard.mm");
            //var flags = pbxProject.GetCompileFlagsForFile(strMainTargetGuid, guid);
            //flags.Add("-fno-objc-arc");
            //pbxProject.SetCompileFlagsForFile(strMainTargetGuid, guid, flags);

#if !UNITY_2019_3_OR_NEWER
            // Add push notifications as a capability on the target
            pbxProject.AddCapability(targetGuid, UnityEditor.iOS.Xcode.PBXCapabilityType.PushNotifications);
#endif
            // Apply settings
            File.WriteAllText(projectPath, pbxProject.WriteToString());

#if UNITY_2019_3_OR_NEWER
            // 필요한 Capability 추가
            ProjectCapabilityManager projCapability = new ProjectCapabilityManager(projectPath, "Unity-iPhone/mmk.entitlements", "Unity-iPhone");
            projCapability.AddPushNotifications(false);		// Push Notifications
            projCapability.AddInAppPurchase();				// IAP
            projCapability.AddSignInWithApple();    		// Apple 로그인(FirebaseAuth용)
            projCapability.WriteToFile();
#endif
            /////////////////////////////////////////////////////////////////////////////////

            /// Samlpe of editing Info.plist
            var plistPath = System.IO.Path.Combine(pathToBuiltProject, "Info.plist");
            var plist = new PlistDocument();
            plist.ReadFromFile(plistPath);

            /// Add string integer
            //plist.root.SetInteger("FYBVideoPlayerOptionCloseButtonDelay", -1);  // Fyber

            /// Add boolean setting
            plist.root.SetBoolean("ITSAppUsesNonExemptEncryption", false);  // 수출 규정 관련 문서가 누락됨 경고 메세지 대처법
            plist.root.SetBoolean("FacebookAutoLogAppEventsEnabled", false);  // Facebook 자동 로그인 비활성화
            //plist.root.SetBoolean("FIREBASE_ANALYTICS_COLLECTION_ENABLED", true);  // FA

            /// Add string setting
            // [Fix] Unity2020.3.26f1에서 수정됨[blueasa / 2022-01-18]
            // [iOS15 + Unity2020.3.22f1 이슈] Force Dark Mode(Automatic/Light/Dark) - Appearance
            // [참조] https://stackoverflow.com/questions/70239569/unity-shader-glitches-according-to-the-dark-mode-on-ios-15
            //plist.root.SetString("UIUserInterfaceStyle", "Dark");

            // [iOS15+] AppsFlyer - SKAdNetwork 포스트백 적용[blueasa / 2022-02-17]
            plist.root.SetString("NSAdvertisingAttributionReportEndpoint", "https://appsflyer-skadnetwork.com/");

            /// Privacy
            //plist.root.SetString("NSCalendarsUsageDescription", "Some ad content may access calendar");
            //plist.root.SetString("NSCameraUsageDescription", "Every play requires access to the Camera library");
            plist.root.SetString("NSPhotoLibraryUsageDescription", "Every play requires access to the photo library"); // ITMS-90683
            // for Bluetooth [blueasa/2020-04-28]
            //plist.root.SetString("NSBluetoothAlwaysUsageDescription", "App would like to use your bluetooth for communication purposes");
            //plist.root.SetString("NSBluetoothPeripheralUsageDescription", "App would like to use your bluetooth for communication purposes");

            #region SKAdNetwork IDs
            // SKAdNetwork IDs integration(for iOS14+)
            // https://blueasa.tistory.com/2482
            var arraySKAdNetworkItems = plist.root.CreateArray("SKAdNetworkItems");
            // for Admob(Google)
            // https://developers.google.com/admob/ios/ios14#skadnetwork
            var dictSKAdNetworkIdentifier_Admob = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Admob.SetString("SKAdNetworkIdentifier", "cstr6suwn9.skadnetwork"); // Admob
            // for FAN
            // https://developers.facebook.com/docs/audience-network/guides/SKAdNetwork
            var dictSKAdNetworkIdentifier_FAN_1 = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_FAN_1.SetString("SKAdNetworkIdentifier", "v9wttpbfk9.skadnetwork"); // FAN 1
            var dictSKAdNetworkIdentifier_FAN_2 = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_FAN_2.SetString("SKAdNetworkIdentifier", "n38lu8286q.skadnetwork"); // FAN 2
            // for UnityAds
            // https://unityads.unity3d.com/help/ios/skadnetwork-ids?fbclid=IwAR3T6BWG6-SIdWipZaB-PEtUQhg1DAnU_kQ22iiSv4Z5Q6nItq2edtpIIkM
            // https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml?_ga=2.140049011.1591405619.1607905486-1813266944.1603773122
            var dictSKAdNetworkIdentifier_Unity_1 = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Unity_1.SetString("SKAdNetworkIdentifier", "4DZT52R2T5.skadnetwork"); // Unity Technologies 1
            var dictSKAdNetworkIdentifier_Unity_2 = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Unity_2.SetString("SKAdNetworkIdentifier", "bvpn9ufa9b.skadnetwork"); // Unity Technologies 2
            var dictSKAdNetworkIdentifier_Mintegral = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Mintegral.SetString("SKAdNetworkIdentifier", "KBD757YWX3.skadnetwork"); // Mintegral
            var dictSKAdNetworkIdentifier_CriteoSA = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_CriteoSA.SetString("SKAdNetworkIdentifier", "9RD848Q2BZ.skadnetwork"); // Criteo SA (Manage.com)
            var dictSKAdNetworkIdentifier_mkhoj = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_mkhoj.SetString("SKAdNetworkIdentifier", "WZMMZ9FP6W.skadnetwork"); // mkhoj Solutions Private Limited
            var dictSKAdNetworkIdentifier_Snap = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Snap.SetString("SKAdNetworkIdentifier", "424M5254LK.skadnetwork"); // Snap Inc.
            var dictSKAdNetworkIdentifier_Cheetah = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Cheetah.SetString("SKAdNetworkIdentifier", "24t9a8vw3c.skadnetwork"); // Cheetah Medialink
            var dictSKAdNetworkIdentifier_Appier = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Appier.SetString("SKAdNetworkIdentifier", "v72qych5uu.skadnetwork"); // Appier Inc.
            var dictSKAdNetworkIdentifier_Liftoff = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Liftoff.SetString("SKAdNetworkIdentifier", "7UG5ZH24HU.skadnetwork"); // Liftoff Mobile, Inc.
            var dictSKAdNetworkIdentifier_Beeswax = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Beeswax.SetString("SKAdNetworkIdentifier", "c6k4g5qg8m.skadnetwork"); // Beeswax
            var dictSKAdNetworkIdentifier_Adikteev = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Adikteev.SetString("SKAdNetworkIdentifier", "ydx93a7ass.skadnetwork"); // Adikteev SA
            var dictSKAdNetworkIdentifier_Realtime = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Realtime.SetString("SKAdNetworkIdentifier", "4468km3ulz.skadnetwork"); // Realtime Technologies GmbH
            var dictSKAdNetworkIdentifier_Remerge = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Remerge.SetString("SKAdNetworkIdentifier", "2U9PT9HC89.skadnetwork"); // Remerge GmbH
            var dictSKAdNetworkIdentifier_CriteoCorp = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_CriteoCorp.SetString("SKAdNetworkIdentifier", "hs6bdukanm.skadnetwork"); // Criteo Corp
            var dictSKAdNetworkIdentifier_Aarki = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Aarki.SetString("SKAdNetworkIdentifier", "4FZDC2EVR5.skadnetwork"); // Aarki, Inc.
            //var dictSKAdNetworkIdentifier_Google = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Google.SetString("SKAdNetworkIdentifier", "cstr6suwn9.skadnetwork"); // Google LLC(Admob)
            var dictSKAdNetworkIdentifier_YouAppi = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_YouAppi.SetString("SKAdNetworkIdentifier", "3RD42EKR43.skadnetwork"); // YouAppi Inc
            var dictSKAdNetworkIdentifier_LifeStreet = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_LifeStreet.SetString("SKAdNetworkIdentifier", "t38b2kh725.skadnetwork"); // LifeStreet Corporation
            var dictSKAdNetworkIdentifier_SPOTAD = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_SPOTAD.SetString("SKAdNetworkIdentifier", "f73kdq92p3.skadnetwork"); // SPOTAD LTD
            var dictSKAdNetworkIdentifier_BYTEMOD_Global = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_BYTEMOD_Global.SetString("SKAdNetworkIdentifier", "22mmun2rn5.skadnetwork"); // BYTEMOD PTE. LTD-global
            var dictSKAdNetworkIdentifier_DATASEAT = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_DATASEAT.SetString("SKAdNetworkIdentifier", "M8DBW4SV7C.skadnetwork"); // DATASEAT LTD
            var dictSKAdNetworkIdentifier_Kidoz = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Kidoz.SetString("SKAdNetworkIdentifier", "v79kvwwj4g.skadnetwork"); // Kidoz Ltd.
            var dictSKAdNetworkIdentifier_Sabio = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Sabio.SetString("SKAdNetworkIdentifier", "GLQZH8VGBY.skadnetwork"); // Sabio Mobile Inc.
            var dictSKAdNetworkIdentifier_Moloco = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Moloco.SetString("SKAdNetworkIdentifier", "9T245VHMPL.skadnetwork"); // Moloco, Inc
            var dictSKAdNetworkIdentifier_Bidmachine = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Bidmachine.SetString("SKAdNetworkIdentifier", "wg4vff78zm.skadnetwork"); // Bidmachine
            var dictSKAdNetworkIdentifier_BYTEMOD_CN = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_BYTEMOD_CN.SetString("SKAdNetworkIdentifier", "238da6jt44.skadnetwork"); // BYTEMOD PTE. LTD-CN
            var dictSKAdNetworkIdentifier_Apptimus = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Apptimus.SetString("SKAdNetworkIdentifier", "lr83yxwka7.skadnetwork"); // Apptimus LTD
            var dictSKAdNetworkIdentifier_Centro = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Centro.SetString("SKAdNetworkIdentifier", "3sh42y64q3.skadnetwork"); // Centro Inc.
            var dictSKAdNetworkIdentifier_UNICORN = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_UNICORN.SetString("SKAdNetworkIdentifier", "578prtvx9j.skadnetwork"); // UNICORN Inc.
            var dictSKAdNetworkIdentifier_REVX = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_REVX.SetString("SKAdNetworkIdentifier", "5a6flpkh64.skadnetwork"); // REVX TECHNOLOGY PRIVATE LIMITED
            var dictSKAdNetworkIdentifier_RTBHouse = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_RTBHouse.SetString("SKAdNetworkIdentifier", "8s468mfl3y.skadnetwork"); // RTBHouse Pte LTD
            var dictSKAdNetworkIdentifier_CrossInstall = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_CrossInstall.SetString("SKAdNetworkIdentifier", "prcb7njmu6.skadnetwork"); // CrossInstall
            var dictSKAdNetworkIdentifier_Maiden = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Maiden.SetString("SKAdNetworkIdentifier", "zmvfpc5aq8.skadnetwork"); // Maiden Marketing Pvt Ltd.
            var dictSKAdNetworkIdentifier_AdColony = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_AdColony.SetString("SKAdNetworkIdentifier", "4PFYVQ9L8R.skadnetwork"); // AdColony, Inc.
            var dictSKAdNetworkIdentifier_Spyke = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Spyke.SetString("SKAdNetworkIdentifier", "44n7hlldy6.skadnetwork"); // Spyke Media GmbH
            var dictSKAdNetworkIdentifier_LoopMe = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_LoopMe.SetString("SKAdNetworkIdentifier", "5lm9lj6jb7.skadnetwork"); // LoopMe Ltd
            var dictSKAdNetworkIdentifier_Smadex = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Smadex.SetString("SKAdNetworkIdentifier", "ppxm28t8ap.skadnetwork"); // Smadex SL
            var dictSKAdNetworkIdentifier_ADTIMING = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_ADTIMING.SetString("SKAdNetworkIdentifier", "488r3q3dtq.skadnetwork"); // ADTIMING TECHNOLOGY PTE. LTD.
            var dictSKAdNetworkIdentifier_Jampp = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Jampp.SetString("SKAdNetworkIdentifier", "YCLNXRL5PM.skadnetwork"); // Jampp LTD
            var dictSKAdNetworkIdentifier_PubNative = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_PubNative.SetString("SKAdNetworkIdentifier", "TL55SBB4FM.skadnetwork"); // PubNative GMBH
            var dictSKAdNetworkIdentifier_Chartboost = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Chartboost.SetString("SKAdNetworkIdentifier", "F38H382JLK.skadnetwork"); // Chartboost, Inc.
            var dictSKAdNetworkIdentifier_ScaleMonk = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_ScaleMonk.SetString("SKAdNetworkIdentifier", "av6w8kgt66.skadnetwork"); // ScaleMonk Inc.
            var dictSKAdNetworkIdentifier_Persona = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Persona.SetString("SKAdNetworkIdentifier", "44jx6755aq.skadnetwork"); // Persona.ly LTD
            var dictSKAdNetworkIdentifier_Triapodi = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Triapodi.SetString("SKAdNetworkIdentifier", "mlmmfzh3r3.skadnetwork"); // Triapodi Ltd.
            // for Vungle
            // https://support.vungle.com/hc/en-us/articles/360002925791-Integrate-Vungle-SDK-for-iOS#3-add-the-%E2%80%9C-objc%E2%80%9D-linker-flag-0-9
            // https://vungle.com/skadnetworkids.xml
            var dictSKAdNetworkIdentifier_Vungle = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_Vungle.SetString("SKAdNetworkIdentifier", "GTA9LK7P23.skadnetwork"); // Vungle
            //var dictSKAdNetworkIdentifier_Adikteev = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Adikteev.SetString("SKAdNetworkIdentifier", "ydx93a7ass.skadnetwork"); // Adikteev  
            //var dictSKAdNetworkIdentifier_Aarki = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Aarki.SetString("SKAdNetworkIdentifier", "4FZDC2EVR5.skadnetwork"); // Aarki
            //var dictSKAdNetworkIdentifier_AdColony = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_AdColony.SetString("SKAdNetworkIdentifier", "4PFYVQ9L8R.skadnetwork"); // AdColony
            //var dictSKAdNetworkIdentifier_Appier = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Appier.SetString("SKAdNetworkIdentifier", "v72qych5uu.skadnetwork"); // Appier
            //var dictSKAdNetworkIdentifier_Appreciate = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Appreciate.SetString("SKAdNetworkIdentifier", "mlmmfzh3r3.skadnetwork"); // Appreciate
            //var dictSKAdNetworkIdentifier_Beeswax = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Beeswax.SetString("SKAdNetworkIdentifier", "c6k4g5qg8m.skadnetwork"); // Beeswax
            //var dictSKAdNetworkIdentifier_Jampp = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Jampp.SetString("SKAdNetworkIdentifier", "YCLNXRL5PM.skadnetwork"); // Jampp
            //var dictSKAdNetworkIdentifier_LoopMe = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_LoopMe.SetString("SKAdNetworkIdentifier", "5lm9lj6jb7.skadnetwork"); // LoopMe
            var dictSKAdNetworkIdentifier_MyTarget = arraySKAdNetworkItems.AddDict();
            dictSKAdNetworkIdentifier_MyTarget.SetString("SKAdNetworkIdentifier", "n9x2a789qt.skadnetwork"); // MyTarget
            //var dictSKAdNetworkIdentifier_Pubnative = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Pubnative.SetString("SKAdNetworkIdentifier", "TL55SBB4FM.skadnetwork"); // Pubnative
            //var dictSKAdNetworkIdentifier_Remerge = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Remerge.SetString("SKAdNetworkIdentifier", "2U9PT9HC89.skadnetwork"); // Remerge
            //var dictSKAdNetworkIdentifier_RTBHouse = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_RTBHouse.SetString("SKAdNetworkIdentifier", "8s468mfl3y.skadnetwork"); // RTB House
            //var dictSKAdNetworkIdentifier_Sabio = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Sabio.SetString("SKAdNetworkIdentifier", "GLQZH8VGBY.skadnetwork"); // Sabio
            //var dictSKAdNetworkIdentifier_Webeye = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_Webeye.SetString("SKAdNetworkIdentifier", "22mmun2rn5.skadnetwork"); // Webeye
            //var dictSKAdNetworkIdentifier_YouAppi = arraySKAdNetworkItems.AddDict();
            //dictSKAdNetworkIdentifier_YouAppi.SetString("SKAdNetworkIdentifier", "3RD42EKR43.skadnetwork"); // YouAppi
#endregion

            /// Add URL Scheme
            //var array = plist.root.CreateArray("CFBundleURLTypes");
            //var urlDict = array.AddDict();
            //urlDict.SetString("CFBundleURLName", "hogehogeName");
            //var urlInnerArray = urlDict.CreateArray("CFBundleURLSchemes");
            //urlInnerArray.AddString("hogehogeValue");

            /// Localizations [blueasa / 2018-03-28]
            // need Language Code(ref:https://ko.wikipedia.org/wiki/ISO_639)
            var arrayLocalizations = plist.root.CreateArray("CFBundleLocalizations");
            arrayLocalizations.AddString("en");         // 영어
            arrayLocalizations.AddString("ko");         // 한국어
            
            // [Temp] 사용전까지 주석처리[blueasa / 2022-11-16]
            //arrayLocalizations.AddString("zh_CN");      // 중국어(간체) : 중국
            //arrayLocalizations.AddString("zh_TW");      // 중국어(번체) : 대만
            //arrayLocalizations.AddString("ja");         // 일본어
            //arrayLocalizations.AddString("vi");         // 베트남어
            //arrayLocalizations.AddString("es");         // 스페인어
            //arrayLocalizations.AddString("it");         // 이탈리아어
            //arrayLocalizations.AddString("id");         // 인도네시아어
            //arrayLocalizations.AddString("th");         // 태국어
            //arrayLocalizations.AddString("pt");         // 포르투갈어
            //arrayLocalizations.AddString("hi");         // 힌디어


            //arrayLocalizations.AddString("de");       // 독일어
            //arrayLocalizations.AddString("zh");       // 중국어

            /// Apply editing settings to Info.plist
            plist.WriteToFile(plistPath);

        }
    }
}
반응형
Posted by blueasa
, |
반응형

PostProcessBuild에 아래처럼 FixPodFile()을 추가하고,

원하는 내용을 줄바꿈(\n) 포함해서 WriteLine에 string 형태로 추가한다.

 

#if UNITY_2019_3_OR_NEWER
  [PostProcessBuild( 45 )]//must be between 40 and 50 to ensure that it's not overriden by Podfile generation (40) and that it's added before "pod install" (50)
  private static void FixPodFile( BuildTarget target, string buildPath )
  {
      using (StreamWriter sw = File.AppendText( buildPath + "/Podfile" ))
      {
          sw.WriteLine( "\ntarget 'Unity-iPhone' do\nend" );
      }
  }
#endif

 

[출처] https://github.com/googlesamples/unity-jar-resolver/issues/405

 

iOS Unity 2019.4 and UnityFramework pod target error · Issue #405 · googlesamples/unity-jar-resolver

[REQUIRED] Please fill in the following fields: Unity editor version: 2019.4.11f1, 2020.1.7f1 External Dependency Manager version: v1.2.159 Source you installed EDM4U: Unity Package Manager Feature...

github.com

 

[참조] https://github.com/AdColony/AdColony-Unity-Plugin/blob/master/Plugin/Assets/AdColony/Editor/ADCPostBuildProcessor.cs

 

GitHub - AdColony/AdColony-Unity-Plugin: AdColony SDK Open Source Unity Plugin

AdColony SDK Open Source Unity Plugin . Contribute to AdColony/AdColony-Unity-Plugin development by creating an account on GitHub.

github.com

 

반응형
Posted by blueasa
, |
반응형

ITMS-90427을 처리하기 위해 확인해보니

Unity-iPhone의 Always Embed Swift Standard Libraries를 YES로 하고,

UnityFramework의 Always Embed Swift Standard Libraries를 NO로 하라고 한다.

 

빌드때마다 수동으로 하기는 그래서 Xcode PostProcessBuild로 처리하기로 함.

 

using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
 
namespace Editor
{
    public static class XcodeSwiftVersionPostProcess
    {
        [PostProcessBuild(999)]
        public static void OnPostProcessBuild(BuildTarget buildTarget, string path)
        {
            if (buildTarget == BuildTarget.iOS)
            {
                ModifyFrameworks(path);
            }
        }
 
        private static void ModifyFrameworks(string path)
        {
            string projPath = PBXProject.GetPBXProjectPath(path);
           
            var project = new PBXProject();
            project.ReadFromFile(projPath);
 
            string mainTargetGuid = project.GetUnityMainTargetGuid();
           
            foreach (var targetGuid in new[] { mainTargetGuid, project.GetUnityFrameworkTargetGuid() })
            {
                project.SetBuildProperty(targetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO");
            }
           
            project.SetBuildProperty(mainTargetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");
 
            project.WriteToFile(projPath);
        }
    }
}

 

 

[출처] https://forum.unity.com/threads/2019-3-validation-on-upload-to-store-gives-unityframework-framework-contains-disallowed-file.751112/  - unity_Iu70XvRN7XIS4g의 댓글

 

2019.3 - validation on upload to store gives "UnityFramework.framework contains disallowed file"

App runs on phone normally. When trying to validate the app before uploading it to the store, this comes out: Invalid Bundle. The bundle at...

forum.unity.com

 

반응형
Posted by blueasa
, |