본문 바로가기

분류 전체보기

(57)
초간단! 안드로이드 WiFi로 ADB 연결하기! (간편한 플러그인 사용) 안드로이드 개발을 하다 보면, 여러 디바이스를 동시에 테스트해야 하는데 USB 포트의 개수는 한정적이라, 매번 USB 케이블을 뺐다 꽂았다 하는 번거로움이 있었습니다 ㅠㅠ 책상에는 USB케이블들이 여기저기 정신없이 너저분하게 흩어져있고요... 케이블 상태에 따라, 접촉불량으로 계속 연결이 끊기기도 하고... 또한, 제 PC에서는 장시간 USB케이블로 디바이스를 연결해둘 시 Log가 안 찍히는 현상이 자주 발생하여... 엄청난 삽질을 하게 만드는 일들이 너무 빈번했습니다 ㅠㅠ 이런 불편함을 해결하기 위해, 무선 WiFi로 ADB를 연결할수 있는 방법을 알려드리고자 합니다! 기존에 안드로이드 공식문서에도 보면, Android Debug Bridge(ADB) 가이드가 아주 잘 나와있지만, 해당 방법은 터미널에..
Repository Pattern 이해하기 Repository Pattern? Repository(리포지토리) 패턴은 디자인 패턴 중 하나로, 데이터가 있는 여러 저장소(Local, Remote)를 추상화하여 중앙 집중처리 방식을 구성하고, 데이터를 사용하는 로직을 분리시키기 위한 디자인 패턴입니다. ViewModel은 필요한 데이터를 Repository에 요청하고 Repository는 적절한 저장소에서 요청받은 데이터를 가져옵니다. Repository가 추상화되어 있기 때문에 ViewModel은 언제나 같은 인터페이스로 데이터를 요청할 수 있으며, 실제로 어떤 데이터를 사용하는지 전혀 알 필요가 없기 때문에 앱 환경에 맞는 적절한 데이터를 사용하기에 편리합니다. 왜 쓰는가? - 데이터 로직을 분리시킬 수 있습니다. - 중앙 집중처리 방식으로, ..
코틀린(Kotlin) - 컬렉션 API : filter, map, all, any, count, find, groupBy, flatMap, flatten 람다 함수형 프로그래밍은 컬렉션(Collection)을 다룰 때 상당히 편리하고 막강합니다. 대부분의 작업에 라이브러리 함수를 활용할 수 있고, 그로 인해 코드를 아주 간결하게 만들 수 있습니다. 그러므로 이번에는, 컬렉션을 다루는 코틀린 표준 라이브러리들을 살펴보도록 하겠습니다. 참고로, 코틀린에서 제공하는 컬렉션 API는 새롭게 추가된 것이 아닌, 기존의 java, C#, 그루비, 스칼라 등 람다를 지원하는 대부분의 언어에서 사용하는 것들과 동일합니다. 필수적인 함수 : filter, map filter와 map은 컬렉션을 활용할 때 기반이 되는 함수로, 대부분의 컬렉션 연산을 이 두 함수를 통해 표현할 수 있습니다. filter filter 함수는 컬렉션을 iteration 하면서 주어진 람다에 각..
AAC ViewModel 생성자 파라미터 넘기기, Cannot create an instance of class ViewModel 해결 방법 문제 발생 Caused by: java.lang.RuntimeException: Cannot create an instance of class ...ViewModel AAC Lifecycle ViewModel에서 context를 사용하기 위해, context를 사용할 수 있는 AndroidViewModel을 확장하고 빌드하였더니 위와 같은 에러가 발생하였습니다. 에러 내용을 보면 알 수 있듯이, ViewModel 인스턴스를 생성하지 못하여 에러가 발생했습니다. 저의 에러코드는 아래와 같았습니다. /** View Layer */ class MyActivity : AppCompatActivity() { ... private val viewModel by lazy { ViewModelProvider(this)..
코틀린(Kotlin) - 초간단 파일 저장 방법! fun saveFile(inputStream: InputStream, filePath: String) { //저장할 파일 val saveFile = File(filePath) saveFile.outputStream().use { fileOutput -> inputStream.copyTo(fileOutput) } } 기존에 루프(Loop)를 돌면서 버퍼를 읽는 방식 대신, 코틀린에서 지원하는 copyTo() 기능으로 아주 간편하게 바이트를 복사할 수 있고, use() 함수가 I/O resource를 자동으로 관리해주기 때문에, 초간단하게 파일 저장 코드를 구현할 수가 있습니다! 확장 함수를 이용해서, 더 멋지게 만들기! 코틀린에는 마치 기존 클래스에 구현된 기능인 것처럼 추가적인 함수를 커스텀하여 사용할 ..
코틀린(Kotlin) - 람다 식과 멤버 참조 코틀린의 람다는 자바8의 람다식과 개념이 매우 비슷합니다. 람다를 쉽게 설명하자면, 값처럼 여기저기 전달할 수 있는 동작의 모음(?)이라고 할 수 있습니다. 기본적으로 람다식은 자바8부터 사용이 가능하고, 안드로이드에서 제대로 된 Functional Interface를 사용하려면 N(Nougat 7.0) OS 이상이어야만 합니다. 하지만, 코틀린에서는 이런 제한과 상관없이 람다식을 사용할 수 있다는게 큰 장점이지 아닐까 싶습니다. 추가로, 람다식은 기본적으로 편리한 Lambda API들을 제공하기 때문에, 안드로이드 스튜디오에서 개발할 때 자동완성 기능을 이용해서 먼저 해당 API를 살펴본다면, 훨씬 더 간결하고 직관적인 코드를 짤 수 있을 것 같습니다. 람다 소개 : 코드 블록을 함수 인자로 넘기기 "..
맥 OS 에서 프로젝트 빌드 속도 개선을 위한, 간단한 체크사항! 꿀팁! 맥 OS 를 사용하고 계신 개발자분들 중에, '내 PC에서는 왜 이렇게 빌드가 느릴까...' 하시는 분들을 위해! 프로젝트 빌드 속도 개선을 위한, 간단하지만 아주 확실한 꿀팁 체크 사항에 대해 소개하도록 하겠습니다! FileVault 비활성화 맥 OS에는 보안 및 개인 정보 보호를 위해, 디스크에 있는 콘텐츠를 자동으로 암호화하는 기능이 있기 때문에, 이 기능 탓에 프로젝트 빌드 시간이 오래 걸릴 수가 있습니다! 이 기능을 비활성화 시키게 되면 드라마틱! 하게 빌드 속도가 빨라지니, 디스크 보안보다 프로젝트 빌드가 더 중요하다! 생각하시는 분들은 아래와 같이 FileVault 기능을 비활성화 시켜주시면 됩니다! 시스템 환경설정 > 보안 및 개인 정보 보호 > FileVault 탭 > FileVault 끄기
Cannot fit requested classes in a single dex file. 해결 방법 문제 발생 Error:Cannot fit requested classes in a single dex file... 이 오류는, 앱 내에서 참조될 수 있는 메소드의 총 개수가 65,536(64K)개를 초과해서 발생하는 오류로, '64K 참조 제한' 이라고 합니다. 앱이 참조하는 라이브러리에서 메소드가 64K를 초과하면, 빌드 제한에 도달했음을 알리는, 위의 빌드 오류 메시지가 발생하게 되는 것입니다. 이러한 제한을 해결하기 위해서는, multidex 지원 라이브러리를 구성하여 해결할 수 있습니다. 문제 해결 minSdkVersion 21 이상인 경우 minSdkVersion이 21 이상인 경우에는 multidex가 기본적으로 사용 설정되므로 추가적인 작업이 필요하지 않습니다. minSdkVersion 2..