Android

    [Android/Unity] 터미널 환경에서 빌드하기 (Ubuntu)

    유니티프로젝트 를 터미널 환경에서 빌드를 해야할 상황이 있었다. 젠킨스를 사용하여 유니티 프로젝트를 안드로이드 타겟으로 빌드를 해야하는 요구사항이 있었고, 해당 사항을 충족시키기 위한 상황이 있었다. Unity 프로젝트에 스크립트 작성하기 유니티 프로젝트 하위에 Assets/Editor/ 하위에 빌드를 위한 스크립트를 하나 생성한다. 아래 예시는 유니티에서 제공하는 스크립트를 조금 변경하였다. (https://docs.unity3d.com/ScriptReference/BuildPipeline.BuildPlayer.html) 아래 코드는 안드로이드 빌드에 대한 내용이다. using UnityEditor; using UnityEngine; using UnityEditor.Build.Reporting; pub..

    [Android/Unity] TargetSDK version 31 이상에서 Manifest merger failed 문제

    문제 상황 Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are presentandroid:exported 란? 이 속성은 어플리케이션에서 Activity, Service 등에 접근할 수 있으며 다른 애플리케이션의 구성요소로 Activity를 시작할 수 있는지 설정합니다. 할 수 있으면 "true", 할 수 없으면 "false"입니다. "false"인 경우, 해당 액티비티는 같은 애플리케이션의 구성요소 또는 사용자 ID가 같은 애플리케이션으로만 시작할 수 있습니다. 인텐트 필터를 사용하는 경우 이 요소를 "false"로 설정하면 안 됩니다..

    [Kotlin] Coroutine Builder 간략 정리

    환경 kotlin coroutine version : 1.6.1 Coroutine Builder 란? Coroutine을 실행할 때 사용하는 여러 가지 함수를 뜻한다. 예를 들어 launch(), async(), runBlocking() 등이 있다. launch() public fun CoroutineScope.launch( context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, block: suspend CoroutineScope.() -> Unit ): Job { val newContext = newCoroutineContext(context) val coroutine = if (..

    [Android] Service #1 - 개요

    Service란? 서비스는 백그라운드에서 작업을 수행하는 안드로이드의 4대 구성요소 중 하나입니다. 사용자 인터페이스를 제공하지 않습니다. 서비스는 안드로이드 어플리케이션의 구성요소(예를 들어 Activity, Fragment, ..)가 시작할 수 있으며, 이 서비스는 사용자가 다른 어플리케이션을 사용 중에도 백그라운드에서 계속 동작합니다. 즉 서비스를 멈추게 하기 전까지는 멈추지 않고 지속적으로 할 일을 수행하고 있습니다. Service의 유형 서비스는 크게 3가지 유형으로 나뉠 수 있습니다. Foreground Service Background Service Bound Service 1) Foreground Service 포그라운드 서비스는 사용자에게 눈에 띄는 작업을 수행합니다. 포그라운드 서비스에..

    [Android] DI, 그리고 Hilt (작성중)

    의존성 주입 (DI, Dependency Injection) 의존성 주입이란, 생성자 또는 메서드 등을 통해 외부로부터 생성된 객체를 전달받는 것입니다. 의존성 주입의 특징 의존성 주입을 적용함으로써 클래스 간 커플링을 낮추게 됩니다. 또한 인터페이스 기반으로 설계를 하게 되며, 유연한 소프트웨어 구조를 가질 수 있습니다. 테스트 관점에서도 매우 편리하게 테스트가 가능합니다. Android에서 DI를 사용하는 방법? Dagger2 Dagger2는 Android core 팀에서 개발한 자바와 안드로이를 위한 DI Framework 입니다. Dagger2의 특징 컴파일 타임에 그래프를 구성하기에 생성된 코드는 명확하고 디버깅이 가능함 리플렉션 사용하지 않고, 런타임 바이트 코드를 생성하지 않음 자원 공유의 ..

    [Android Studio] The emulator process for AVD _xxx has terminated. (Emulator 실행 실패 문제 해결)

    문제현상 Android Studio에서 Emulator 실행 시 Emulator process가 terminated 되었다는 팝업과 함께 실행이 되지 않는 문제가 있었습니다. 해결방법 검색을 하면 다양한 방법이 나옵니다. API 레벨을 맞춰보기, Emulator 삭제 후 재설치 하기 등등.. 원인은 모르고 일단 해결은 하자 식이였습니다. 저는 Emulator 실행 시 나오는 Log를 이용하여 원인을 파악하여 해결하였습니다. 문제의 원인을 찾기 위해서 Emulator를 Terminal에서 실행시켜 줍니다. 제 환경은 Ubuntu 18.04 환경이며, Android Emulator는 /home/{username}/Android/Sdk/emulator 에 설치되어 있습니다. 아래와 같이 emulator의 -l..