'Android' 태그의 글 목록 — SH's Devlog

Android

Android/Basic

[Android] Gradle 빌드시에 Signing key로 서명하도록 설정하기

이번 포스트에서는 Gradle 빌드시에 Signing key를 서명하도록 설정하는 방법을 정리하겠습니다. Play store에 앱을 업로드하려면 Bundle 혹은 APK에 앱 서명을 해야합니다. 그래서 서명하기 위한 일반적인 방법으로는 [Build]-[Generate Signed Bundle / APK]에서 keystore 정보를 입력해주는 방법이 존재하지만 이 방법은 APK 생성할때마다 매번 입력해주어야 하므로 꽤 번거롭습니다. 또한, keystore에 대한 정보는 깃과 같은 외부 저장소에 올려서 노출되어서는 안되므로 주의해야 합니다. 그래서 이번 포스트에서는 Gradle의 sIgningConfings 설정을 통해 빌드시에 keystore로 안전하게 앱 서명을 하는 방법을 정리하겠습니다. gradle..

DevOps/CI CD

[Android] Fastlane으로 App Distribution & PlayStore에 배포하기

Fastlane이란? Fastlane은 Android 및 iOS 어플리케이션의 배포를 자동으로 도와주는 오픈소스 프로젝트입니다. Fastlane을 이용하면 스크린샷, 앱 릴리즈, 코드 서명 등의 배포할 때 필요한 반복작업들을 자동화시킬 수 있습니다. Fastlane에서 지원하는 기능은 다음과 같습니다. 1. 스크린샷 자동화 2. 베타 배포 3. Play Store 배포 4. 코드 서명 (iOS용) 이 포스트에서는 Fastlane 설치 및 설정, Beta 배포와 Play Store에 배포하는 방법을 다루어보도록 하겠습니다. Fastlane 설치 Fastlane을 설치하는 방법은 homebrew를 이용하는 방법 등의 다양한 방법이 존재하지만, 가장 권장하는 방법은 Bundler를 이용하여 설치하는 것입니다...

Android/Basic

[Android] BuildConfig과 ProductFlavors로 빌드 변형 구성하기 (Configure Build Variants)

이번에는 Gradle 빌드 변형 구성에 대해 알아보겠습니다. 먼저, 현재 빌드정보를 담고있는 buildConfig에 필드를 추가하는 방법 필드의 정보들을 불러오는 방법을 알아보겠습니다. 그리고 BuildType, ProductFlavors마다 BuildConfig을 변형 구성하는 방법과 Source Set을 바꿔서 구성하는 방법을 알아보겠습니다. BuildType이란? buildType은 일반적으로 개발자가 새 모듈을 생성하면 debug와 release 두 가지를 생성합니다. debug는 빌드 유형을 선언하지 않더라도 Android Studio에서는 debuggable true를 default값으로 구성하며 이 속성 덕분에 Android 기기에서 앱을 디버깅할 수 있습니다. release는 출시용 bui..

Android/Basic

[Android] Gradle 프로젝트에 remote 라이브러리 대신 외부 모듈 불러오기

이번 포스트에서는 Android, Spring 혹은 다른 Gradle 빌드 시스템을 사용하는 프로젝트에서 외부 모듈을 불러오는 방법을 알아보겠습니다. 외부 저장소에서 라이브러리를 불러올 때의 문제점 안드로이드는 공식 빌드 도구로 Gradle을 사용합니다. 라이브러리를 불러와 빌드 구성을 할 때에는 Gradle 빌드 시스템 상의 module 수준의 빌드 파일에서 수행되며 jitpack, maven central같은 외부 저장소에서 implementation 키워드를 통해서 불러올 수 있습니다. 하지만, 위와 같이 외부저장소에서 라이브러리를 불러오는 경우에는 당연하게도 외부 저장소에 있는 소스코드이다보니 라이브러리를 즉각적인 수정을 하여 사용하기에는 무리가 있을 수 있습니다. 이러한 상황을 해결하기 위한 방..

Android/Basic

[Android] Service 정리

1. Service 란? Service는 안드로이드 4대 컴포넌트 중 하나이며 사용자에게 인터페이스를 제공하지 않고 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있고, 다른 앱을 전환하더라도 백그라운드에서 계속 실행됩니다. 또한 앱 구성요소와 서비스를 바인딩하여 서비스와 상호작용 할 수 있고, 프로세스 간 통신(IPC)도 실행할 수 있습니다. 2. Service 종류 포그라운드 서비스: 알림창을 통해 서비스가 실행중인 것을 나타내줍니다. 대신, 시스템에 의해서 강제종료 당하지 않습니다. 백그라운드 서비스: 사용자에게 보이지 않고 작업을 수행합니다. 대신, 시스템에서 리소스가 부족할 경우 강제종료 당할 수 있습니다. (API ..

Android/UI & Animation

[Android] CustomView 알아보기

CustomView를 만드는 이유 Android에는 UI를 구성하는 데 사용할 수 있는 미리 빌드된 기본 클래스인 View 및 ViewGroup과 다양한 서브클래스(위젯 및 레이아웃)가 있습니다. 어플리케이션의 UI 요구사항에 요청하는 위젯의 기능과 UI가 안드로이드에서 기본으로 제공하는 위젯이 제공을 한다면 위젯을 골라서 사용하면 되겠지만, 기본으로 제공하는 위젯이 요구사항에 맞지 않다면 CustomView를 직접 만들어야 합니다. CustomView의 장점으로는 매번 레이아웃으로 일일히 만드는 것 보다 CustomView를 만드는 것이 앱의 생산성에 도움이 됩니다. CustomView를 만들기 위해서는 View 및 ViewGroup 혹은 안드로이드에서 제공하는 위젯을 상속받고 메소드와 레이아웃을 상속..

Android/Dependency Injection

[Android/DI] Dagger2 - Scope와 dagger.android

Dagger의 가장 큰 장점은 계층관계의 오브젝트 그래프를 만들 수 있다는 것 입니다. 이번에 다룰 @Subcomponent와 @Scope를 이용하면 오브젝트 그래프를 이용하여 앱 구성요소의 생명주기 동안 메모리 할당과 해제를 효율적으로 관리할 수 있게 해줍니다. Application(Singleton) Scope 지정 먼저, Application Scope를 가져야하는 클래스들(Repository, DataSource 등등....)은 앱이 실행되는 동안 인스턴스가 메모리에 있기를 원하기 때문에 Application의 생명주기와 동일한 범위를 따르는 오브젝트 그래프를 만듭니다. 이렇게 하면 그래프는 앱 수명 주기에 연결됩니다. 그래프를 생성하는 인터페이스는 @Component로 주석이 지정되므로 Appl..

Android/Error Log

[Android/error] app:mergeRelaseResources 에러

에러 내용 * What went wrong: Execution failed for task ':app:mergeReleaseResources'. > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > AAPT2 aapt2-4.2.1-7147631-linux Daemon #0: Compile '/home/circleci/project/app/src/main/res/drawable/app_icon.png' timed out, attempting to stop daemon. This should not happen under normal circumstances, please file an ..

Android/Dependency Injection

[Android/DI] Dagger2 - MultiBinding 주입하기

Dagger에는 단일 데이터를 주입받는 방법 외에도, 자료구조를 이용하여 n개의 데이터를 주입받는 방법이 있습니다. 대표적으로 Set과 Map을 이용하는 방법이 존재합니다. Set MultiBinding 먼저, Set을 이용한 MultiBinding입니다. SetModule.kt @Module class SetModule { @Provides @IntoSet fun provideHello(): String = "Hello" @Provides @IntoSet fun provideWorld(): String = "World" @Provides @ElementsIntoSet fun provideSet(): Set { return HashSet(listOf("seosh", "817")) } } @IntoSet을..

Android/Dependency Injection

[Android/DI] Dagger2 - Qualifier 어노테이션

이번 포스트에서 다룰 내용은 Qualifier 어노테이션입니다. 이름 그대로 객체를 식별해주는 어노테이션입니다. @Named Qualifer Dagger는 의존성 주입을 요청했을 때 Module에 선언된 자료형(Type)과 동일한 객체를 주입해줍니다. 따라서, Module에 동일한 Type의 객체가 여러개 선언되어 있을 경우, 컴파일 타임에 에러를 발생하게 됩니다. 의존성주입은 Interface를 기반으로하는 코드를 권장하므로, 같은 부모를 가진 여러 Child 클래스가 존재할 가능성이 매우 높습니다. 이러한 경우를 위해서 @Named 어노테이션을 통해서 같은 타입의 여러 객체를 선언하고 주입해줄 수 있습니다. 사용법은 간단합니다. Module의 @Provides어노테이션과 @Injection 어노테이..

반응형
seunghwaan
'Android' 태그의 글 목록