'Android' 카테고리의 글 목록 (3 Page) — SH's Devlog

Android

Android/TDD

[Kotlin/TDD] Intellij에서 Test 코드 실행시 Test Results 결과가 console에 표시되지 않는 문제 해결법

문제 발생 @ParameterizedTest의 세부결과를 포함하여 총 22개의 Test 결과가 나와야 하는데 Test 결과가 하나로 나왔다. 해결 방법 Preferences -> Build, Exceution, Deployment -> Build Tools -> Gradle 탭으로 이동 Run tests using의 속성을 IntelliJ IDEA로 변경해주고 Apply 해준다. 모든 Test Result값이 정상적으로 Console창에 뜨는 것을 확인할 수 있다. 참고 https://sorravit.medium.com/fix-junit5-display-name-did-not-show-in-run-tab-intellij-a00c94f39679

Android/Kotlin(Java)

[Kotlin] Collections API - flatMap()

flatMap()이란? map의 모나드 버전. flatMap()을 통해 List를 평면화를 거쳐 새로운 List를 반환시킬 수 있습니다. public inline fun Iterable.flatMap(transform: (T) -> Iterable): List { return flatMapTo(ArrayList(), transform) } public inline fun Iterable.flatMapTo(destination: C, transform: (T) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } flatMap() 함수를 보면 수신..

Android/Basic

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

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

Android/Basic

[Android] Multidex 설정하기, Proguard 난독화로 앱 용량 줄이고 빌드속도 줄이기

빌드 에러 메시지 The number of method references in a .dex file cannot exceed 64K. 혹은 아래와 같은 런타임 에러 메시지 java.lang.NoSuchMethodError: No virtual method getScanFilter()Lcom/aasd/BleScanFilter; in class Lcom/abcd$Companion; or its super classes (declaration of 'com.abcd' appears in /data/data/com.abcd/code_cache/.overlay/base.apk/classes2.dex) 코딩을 하다보면 위와 같은 빌드 에러메시지가 발생하는 경우가 있습니다. 안드로이드 프로젝트 같은 경우 기본적으로..

Android/Kotlin(Java)

[Kotlin/Java] 얕은복사 vs 깊은복사, Collection의 방어적 복사

[이 글은 NextStep Kotlin TDD, Refactoring, Clean Code 수업 중 공부한 것을 복습하고자 정리한 글입니다.] 얕은 복사란? 주소값 자체를 복사하는 것이다. 복사된 객체의 인스턴스는 원본 객체의 인스턴스와 같은 메모리주소를 참조합니다. -> 따라서, 같은 메모리 주소값을 참조하기 때문에 복사된 객체의 값이 변경되면 원본 객체의 값도 변경됩니다. 깊은 복사란? 새로운 메모리 공간에 객체의 모든 값을 복사하는 것이다. 원본 객체는 그대로 두고, 새로운 메모리공간에 원본 객체의 값들을 모두 복사합니다. -> 따라서, 다른 메모리 주소값을 참조하기 때문에 복사된 객체가 변경되어도 원본 객체는 영향을 받지 않습니다. 얕은복사의 문제점 자바(코틀린)에서는 기본적으로 '='를 사용하여..

Android/Kotlin(Java)

[Kotlin] Kotlin 예외처리 - require(), requireNotNull(), check(), checkNotNull()(feat. IllegalArgumentException, IllegalStateException)

Kotlin 예외처리 함수 require(), check() require(), requireNotNull() 함수 require() : 매개변수의 값이 참인지 체크, 거짓이라면 throw IllegalArgumentException requireNotNull() : 매개변수의 값이 null이 아니면 value를 반환, null이면 throw IllegalArgumentException * 일반적으로 IllegalArgumentException은 적절하지 않은 인자를 전달했을 때 발생시키는 Exception 함수 원형 // 참이 아니라면 throw IllegalArgumentException("Failed requirement.") public inline fun require(value: Boolean..

Android/TDD

[Kotlin/TDD] 프로젝트에 ktlint를 적용하기

NextStep 이펙티브 코틀린 with TDD, Refactoring, Clean Code에서 배운 ktlint 설정 법을 정리해보고자 합니다. 린트 검사로 코드 개선 테스트를 빌드하여 앱이 기능적 요구사항을 충족하는지 확인하는 것 외에도 린트를 통해 코드를 실행하여 코드에 구조적 문제가 없는지 확인하는 것이 중요하다. ktlint를 프로젝트에 적용하기 Kotlin Coding Convention과 Android Kotlin Style Guide를 기본으로 따르고 있다. Gradle Groovy 설정 (build.gradle) buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { class..

반응형
seunghwaan
'Android' 카테고리의 글 목록 (3 Page)