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

카테고리

분류 전체보기 (2849)
Unity3D (893)
Script (94)
Extensions (16)
Effect (3)
NGUI (81)
UGUI (9)
Physics (2)
Shader (42)
Math (1)
Design Pattern (2)
Xml (1)
Tips (204)
Link (26)
World (1)
AssetBundle (25)
Mecanim (2)
Plugins (87)
Trouble Shooting (71)
Encrypt (7)
LightMap (4)
Shadow (4)
Editor (12)
Crash Report (3)
Utility (9)
UnityVS (2)
Facebook SDK (2)
iTween (3)
Font (18)
Ad (14)
Photon (2)
IAP (1)
Google (11)
URP (4)
Android (54)
iOS (46)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (189)
협업 (64)
3DS Max (3)
Game (12)
Utility (141)
Etc (99)
Link (34)
Portfolio (19)
Subject (90)
iOS,OSX (52)
Android (16)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

[링크] https://ajh322.tistory.com/298

 

유니티 빌드 에러 - mainTemplate.gradle file is using the old aaptOptions noCompress property definition which does not in

증상 유니티 버전을 2019대에서 2020대로 올리고 안드로이드 빌드를 하면 mainTemplate.gradle file is using the old aaptOptions noCompress property definition which does not include types defined by unit..

ajh322.tistory.com

 

[링크2] https://codetime.tistory.com/279

 

[Error] mainTemplate.gradle file is using the old aaptOptions 처리

UnityException: Error mainTemplate.gradle file is using the old aaptOptions noCompress property definition which does not include types defined by unityStreamingAssets constant. ※ mainTemplate.grad..

codetime.tistory.com

 

반응형
Posted by blueasa
, |

[링크] https://opchacha.tistory.com/7

 

구글스토어 aab (150Mb이상)파일 업로드방법

구글스토어 150MB 이상 AAB올리는방법 1. google-play-plugins-1.5.0.unitypackage 다운 및 설치https://github.com/google/play-unity-plugins/releases" target="_blank" rel="noopener" data-mce-href=" https:..

opchacha.tistory.com

 

반응형
Posted by blueasa
, |

[증상]

Unity 2019에서 Android API 29를 쓰다가 API 30으로 올려서 Android SDK API 30을 받으려고 하는데 실패하고 아래와 같은 에러메시지가 떴다.

 

Exception: Unable to install additional SDK platform. Please run the SDK Manager manually to make sure you have the latest set of tools and the required platforms installed. 
C:/Program Files/Unity/Hub/Editor/2019.4.22f1/Editor/Data/PlaybackEngines/AndroidPlayer\SDK\tools\bin\sdkmanager.bat "platforms;android-30", exit code 1

그래서 에러메시지에 있는 sdkmanager.bat 파일을 열어보니 JAVA_HOME 환경변수를 쓰고 있다.

요즘 Unity는 OpenJDK를 내장해서 각자 버전별로 쓰고 있기 때문에 환경변수를 만들지 않는데 내부 소스(sdkmanager.bat)에선 여전히 쓰게 해놓은 건 문제인 듯 하다.

 

아무튼 sdkmanager.bat가 돌려면 JAVA_HOME 환경변수를 만들어 줘야되니,

유니티 엔진 내부에 있던 OpenJDK를 C:\ 최상위에 하나 복사하고 JAVA_HOME으로 환경변수 만들어주니 잘 작동한다.

 

[유니티 엔진 내부 OpenJDK 위치] C:\Program Files\Unity\Hub\Editor\2019.4.22f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK

[복사해서 옮긴 위치] C:\OpenJDK

 

[환경변수 셋팅] JAVA_HOME = C:\OpenJDK

 

 

[OpenJDK 시스템 환경변수 설정하기] codedragon.tistory.com/8510

 

OpenJDK - 시스템 환경 변수 설정하기

OpenJDK 설치하기 - openJDK https://codedragon.tistory.com/8774 OpenJDK - 시스템 환경 변수 설정하기 ·      JDK경로 확인하기 ·      JDK경로를 시스템 변수로 등록하기 ·      정상등록..

codedragon.tistory.com

 

 

[참조] forum.unity.com/threads/failed-to-update-android-sdk-package-list-unity-2019-2-10f1.869152/

 

Failed to update Android SDK Package List - Unity 2019.2.10f1

When I try to export the game build for the Android platform, I started getting this error: [ATTACH] Within the Project Settings - Minimum API Level...

forum.unity.com

 

반응형
Posted by blueasa
, |

증상

유니티 안드로이드 빌드 시 아래와 같은 에러

/Users/jim/Desktop/workspace/project/project/Temp/gradleOut/launcher/build/intermediates/merged_manifests/release/AndroidManifest.xml:52: AAPT: error: unexpected element found in

 

해당 파일의 52번째 줄에는 <quries>라는 신택스가 있는데 인식을 못하는 것 같다.

 

원인

stackoverflow.com/questions/62969917/how-do-i-fix-unexpected-element-queries-found-in-manifest

 

How Do I Fix "unexpected element found in "?

All of a sudden, I am getting this build error in my Android project: unexpected element found in How do I fix it?

stackoverflow.com

 

유니티의 gradle 버전이 3.4.0 인데 버전이 낮아서 그렇다고 한다.

 

해결

Gradle 버전 3.4.0 -> 3.4.3으로 변경한다.

위의 Grade의 com.android.tools.build:gradle:3.4.0'라고 적혀있는 부분을 com.android.tools.build:gradle:3.4.3'으로 바꿔주고 유니티 빌드를 다시 해보자.

 

위 파일의 경로는 아래와 같다.

/Applications/Unity/Hub/Editor/2019.4.15f1/PlaybackEngines/AndroidPlayer/Tools/GradleTemplates/baseProjectTemplate.gradle



출처: https://ajh322.tistory.com/294 [IT 잡동사니]

 

유니티 안드로이드 빌드 에러 - unexpected element found in

증상 유니티 안드로이드 빌드 시 아래와 같은 에러 /Users/jim/Desktop/workspace/project/project/Temp/gradleOut/launcher/build/intermediates/merged_manifests/release/AndroidManifest.xml:52: AAPT: error:..

ajh322.tistory.com

 

[참조] devgod.tistory.com/33

 

[Unity/Android] unexpected element found in 에러 해결

기존 프로젝트에 광고관련 SDK와 추가 스토어 대응을 하려고 플러그인을 이것저것 넣다보니 위와 같은 에러가 발생했다. 해당 에러는 구글에서 핫픽스가 나와있는 에러이며, 안드로이드 11에 관

devgod.tistory.com

[추가]

- 유니티 엔진 자체 Gradle 파일 위치는 기본 설치 시 아래와 같다.

[Unity 2018] C:\Program Files\Unity\Hub\Editor\2018.4.32f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates\mainTemplate.gradle

[Unity 2019] C:\Program Files\Unity\Hub\Editor\2019.4.22f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates\baseProjectTemplate.gradle

 

- Custom Gradle을 수정하려면 아래 파일에서 수정하자.

[Unity 2018]

1) Player Settings-Publishing Settings-Build-Custom Gradle Template 체크

2) ..\MyProject\Assets\Plugins\Android\mainTemplate.gradle 수정

 

[Unity 2019]

1) Project Settings-Player-Publishing Settings-Build-Custom Base Gradle Template 체크

2) ..\MyProject\Assets\Plugins\Android\baseProjectTemplate.gradle 수정

반응형
Posted by blueasa
, |

Unity 3d에서 APK 파일 빌드 시 READ_PHONE_STATE, WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE 등의 퍼미션이 자동으로 추가되는 경우가 있습니다.

이 퍼미션 들을 제거하는 방법은 아래와 같이 Manifest 에 추가 하면 됩니다. 

 

<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />

 

 

[출처] fumika.tistory.com/108

 

Unity 3D READ_PHONE_STATE 권한 제거하기

Unity 3d에서 APK 파일 빌드 시 READ_PHONE_STATE, WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE 등의 퍼미션이 자동으로 추가되는 경우가 있습니다. 이 퍼미션 들을 제거하는 방법은 아래와 같이 Manifest 에..

fumika.tistory.com

 

 
반응형
Posted by blueasa
, |

[링크]

ekoold.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EB%8B%A4%EC%A4%91%EC%96%B8%EC%96%B4%ED%98%B9%EC%9D%80-%EC%A7%80%EC%97%AD%ED%99%94-%EC%96%B8%EC%96%B4%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%A0%95%EB%A6%AC

 

안드로이드 다중언어(혹은 지역화) 언어리스트 정리

안드로이드 어플이 다양한 언어를 지원하도록 다중언어(multiple language) 혹은 지역화(localization)를 해줍니다. 일반적으로 알고 있는 코드가 아닌 ISO 639-1 Code 값을 참고해야하구요~ [링크1] [링크2] r

ekoold.tistory.com

 

반응형
Posted by blueasa
, |

최근 일부 유니티 구버전으로 제작된 기존 게임의 경우, 안드로이드 11에서 크래시와 스크린키보드 이슈가 발생할 가능성을 확인했습니다.

이에 안정적인 유니티 기반 게임 개발 및 운영을 위해 버전 업그레이드를 권장드리며, 

Unity 2018.4.30f1, 2019.4.15f1, 2020.1.14f1, 2020.2.0b12, 2021.1.0a4 이상Advertisement 3.4.9 이상으로 진행해주시면 됩니다. 

각 이슈 관련 사항은 유니티 포럼을 통해 확인 부탁드리겠습니다.

 

 

[출처] 게임코디-즌성님

 

 

[참조1] Android 11 Il2Cpp Arm64 Crash in Unity LTS 2019.4.12f1

 

반응형
Posted by blueasa
, |

구글 플레이(Google Play)에 앱 배포 시 오류가 발생할 경우 해결 방법입니다.

 

오류 내용

업로드 실패

디버그가 가능한 APK를 업로드했습니다. 

보안상의 이유로 Google Play에 게시하기 전에 디버그를 사용 중지해야 합니다.

 

오류 발생 원인

이 오류의 발생 원인은 AndroidManifest.xml 파일의 debuggable 속성이 true로 지정된 상태로 APK 파일이 생성되었기 때문입니다.

 

 

해결방법

해결 방법은 간단합니다.

먼저 AndroidManifest.xml 파일을 열고 application 태그 속성의 debuggable을 false로 지정하여 저장합니다.

 

위의 설정이 완료되면 APK 파일을 다시 생성하여 구글 플레이에 업로드합니다.



출처: https://h5bak.tistory.com/279 [이준빈은 호박머리]

 

Google Play 디버그가 가능한 APK를 업로드했습니다.

구글 플레이(Google Play)에 앱 배포 시 오류가 발생할 경우 해결 방법입니다. 오류 내용 업로드 실패 디버그가 가능한 APK를 업로드했습니다. 보안상의 이유로 Google Play에 게시하기 전에 디버그를

h5bak.tistory.com

 

 
반응형
Posted by blueasa
, |

[링크] m.blog.naver.com/netrance/221224761858

 

[안드로이드] 앱 삭제 했는데 데이터가 남아 있는 문제

앱을 삭제 후 재설치하면, 삭제 전에 저장되었던 자료들이 남아있는 문제가 발견되었습니다. 원인은 자동 ...

blog.naver.com

 

반응형
Posted by blueasa
, |

목차

1. 소개

2. minSdkVersion

3. targetSdkVersion

4. maxSdkVersion

 

이 포스팅은 안드로이드 SDK Guides의 내용을 기반으로 작성되었습니다.

1. 소개

이클립스가 기본 IDE 였을 때에는 minSdkVersion, targetSdkVersion는 AndroidManifest.xml에 설정했습니다. 아래가 사용법입니다.

 

<uses-sdk android:minSdkVersion="integer"

         android:targetSdkVersion="integer"

         android:maxSdkVersion="integer" />

 

하지만 Android Studio로 넘어오면서 build.gradle 파일에 옮겨지게 되었습니다.

 

defaultConfig {

  applicationId "com.tistory.kkangeva.materialdesign"

  minSdkVersion 21

  targetSdkVersion 22

  versionCode 1

  versionName "1.0"

}

 

SdkVersion이라는 이름을 가지고 있지만 실제로 기입해야 하는 것은 API Level입니다. Android Platform의 버전도 아니구요. 차이점을 볼까요? 아래는 포스팅을 쓰는 날짜 기준으로 최신의 버전을 기입한 것입니다.

 

 

전혀 연관성이 없습니다. 참고로 API Level은 항상 양의 정수 값입니다.

 

2. minSdkVersion

안드로이드 앱이 실행될 수 있는 최소한의 API 레벨을 의미합니다. 만약에 앱이 선언해 놓은 버전보다 디바이스의 버전이 낮을 경우에는 앱이 인스톨되지 않습니다.

 

앱 개발시 필수적으로 선언해야 하는 필드이며 만약에 선언을 하지 않았을 경우 ‘1’이 디폴트로 선정됩니다.

3. targetSdkVersion

안드로이드 앱의 타겟 API 레벨을 의미합니다. 만약 선언이 되어 있지 않다면 minSdkVersion과 동일한 값으로 간주됩니다. ‘타겟 API’의 개념은 해당 앱이 개발시에 테스트 되어진 API 레벨을 의미합니다. 당연히 targetSdkVersion은 minSdkVersion 보다 같거나 높을 수 밖에 없습니다. 하지만 targetSdkVersion이 높다고 하더라도 앱은 minSdkVersion에서도 인스톨 및 실행할 수 있습니다.

 

그럼 targetSdkVersion은 언제 사용이 될까요?

 

당연하겠지만 안드로이드 API 버전이 올라가면서 플랫폼이 조금씩 바뀌게 됩니다. 아래의 상황을 가정해봅시다.

 

  • App API Level : miSdkVersion : 4 / targetSdkVersion : 7

  • Platform API level : 10

 

이 상황에서는 당연히 앱을 인스톨하고 실행하는데에 전혀 무리가 없습니다. 하지만 만약 안드로이드 API가 7버전에서 10버전으로 오면서 앱 실행과 관련된 API에 변경이 생겼다면 어떻게 될까요? 이 경우 앱의 실행이 개발자의 예상과 달라질 가능성이 있습니다. 때문에 안드로이드 플랫폼에서는 하위 호환성 관련 기능을 활성화를 시키고 앱을 실행시켜야 합니다. 즉, 최초 릴리즈시의 동작성을 최대한 보장하기 위해서 안드로이드 플랫폼에게 정보를 알려주는 역할을 담당하는 필드입니다.

 

앱을 유지보수 하는 입장에 대해서 이야기를 해봅시다. 신규 기능을 추가하지 않는 이상 minSdkVersion이 높아질 가능성은 없습니다. 하지만 버그 수정이나 로직 수정 등의 이유로 앱을 버전업 할 때, targetSdkVersion은 항상 업데이트 하는 게 좋습니다.

4. maxSdkVersion

안드로이드 앱이 실행될 수 있는 최대한의 API Level을 의미합니다. 지금까지의 지식을 바탕으로 앱은 [minSdkVersion ~ maxSdkVersion] 사이의 디바이스에 인스톨 및 실행이 가능하다는 거죠. 조금 더 알아봅시다.

 

아마도 API Level이 높아지면서 기존의 API들이 사라지거나 수정되는 것을 감안한 필드였을 것으로 생각됩니다. 하지만 이 필드는 아래의 문제점 및 제약사항을 가지고 있습니다.

 

  • 향후 API가 어떻게 바뀔지 예측할 수 없으므로 앱을 개발하는 시점에서는 maxSdkVersion을 알 수 없습니다.

  • ‘하위 호환성’은 유지하지 않는다는 주장과 동일합니다.

  • 플랫폼이 안정화가 되면 하위 호환성을 유지하는 형태로 발전합니다. 따라서 이 필드는 일시적으로 사용될 가능성이 높습니다.

 

개발자 문서에서도 더이상 이 필드를 사용하지 말라고 합니다.

 

기존의 안드로이드 버전들에서는 (1.5, 1.6, 2.0, 2.0.1) 이 값을 앱 인스톨시에 사용했다고 합니다. 만약 플랫폼의 API Level이 maxSdkVersion 보다 높을 경우 인스톨이 거부되었습니다. 만약 소프트웨어 업데이트로 플랫폼의 버전을 높일 경우에도 이미 인스톨되어 있던 앱들을 뒤져서 maxSdkVersion이 낮은 앱을 제거 했었습니다. (생각해보면 인스톨 된 앱을 지워버리는 정책은 어이없는 것 같네요. 소프트웨어 업데이트를 했더니 잘 쓰고 있던 SNS가 지워진 상황이라니!)

 

하지만 최신의 안드로이드 버전에서는 (2.0.1 이후) 더이상 maxSdkVersion을 체크하지 않는다고 합니다. 심지어 maxSdkVersion이 설정되어 있으면 컴파일도 실패한다고 하네요. 하지만 이미 포함되어서 앱스토어에 올라가 있는 앱의 경우에는 구글 플레이 앱스토어에서 필터링에 사용된다고 합니다.



출처: https://kkangeva.tistory.com/58 [kkangeva의 IT]

 

minSdkVersion와 targetSdkVersion 정확하게 사용하기

목차 1. 소개 2. minSdkVersion 3. targetSdkVersion 4. maxSdkVersion 이 포스팅은 안드로이드 SDK Guides의 내용을 기반으로 작성되었습니다. 1. 소개 이클립스가 기본 IDE 였을 때에는 minSdkVersion, targetSd..

kkangeva.tistory.com

 

반응형
Posted by blueasa
, |