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

카테고리

분류 전체보기 (2811)
Unity3D (867)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (234)
협업 (61)
3DS Max (3)
Game (12)
Utility (140)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (16)
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

Unity 2021.3.49f1
Xcode 16.2
----
 

 
Facebook iOS SDK 18.0.0 버전을 추가하면서 소스코드가 많이 늘어났는지 Xcode에서 위와 같은 빌드 에러가 뜬다.
결국 소스코드 양을 줄여야 된다는 말인데.. 전부터 느끼는 거지만 Facebook SDK는 쓸데없이 다 때려박아놔서 소스양이 많아서 이런저런 문제를 계속 만들어 내는 것 같다.
 
 
검색해보니 아래와 같은 내용이 있다.

[출처] https://issuetracker.unity3d.com/issues/ios-arm64-branch-out-of-range-747396072-max-is-plus-slash-128mb-xcode-error-when-building-development-build-with-script-debugging

 

Unity IssueTracker - [iOS] ARM64 branch out of range (747396072 max is +/-128MB) Xcode error when building development build wit

How to reproduce: 1. Open the 728989.zip project 2. Build the project for iOS with "development build" and "script debugging" enable...

issuetracker.unity3d.com

 
 
위 내용을 참조해서 iOS의 Managed Stripping Level을 현재 Minimal에서 Low로 한단계 올리니 빌드가 잘된다.

 

소스코드의 양이 문제면 다른 곳을 줄일 생각도 해야되나 싶지만, 간단하게 해결하려면 이게 편한 것 같다.

[추가]

Managed Stripping Level을 올리는 건 아무래도 찜찜해서 최후의 수단으로 두고,

난독화 툴에서 Dummy Code를 생성하는데 그 부분을 Off하고 빌드하니 빌드 잘돼서 일단 이렇게 두기로 했다.

 

 

[참조] https://docs.unity3d.com/kr/2021.3/Manual/ManagedCodeStripping.html

 

관리되는 코드 스트리핑 - Unity 매뉴얼

빌드 프로세스 중에 Unity는 관리되는 코드 스트리핑이라는 프로세스를 통해 사용하지 않거나 도달할 수 없는 코드를 제거하므로 애플리케이션의 최종 빌드 크기를 대폭 줄일 수 있습니다. 관리

docs.unity3d.com

 

[참조] https://www.cnblogs.com/billyrun/articles/18247631

 

Unity打包il2cpp编译链接时报错 - 冯校长 - 博客园

当il2cpp生成的C++文件过多时,部分版本(2022.3)的unity会遇到链接失败的问题(ios/android均存在,在部分打包机上几乎稳定重现)项目il2cpp目录下的cpp代码量约1000左右,大小接近2G打包失败具体表现为Library/

www.cnblogs.com

 

[참조] https://blog.yusong.me/unity/platform/ios

 

iOS Platform | Yusong

 

blog.yusong.me

 

 

반응형
Posted by blueasa
, |

Unity 2021.3.41f1

Firebase 12.1.0

GoogleMobildeAds 9.1.0

Facebook SDK 17.0.0

----

 

[추가] 2024-08-08

Unity 2021.3.42f1에서 아래 이슈가 수정되었다고 한다.(Custom Settings Template Gradle 옵션도 생겼다)

  • Android: settingsTemplate.gradle에서 DIR_UNITYPROJECT를 올바르게 교체( UUM-27090 )

Unity 2021.3.42f1에서는 아래와 같이 진행하자.

 

[EDM4U v1.2.181(Frebase v12.1.0) 이하 일 경우]

1) 아래 설명된 Unity 2021.3.41f1에서 하던대로 하고, BuildPreprocessor_settingsTemplateGradle.cs 파일만 삭제하면 된다.

 

[EDM4U v1.2.182(Frebase v12.2.0) 이상 일 경우] : 추천

1) Custom Main Gradle Template 활성화 돼있는지 체크.

2) Player Settings - Player - Android - Publishing Settings - Build에 Custom Gradle Settings Template가 추가됐다.

    체크해서 활성화 해주자.

 

3) EDM4U - Android Resolver에서 다시 Resolve를 해주자.

    (Android Resolve를 하면 mainTemplate.gradle에 있던 Firebase 관련 내용이 settingsTemplate.gradle로 옮겨진다.)

 

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

Unity 2021.3에서 Android Target API 34 선택 시, 빌드에러가 발생하는 문제를 해결했다고 나온 버전이 Unity 2021.3.41f1이다.

Unity 2021.3.41f1에서 gradle 버전과 Java 메이저 버전이 올라가면서 Unity 2022와 같게 맞춰진 것 같다.

       

       [참고]

  • 2021.3.40f1 이하 버전 : AGP 4.2.2 / Gradle 6.7.1 / Java 8
  • 2021.3.41f1 버전 : AGP 7.4.2 / Gradle 7.5.1 / Java 11

 

그런데 Unity 2021.3.41f1에서도 여전히 빌드에러가 나서 에러 메시지를 확인해보니 아래와 같은 부분이 있다.

stderr[

FAILURE: Build completed with 3 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':launcher:checkReleaseDuplicateClasses'.
> Could not resolve all files for configuration ':launcher:releaseRuntimeClasspath'.
   > Could not find com.google.firebase:firebase-analytics-unity:12.1.0.
     Searched in the following locations:
       - https://maven.google.com/com/google/firebase/firebase-analytics-unity/12.1.0/firebase-analytics-unity-12.1.0.pom
       - file:////Assets/GeneratedLocalRepo/Firebase/m2repository/com/google/firebase/firebase-analytics-unity/12.1.0/firebase-analytics-unity-12.1.0.pom

 

file:////Assets/GeneratedLocalRepo/Firebase/m2repository/... 부분의 앞에 프로젝트의 Path가 있어야 되는데 제대로 들어가지 않고 있는 것 같다.

원래는 아래와 같이 나와야 된다.

예) file:///C:/{ProjectPath}/Assets/GeneratedLocalRepo/Firebase/m2repository/..

 

이것과 거의 같은 이슈는 이전에도 있었던 것 같다.

(참조: https://issuetracker.unity3d.com/issues/android-template-variable-star-star-dir-unityproject-star-star-is-not-properly-substituted-when-exporting-a-gradle-project)

 

해당 부분은 settingsTemplate.gradle에서 절대경로를 넣으면 임시로 해결이 된다고 하는데,

Unity 2021에서는 Custom SettingsTemplate Gradle 파일 활성화 옵션이 없지만 파일 자체를 Plugins/Android 폴더에 넣으면 제대로 작동한다.

 

settingsTemplate.gradle 파일 안에 **DIR_UNITYPROJECT**를 넣으면 제대로 작동해야되는데 작동을 하지 않아서 IPostGenerateGradleAndroidProject를 사용해서 Path를 절대경로로 교체하는 방식 제안이 있어서 적용해 봤지만 제대로 여전히 빌드가 제대로 되지 않는다.

(참조 : https://github.com/googlesamples/unity-jar-resolver/issues/478)

 

그래서 Preprocessor를 사용해서 Path를 절대경로로 바꾸니 잘 작동한다.

아래는 내가 진행한 순서와 파일들이다.

 

 

    [Unity 2021.3.41f1에서 빌드 에러 수정 방법]

 

1) Unity 2021.3.41f1에서 많이 바껴서 baseProjectTemplate.gradle / gradleTemplate.properties / mainTemplate.gradle 등 gradle 관련 파일들을 삭제 후 새로 생성하자.

    (특히 gradle 버전이 많이 올라가서 baseProjectTemplate.gradle은 새로 생성해줄 필요가 있다.)

 

2) Android Min API 24 / Target API 34로 변경

    (Min API 23에서는 아래와 같은 에러 발생함)

stderr[
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
ERROR:D8: com.android.tools.r8.kotlin.H
ERROR:D8: com.android.tools.r8.kotlin.H
ERROR:D8: com.android.tools.r8.kotlin.H

 

3) 아래 settingsTemplate.gradle 파일을 ../Assets/Plugins/Android 폴더에 추가

settingsTemplate.gradle
0.00MB

 

 

4) 아래 BuildPreprocessor_settingsTemplateGradle.cs 파일을 Editor 폴더에 추가

    (참고: Android 플랫폼, Unity 2021.3.41f1 버전에서만 작동하도록 함)

BuildPreprocessor_settingsTemplateGradle.cs
0.00MB

 

 

5) 빌드

 

 

----

[참조] https://github.com/firebase/firebase-unity-sdk/issues/1070

[참조] https://discussions.unity.com/t/unity-2021-3-and-android-build-failure-when-using-android-legacy-libraries-and-target-api-34/952277/48

[참조] https://github.com/googlesamples/unity-jar-resolver/issues/699

[참조] https://issuetracker.unity3d.com/issues/android-template-variable-star-star-dir-unityproject-star-star-is-not-properly-substituted-when-exporting-a-gradle-project

[참조] https://github.com/googlesamples/unity-jar-resolver/issues/478

[참조] https://moblieandlife.tistory.com/entry/%EC%9C%A0%EB%8B%88%ED%8B%B0Unity-%EB%B9%8C%EB%93%9C%EC%8B%9C-Firebase-%EC%98%A4%EB%A5%98

[참조] https://docs.unity3d.com/ScriptReference/Android.IPostGenerateGradleAndroidProject.OnPostGenerateGradleAndroidProject.html

[참조] https://github.com/googlesamples/unity-jar-resolver/issues/478#issuecomment-980615877

 

반응형
Posted by blueasa
, |

gradle을 Unity 2021 기본인 gradle plugin 4.0.1에서 gradle plugin 4.2.0으로 변경하고 나서

Unity Editor에서는 빌드가 잘되는데 이상하게 jenkins Android 에서만 빌드가 실패해서 삽질하면서 알아보니

jenkins를 Mac에 셋팅해뒀는데 gradle cache 폴더가 뭔가 꼬인 것 같다.

아래와 같은 Warning Log가 엄청나게 뜬다.

 

[Warning Log]

WARNING:/Users/{UserAccount}/.gradle/caches/transforms-2/files-2.1/ea30c3c071cd48c926311878c13eb08b/jetified-unity-classes.jar: D8: Expected stack map table for method with non-linear control flow.

 

그래서 아래 위치의 gradle cache 하위 있는 것들을 모두 삭제하고 새로 빌드를 실행해서 잘 돌아가는 것을 확인했다.

 

[Mac gradle cache 위치] /Users/{UserAccount}/.gradle/caches/

 

[참조] https://blueasa.tistory.com/2769

 

[플러그인] GoogleMobileAds 8.6.0(with Unity2021)

Unity 2021.3.32f1 GoogleMobileAds 8.6.0 Firebase SDK 11.6.0 ---- [추가] gradle을 Unity 2021 기본인 gradle plugin 4.0.1에서 gradle plugin 4.2.0으로 변경하고 나서 Unity Editor에서는 빌드가 잘되는데 이상하게 jenkins Android 에

blueasa.tistory.com

 

반응형
Posted by blueasa
, |

OS : Windows7 64bit


카카오뱅크 마이너스 통장을 개설하려고 진행하다가 PC에서 공인인증서 인증하라고 하는 부분에서 만난 뭐같은 에러 2가지 기록


1. Dll 로드 에러

- 카카오뱅크 보안프로그램 2개 중 하나인 Finger(여기서 처음 봄)에서 사용하는 .Net 2003 재배포 패키지가 없어서 나는 에러.

아래 링크의 VC 7.1(VS2003) 제목의 파일을 받아서 해당 위치에 복사해 넣으면 된다.


[32bit 폴더위치] Windows/System32

[64bit 폴더위치] Windows/SysWOW64


[VC 7.1(VS 2003) 다운로드]

vcredist_x86_2003.zip

[참조 링크] http://blueasa.tistory.com/432



2. 문자열이 유효한 DateTime으로 인식되지 않습니다.

- 카카오뱅크 공인인증서 로드 부분에서 나는 에러였는데 역시나 (뭐같은)Finger 문제였다. 

Finger에서 사용자의 윈도우 날짜를 받아오는 것 같은데 아래와 같이 지정된 기본 형식(예 : 2017-08-14)으로만 받아오는 것 같다.

난 아래와 같이 요일을 보이게 쓰는데

이 요일이 들어가면서 Finger가 자신들이 원하는 기본형식으로 읽지 못하는 문자열이 있어서 에러를 내는 듯 하다.

기본 형식으로 돌려서 진행하니 문제 없이 잘 된다.



2017년에 나오는 인터넷은행(카카오뱅크)인데 2003 재배포 패키지를 쓰는 보안 프로그램을 쓰는 것도 좀 그렇기도 하지만

사용자의 윈도우 날짜를 받아서 어디다 쓰는지는 모르지만 그걸 조금 튜닝해서 쓴다고 에러 나는 것도 별로 이해가 안간다.

아무튼 위 두 에러 덕분에 거진 4일정도 뻘짓을 한 것 같다.

나랑 같은 뻘짓을 하는 사람은 없는 건지.. 다들 마통 잘 만드는 것 같다.


그래도 혹시나 1명이라도 도움 되기를 바라면서 남겨 놓음..!

반응형
Posted by blueasa
, |
obj
error LNK2019:
__imp__
@16 외부 기호
(참조 위치:
@4 함수)에서 확인하지 못했습니다.

위와 같은 에러가 나면 소스에 다음을 첨가하세욤~ ㅎㅎ

#pragma comment(lib, "user32.lib")


반응형

'Programming > C++/CLI' 카테고리의 다른 글

C# + CLI + C++ 혼합 디버깅  (0) 2010.06.01
C#과 C++/CLI의 Finalize, IDisposable Pattern 차이  (1) 2010.06.01
C#에서 Native C++ 프로젝트 사용하기  (0) 2010.05.31
마샬링(Marshaling)  (0) 2010.05.27
System::String 관련  (0) 2010.05.26
Posted by blueasa
, |