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

카테고리

분류 전체보기 (2737)
Unity3D (817)
Programming (474)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (228)
협업 (58)
3DS Max (3)
Game (12)
Utility (136)
Etc (96)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (53)
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
04-24 00:01

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.16f1

External Dependency Manager 1.2.175

 

이번에 External Dependency Manager를 버전업 하게 돼서 생각없이 업데이트 했는데

아래와 같이 사용안하는 파일 삭제 할거냐고 묻는 창이 떴다.

 

잘 사용하고 있기도 하고, 위의 창에서 Cancel을 해도 컴파일 될 때 마다 계속 위의 창이 떠서 문제였는데,

짜증나게도 왜 삭제해야 되는지 왜 obsolete로 잡히는 지 설명이 없다.

 

신기한 건 해당 프로젝트에서는 이 창이 뜨는데, 다른 프로젝트에 같은 스크립트가 있는데도 창이 뜨지 않는다.

 

[해결]

이런저런 삽질하다가 혹시나해서 파일을 삭제하고 컴파일 되게 한 후에,

다시 같은 파일을 같은 위치에 넣으니 정상적으로 적용되고 위의 창이 뜨지 않는다.

 

예상되는 이유는

External Dependency Manager가 새로 설치되면서 위의 스크립트가 무언가의 이유?오류?로 유니티 프로젝트에서 사용안한다고 판단하고 프로젝트에서 사용안하니 삭제 할거냐고 계속 묻게 된 것 같다.

그리고, 삭제 후 다시 추가하면서 정상적으로 External Dependency Manager의 Google Version Handler에 제대로 인식되고 위의 창이 이제 안뜨는 것 같다.

 

[결론]

Version Handler가 인식못해서 계속 삭제하라고 하는 것 같으니

프로젝트에서 삭제했다가 다시 추가하자.

반응형
Posted by blueasa
, |

Unity 2021.3.16f1

External Dependency Manager 1.2.175

GoogleMobileAds 7.4.0

 

[빌드에러]

...

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':launcher:dexBuilderRelease'.
> java.lang.UnsupportedOperationException: This feature requires ASM7

...

 

[해결]

gradle 버전이 낮아서 생기는 문제라고 한다.

Android 11이슈로 쓰던 gradle 버전이 com.android.tools.build:gradle:3.4.3 이었는데,

Unity 2021.3.16f1 기준 기본 버전이 com.android.tools.build:gradle:4.0.1 이어서 해당 버전을 사용하니 빌드가 잘된다.

다시 해보니 Unity 2021.3.16f1 기본 버전인 com.android.tools.build:gradle:4.0.1 이 빌드가 제대로 안돼서,

com.android.tools.build:gradle:4.0.1+로 수정하고 나서 제대로 되는 걸 확인했다.

(GoogleMobileAds 7.4.0이 gradle 4.0.1에서 에러나는걸로 봐서는 상위 버전 뭔가를 쓰는 것 같은데 무슨 버전을 쓰는지 모르겠어서 +를 붙였음)

 

[주의]

gradle 버전을 해당 Unity 엔진이 가지고 있는 버전보다 높게 올리면 아래와 같은 에러를 보게 된다.

지정한 gradle 버전을 사용하려면 맞는 gradle 플러그인 버전을 받아서 해당 위치에 넣어주거나,

현재 Unity 엔진이 가지고 있는 버전에 맞추거나 하자.

(난 받기 귀찮기도 하고, 협업을 하려면 다른 곳도 설치해줘야 되는 문제들로 인해서

  현재 Unity 버전이 지원하는(gradle 4.0.1) 걸로 셋팅 함)

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Project\git\GuitarGirl\Library\Bee\Android\Prj\IL2CPP\Gradle\launcher\build.gradle' line: 1

* What went wrong:
A problem occurred evaluating project ':launcher'.
> Failed to apply plugin [id 'com.android.internal.version-check']
   > Minimum supported Gradle version is 6.5. Current version is 6.1.1. If using the gradle wrapper, try editing the distributionUrl in C:\Project\git\GuitarGirl\Library\Bee\Android\Prj\IL2CPP\Gradle\gradle\wrapper\gradle-wrapper.properties to gradle-6.5-all.zip

 

[참고] https://stackoverflow.com/questions/68709559/nestmember-requires-asm7

 

NestMember requires ASM7

After update to Java 11 got an error in Android Studio by ./gradlew lintFooDebug command. * What went wrong: Execution failed for task ‘foo:syncDebugLibJars'. > NestMember requires ASM7 • Ran ./

stackoverflow.com

 

[gradle version 변경하기] https://blueasa.tistory.com/2703

 

[링크] Unity - Android Gradle Version 변경하기

[링크] https://drehzr.tistory.com/1022 Unity)Android Gradle Version Change Unity Android Gradle Version Change Unity 에서 Android의 Gradle의 버전을 변경을 해야하는 경우가 생겨서 이렇게 포스팅하게 되었다. Project Setting 의

blueasa.tistory.com

 

[gradle cache 삭제하기] https://happyryu.tistory.com/138

 

유니티 CommandInvokationFailure 해결방법

혹시나 이런 에러가 뜬다면? 아놔 참내.. 대빠 짜증나네요. 열나게 찾아보다가 유니티 버젼업도 해보고 Admob plugin 다시 지웠다가 깔았따 삽질하다가 드디어 찾았습니다. C:\Users\[윈도우계정 폴더]

happyryu.tistory.com

 

반응형
Posted by blueasa
, |

[링크] https://drehzr.tistory.com/1022

 

Unity)Android Gradle Version Change

Unity Android Gradle Version Change Unity 에서 Android의 Gradle의 버전을 변경을 해야하는 경우가 생겨서 이렇게 포스팅하게 되었다. Project Setting 의 Android - Publishing Settings에 보면 Build 항목에서 Custom Base Gradl

drehzr.tistory.com

 

[Gradle/Plugin 버전 참고] https://daldalhanstory.tistory.com/268

 

TIL # 65 androidStudio / plugin과 gradle 버전 맞추기 (feat. offlineMode)/ No cached version of com.android.tools.build:gra

코딩을 하다 보면 배우고 싶거나 모르는 라이브러리에 대한 소스코드를 찾아다니게 된다. 나 같은 경우는 githup에서 소스코드를 찾는 경우가 있는데, 깃 헙 홈페이지에서 소스를 참고하면서 라

daldalhanstory.tistory.com

 

반응형
Posted by blueasa
, |

[빌드 시, Builtin AssetBundles에서 해당 Platform 에셋번들만 빌드 되도록 하기 위한 PreProcessor 추가]

기본적으로 에셋번들은 플랫폼 별로 모두 가지고 있는데 해당 플랫폼에 맞는 에셋번들만 빌드 되도록 하기 위해서

빌드 전(PreProcessor)에 잠시 다른 곳(Temp)으로 옮겼다가, 빌드 후(PostProcessor)에 되돌려 놓도록 함.

 

using System;
using UnityEditor;
using UnityEditor.Build;
#if UNITY_2018_1_OR_NEWER
using UnityEditor.Build.Reporting;
#endif
using UnityEditor.Callbacks;

namespace blueasa
{
    /// <summary>
    /// 빌드 시, Built-in AssetBundle에서 해당 Platform AssetBundle만 빌드 되도록 하기 위한 Preprocessor
    /// 빌드 전(Preprocessor) 해당 안되는 AssetBundle을 옮겨뒀다가, 빌드 후(Postprocessor) 되돌려 놓음
    /// </summary>
#if UNITY_2018_1_OR_NEWER
    public class BuildPreprocessor_BuiltinAssetBundle : IPreprocessBuildWithReport, IPostprocessBuildWithReport
#else
    public class BuildPreprocessor_BuiltinAssetBundle : IPreprocessBuild, IPostprocessBuild
#endif
    {
        private static readonly string m_strTemp = "Temp";
        private static readonly string m_strAssetBundlesPath_Builtin_Android = "Assets/StreamingAssets/AssetBundles/Android";
        private static readonly string m_strAssetBundlesPath_Builtin_iOS = "Assets/StreamingAssets/AssetBundles/iOS";
        private static readonly string m_strAssetBundlesPath_Temp_Android = "Assets/Temp/Android";
        private static readonly string m_strAssetBundlesPath_Temp_iOS = "Assets/Temp/iOS";

        public int callbackOrder { get { return 0; } }

#if UNITY_2018_1_OR_NEWER
        public void OnPreprocessBuild(BuildReport report)
#else
        public void OnPreprocessBuild(BuildTarget target, string path)
#endif
        {
            Debug.LogWarning($"[OnPreprocessBuild] {this}");

            // Temp 폴더 없으면 생성
            if (false == AssetDatabase.IsValidFolder("Assets/Temp"))
            {
                Debug.LogWarning("[OnPreprocessBuild] Create 'Temp' Folder");
                AssetDatabase.CreateFolder("Assets", m_strTemp);
                AssetDatabase.Refresh();
            }

            // 빌드 전, 다른 플랫폼 AssetBundle 폴더 임시 Move(제외)
#if UNITY_ANDROID
            if (true == AssetDatabase.IsValidFolder(m_strAssetBundlesPath_Builtin_iOS)
                && false == AssetDatabase.IsValidFolder(m_strAssetBundlesPath_Temp_iOS))
            {
                Debug.LogWarning("[OnPreprocessBuild] Move 'iOS' Folder to 'Temp'");
                AssetDatabase.MoveAsset(m_strAssetBundlesPath_Builtin_iOS, m_strAssetBundlesPath_Temp_iOS);
                AssetDatabase.Refresh();
            }
#elif UNITY_IOS
            if (true == AssetDatabase.IsValidFolder(m_strAssetBundlesPath_Builtin_Android)
                && false == AssetDatabase.IsValidFolder(m_strAssetBundlesPath_Temp_Android))
            {
                Debug.LogWarning("[OnPreprocessBuild] Move 'Android' Folder to 'Temp'");
                AssetDatabase.MoveAsset(m_strAssetBundlesPath_Builtin_Android, m_strAssetBundlesPath_Temp_Android);
                AssetDatabase.Refresh();
            }
#endif
        }

#if UNITY_2018_1_OR_NEWER
        public void OnPostprocessBuild(BuildReport report)
#else
    public void OnPostprocessBuild(BuildTarget target, string path)
#endif
        {
            Debug.LogWarning($"[OnPostprocessBuild] {this}");

            // 빌드 후, Move(제외) 됐던 다른 플랫폼 AssetBundle 폴더 원래 자리로 되돌리기
#if UNITY_ANDROID
            if (true == AssetDatabase.IsValidFolder(m_strAssetBundlesPath_Temp_iOS)
                && false == AssetDatabase.IsValidFolder(m_strAssetBundlesPath_Builtin_iOS))
            {
                Debug.LogWarning("[OnPreprocessBuild] Return 'iOS' Folder From 'Temp'");
                AssetDatabase.MoveAsset(m_strAssetBundlesPath_Temp_iOS, m_strAssetBundlesPath_Builtin_iOS);
                AssetDatabase.Refresh();
            }
#elif UNITY_IOS
            if (true == AssetDatabase.IsValidFolder(m_strAssetBundlesPath_Temp_Android)
                && false == AssetDatabase.IsValidFolder(m_strAssetBundlesPath_Builtin_Android))
            {
                Debug.LogWarning("[OnPreprocessBuild] Return 'Android' Folder From 'Temp'");
                AssetDatabase.MoveAsset(m_strAssetBundlesPath_Temp_Android, m_strAssetBundlesPath_Builtin_Android);
                AssetDatabase.Refresh();
            }
#endif
        }
    }
}

 

 

반응형
Posted by blueasa
, |

[사용엔진] Unity 2021.3.14f1

-----------------------------

 

크래시 레포트를 보다보니 HUAWEI 폰에서 Vulkan 관련 크래시 레포트가 있어서

 

 생각해보니 Auto Graphics API를 활성화 해뒀다.

 

그래서 궁금해진 게 Auto Graphics API를 활성화하면 Vulkan이 적용되는가? 였는데..

Unity Document에 보니, Auto Graphics API를 활성화하면 Vulkan이 기본 적용하는 것 같다.

https://docs.unity3d.com/2021.3/Documentation/Manual/class-PlayerSettingsAndroid.html

[참조] https://forum.unity.com/threads/will-the-auto-graphics-api-automatically-enable-the-vulkan-api-when-available.625807/

 

Will the "Auto Graphics API" automatically enable the Vulkan API when available?

I have a Samsung galaxy S7 Edge, and I heard this phone can support Vulkan. So, just ticking "Auto Graphics API" in the Other Settings of Project...

forum.unity.com

 

-----------------------------

추가적으로 Vulkan 관련 이슈는 아래와 같이 2가지 내용이 보인다.

 

1. Unity에서 Vulkan 사용 시, 중국 폰에서 크래시가 꽤 많이 나온다고 한다.

 

[참조] https://cafe.naver.com/indiedev/64061?art=ZXh0ZXJuYWwtc2VydmljZS1uYXZlci1zZWFyY2gtY2FmZS1wcg.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjYWZlVHlwZSI6IkNBRkVfVVJMIiwiY2FmZVVybCI6ImluZGllZGV2IiwiYXJ0aWNsZUlkIjo2NDA2MSwiaXNzdWVkQXQiOjE2NjU5ODQwOTc3NDR9.hM-F6wmQ16ZhOGQkwPUh6iO0V4WO3GtgGUIobx8Qyjo 

 

샤오미 폰 크래시 이슈 (유니티 불칸이슈)

서비스 운영 후 꽤 많은 크래시 리포트를 받았는데 대부분은 샤오미 폰이였습니다. 특히 홍미노트 9s가 많이 팔린 폰이였는지 이 폰에서 문제가 많았습니다. 특히나 최근 글로벌로...

cafe.naver.com

 

2. 그리고, 성능 저하 이슈도 있다.

[참조] https://rainyrizzle.github.io/kr/AdvancedManual/AD_VulkanIssues.html

 

Vulkan 빌드시 성능 저하 문제

AnyPortrait > 메뉴얼 > Vulkan 빌드시 성능 저하 문제 Vulkan 빌드시 성능 저하 문제 이 페이지에서는 그래픽스 API 중 하나인 Vulkan을 이용해서 안드로이드 플랫폼으로 빌드를 했을 경우, 일부 기기에서

rainyrizzle.github.io

 

[결론]

결과적으로 Vulkan은 현재 적용하기 애매한가 싶어서 빼기로 했다.

Auto Graphics API를 비활성화 하고, 리스트에서 Vulkan을 없앴다.

OpenGLES2는 아직 지원하는 기기가 있을 것 같아서 일단 넣어 둠.

(아래 참조 링크에 보면 2020년 기준이긴 하지만 OpenGLES 2가 약 12% 있다.)

[참조] https://forum.unity.com/threads/is-opengl-es-2-is-still-needed-in-unity-for-android.976809/

 

Is OpenGL ES 2 is still needed in Unity for Android?

I've noticed that Unity 2019.4 LTS includes graphical API's: OpenGLES 3 and Vulkan. OpenGLES 2 is missing in player settings by default. I'm trying to...

forum.unity.com

 

[추가]

현재 프로젝트의 Android Minimum APL Level이 Android 6.0(API level 23)이기 때문에, OpenGL ES 2.0은 안써도 될 것 같아서 뺌

결과적으로 OpenGLES3만 남았다.

 

[참조] https://brunch.co.kr/@mystoryg/102

 

OpenGL ES 2.0 예제

3D 사각뿔 그리기 | OpenGL ES는 3차원 컴퓨터 그래픽스 API인 OpenGL(Open Graphic Library)의 임베디드 시스템을 위한 버전이다. ES가 Embaedded System을 의미한다. OpenGL은 다양한 API를 제공하며 해당 API들을 통

brunch.co.kr

 

반응형
Posted by blueasa
, |