23.1.29 갑자기 앱스토어 출시가 하고싶어서 프로젝트를 시작함.
애드몹 최신 버전으로 별 어려움 없이 잘 진행하다가 빌드시 오류가 나옴.
1. 처음에는 unity ID 가 등록 안돼서 나온 오류.
Services -> General Setting 에서 Project ID를 reLink하거나, 등록해줘야함.
2. 애드몹 설치 후 빌드시 오류.
java.lang.UnsupportedOperationException: This feature requires ASM7
구글 공식 깃허브 커뮤니티에서는 Gradle을 다시 깔라는데.. 프로그램 재설치같은 부분 정말 싫어함.
Gradle은 빌드 자동화 시스템인데 유니티에 기본 내장되어 있다고 함.
Gradle | Releases
Find binaries and reference documentation for current and past versions of Gradle.
gradle.org
결국 내가 해결한 방법은 안드로이드 API의 level을 올려주는거였음.
Project Setting -> Player -> Android -> Other setting -> Identifcation -> Minimum API Level
최소 호환되는 API를 level 22에서 24로 변경해주면 정상적인 빌드가 진행된다.
3. 빌드나 컴파일에 문제되지 않지만 거슬리는 경고문구
Assembly 'Assets/ExternalDependencyManager/Editor/1.2.175/Google.IOSResolver.dll' will not be loaded due to errors:
Unable to resolve reference 'UnityEditor.iOS.Extensions.Xcode'. Is the assembly missing or incompatible with the current platform?
Reference validation can be disabled in the Plugin Inspector.
-> Googld Admob dll중에 IOS 에 관련된 항목이 있는데 플러그인이 설치되지 않은 상태라 뜨는 문구.
UnityHub에서 IOS 모듈을 설치하고 adUnit id 설정하는 코드를 수정했다.
#if UNITY_ANDROID
adUnitId = "ca-app-pub-394025...";
#elif UNITY_IPHONE
adUnitId = "ca-app-pub-394025...;"
#endif
4. 안드로이드 환경에서 샘플이건 테스트 기기 등록하건 애드몹 광고가 안뜸
Custom Base Gradle Template 체크했다가 빌드 오류로 이어짐.
5. 이젠 앱 구동시 강제종료시켜버림
안드로이드 os가 메모리 부족으로 강제종료시킴.
Custom Main Gradle Template 를 체크하고, Assets/plugins/Android/MainGradle 파일을 수정할거임.
Android Resolver Repos Start 와 End가 보일텐데, End 의 Dependencies 괄호 안에 아래의 코드를 넣어줘야함
constraints {
implementation('androidx.work:work-runtime:2.7.0') {
because '''androidx.work:work-runtime:2.1.0 pulled from
play-services-ads has a bug using PendingIntent without
FLAG_IMMUTABLE or FLAG_MUTABLE and will fail in Apps
targeting S+.'''
}
}
Android Resolver Dependencies Start 와 End 사이에 복붙해주면 Android 12에서 강제종료가 되지 않음..
만약 빌드시 Fail 오류가 생긴다면 Resolve 를 다시 해줘야함.
Assets -> External dependency Manager -> Android Resolver -> Resolve
6. 빌드 오류 : CommandInvokationFailure: Failed to update Android SDK package list.
Edit -> Preferences -> External Tools -> Android -> JDK 에서 JDK 체크를 풀었다가 다시 설정해도 안고쳐짐.
시스템 변수에 JAVA_HOME을 유니티 jdk 경로로 새로 추가해도 안고쳐짐.
7. 오류 이름 : Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Custom Base Gradle Template 체크하고 경로로 들어가서 classPath의 Gradle 버전을 바꿔주면 됨ㅎㅎㅎ
사람마다 다르겠지만 난 com.android.tools.build:gradle:3.4.3 으로 변경해서 해결했슴
8. 빌드 오류 : CommandInvokationFailure: Gradle build failed.
사용자 폴더 안의 .gradle/cashes를 다 지워주면 된다고 함. 다 지워버려
9. 빌드 오류 : com.android.build.api.transform.transformexception.java.lang.illegalargumentexception
그냥 com.android.tools.build:gradle 버전을 바꿔줬음 느낌상 Gradle과 버전 충돌나는거같았으니까.
https://docs.unity3d.com/Manual/android-gradle-overview.html
Unity - Manual: Gradle for Android
Android requirements and compatibility Gradle for Android Gradle is a build system that automates a number of build processes and prevents many common build errors. Unity uses Gradle for all Android builds. You can either build the output package (.apk, .a
docs.unity3d.com
엥? 뇌피셜인데 해결해버림 다시 맨처음 오류로 돌아옴
10. 빌드 오류 : 유니티 에디터에서는 광고가 잘 작동하지만 안드로이드에서 구동시 광고가 뜨지 않는 경우
물론 샘플 appID로 실행하거나 테스트 기기로 실행하거나 상관없이 안드로이드에서 광고가 뜨지 않는 경우이다.
Custom Main Gradle Template랑 Custom Gradle Properties Template 체크 후
Custom Gradle Properties 파일 경로로 찾아가서 코드 두줄을 추가로 작성해준다.
android.useAndroidX=true
android.enableJetifier=true
**ADDITIONAL_PROPERTIES**
요로코롬
11. 빌드 후 실행 오류 : 빌드 후 앱 실행시 강제 중지되는 현상
구글 Admobs 플러그인을 지우고 재설치하는 과정에서 Resolve 하는 녀석을 빼고 깔았음. 그리고 이후 과정 반복(AppID 설정 등)
12. 다시,,,,,,, 모바일에서만 광고가 뜨지 않는 현상.......
재설치 후 진행해서 무사히 해결했고, 광고를 띄워서 무사히 Play스토어에 출시까지 했다.
'project > Witch's Tower' 카테고리의 다른 글
나혼자만 할려고 만든 인디게임 (0) | 2024.12.17 |
---|---|
마녀의 탑 출시 (0) | 2024.11.17 |