일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Android
- 자바
- mime
- C++
- 리눅스
- ActiveX
- KTS
- 악성코드
- git
- 보안
- Android 4.1
- 개발
- OOM
- build.gradle
- linux
- 안드로이드 개발
- 구글
- java
- c
- 하버드
- 노개북
- gradle
- 탐지기법
- kotlin
- Eclipse
- 코틀린
- ActiveMovieControl
- 안드로이드
- 안철수
- Today
- Total
목록Android (30)
꿈소년의 개발 이야기
코루틴 디버깅을 하는 것은 쉽지 않습니다. 일반적으로 코루틴을 디버깅할 때, 어떤 코루틴인지 알기 어렵기 때문에 이름을 붙입니다. CoroutineName 활용 CoroutineScope(CoroutineName("MyCoroutine") + Dispatchers.IO).launch { // impl } CoroutineName 을 추가하면 해당 코루틴에게 이름이 붙습니다. 로그 메시지에서 해당 이름이 출력됩니다. 이를 통해서 디버깅할 때, 동시 다발로 발생하는 코루틴도 이름으로 식별 가능합니다. CoroutineName 이 표시가 되려면 디버깅 옵션을 추가해야 하는데요. -Dkotlinx.coroutines.debug 인텔리제이 기준으로 Run > Edit Configuration > VM option..
aar 파일 의존성을 추가하는 방법은 3가지가 있습니다. 1. module/libs 폴더에 넣어두고 의존성을 추가하는 방식 build.gradle dependencies { implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"]) } build.gradle.kts dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))) } 2. aar 파일 경로를 추가하는 방식 build.gradle dependencies { implementation files('my_path/my_lib.aar') } build.gradle.kts..
Android 11 에서는 권한 자동 삭제 기능이 추가되었습니다. 이 기능은 오랫동안 사용하지 않은 앱이 권한을 계속 가지고 있는 문제점을 해결하기 위해서 나옵니다. 이 영향을 받게 되는 권한은 런타임 권한입니다. 런타임 권한은 흔히 앱에서 사용자에게 요청을 표시하면서 허락을 구하는 그런 권한들입니다. 예외 처리 먼저 내 앱이 권한 자동 삭제 대상으로 되어 있는지 확인해봅니다. https://developer.android.com/reference/android/content/pm/PackageManager#isAutoRevokeWhitelisted() PackageManager | Android Developers developer.android.com 대상자로 되어 있다면 권한 자동 삭제 예외 처리를..
Cannot access class 'java.io.OutputStream'. Check your module classpath for missing or conflicting dependencies Cannot access class 'java.net.uri'. Check your module classpath for missing or conflicting dependencies Kotlin DSL 로 전환 처리하는 경우 이런 에러들이 나타나곤 합니다. 하지만 빌드는 잘 되죠. 단지 편집에서 접근이 안된다고 오류가 나옵니다. 아무리 invalidate restart 해봐도 해결이 안되는 경우가 생기는데, 이럴 때는 이렇게 해보세요. 1. 안드로이드 프로젝트를 닫습니다. 2. 해당 프로젝트 루트 폴더에..
kotlin dsl 로 전환하기 위해서는 먼저, build.gradle 파일을 build.gradle.kts 파일로 변경해야 합니다. 그리고 kotlin 스크립트 언에 맞게 내용을 변경해주게 됩니다. 이때 가끔씩 getByName 이라든지 isMinifyEnabled 같은 프로퍼티가 인식이 안되는 경우가 생깁니다. 빌드를 하면 빌드가 잘 되지만, 안드로이드 스튜디오 편집기에서 오류가 표시되는 경우가 있습니다. kotlin 의 collection 같은 걸 접근 못하고 있다는 걸로 나타나는데, 정확한 원인은 모르겠지만 추측해 보자면 파일 접근 권한이 문제가 생기는 것 같습니다. 제가 해결한 방식은 이렇습니다. 1. 안드로이드 스튜디오를 비롯한 프로젝트 창들을 모두 닫고 종료합니다. 2. 터미널을 열고 3. ..
Object는 일부 클래스에 대해 새로운 하위 클래스를 명시적으로 선언하지 않고, 그 클래스를 조금 일부를 변경한 객체를 만들어야 할 때 사용합니다. Object Expressions 또는 Object Declarations를 사용하여 이를 처리할 수 있습니다. 그 중에서 Object Expressions 에 대해 적어봅니다. 코틀린 공식 문서를 참고했습니다. 객체 표현식 객체 표현식은 클래스 선언으로 명시적으로 선언되지 않은 클래스, 즉 익명 클래스의 객체를 만듭니다. 이러한 클래스는 일회용으로 유용합니다. 처음부터 정의하거나, 기존 클래스에서 상속하거나, 인터페이스를 구현할 수 있습니다. 익명 클래스의 인스턴스는 이름이 아닌 표현식으로 정의되므로 익명 객체 라고도 합니다. 처음부터 익명 객체를 생성하..
최근에 사용해야 할 폰트나 리소스가 필요한데... 검색을 통해서 원하는 걸 찾기란 여간 쉬운 일이 아닙니다. 무료인 줄 알았는데 자세히 들여다보면 라이선스가 까다롭게 설정되어 있거나 유료 서비스를 요구하는 것들이 많습니다. 특히 모바일용은 사용할려면 더욱 그렇죠. 최근에 평소보다 좀 더 많은 샘플 앱을 만들어보면서 라이브러리를 공부하고 있었는데요. 아무래도 좀 더 이쁘게 만들어야 그럴 듯 한 건 어쩔 수 없죠. 😂 저도 열심히 검색해서 괜찮은 걸 찾아보려고 했지만, 예쁜 건 죄다 유료!!! 🔥🔥🔥 그래서 구글이 제공해주는 뭔가 그럴 듯 한게 있지 않을까란 생각이 들어서 찾아보니 이게 있었습니다. Google Fonts 각종 폰트 및 아이콘들 사용 가능하게 구글에서 제공하는 곳. 아... 😤 그런데 이 사..
앱 빌드를 실패했다. 멀티 모듈 구조에서 앱 모듈에 필요한 기능을 붙이기 위해서 해당 기능을 구현한 모듈을 하나 생성했습니다. demeter law 라는 걸 아실까요? 모듈 간 의존성을 제외 시키기 위해서 기존 구성을 변경했습니다. 라이브러리 모듈을 생성해서 넣어두었는데, 예기치 못한 빌드 시점에 아래와 같은 에러가 생기면서 apk 패키징이 되지 않는 현상이 발생했습니다. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:mergeDevDebugNativeLibs'. > A failure occurred while executing com.android.build.gradle.internal..
Theme Darcula Plugins CodeGlance Lombok Rainbow Brackets Fonts D2Coding NanumCoding Custom Settings Live Templates Code Style
RecyclerView 를 사용하다 보면, 아래 같은 에러를 마주치는 경우가 있다. java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 3(offset:3).state:4 android.support.v7.widget.RecyclerView 보통 RecyclerView 에서 가져온 adapter 에 새로운 데이터 리스트를 넣어 notifyDataSetChanged() 까지 처리를 했는데도, 어느 정도 동작을 하다가 오류를 발생하게 되는 경우가 더러 있다. 일반적으로 RecyclerView 어댑터에 업데이트할 데이터 목록을 넣어 줄텐데, 그럴 경우 참조로 넘기도록 처리하면서 이슈가 생기는 경우가 많다. call..