일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- java
- 악성코드
- 하버드
- Android 4.1
- git
- c
- OOM
- 안드로이드 개발
- ActiveMovieControl
- 안드로이드
- linux
- Eclipse
- mime
- ActiveX
- 개발
- 안철수
- 탐지기법
- 리눅스
- build.gradle
- C++
- 보안
- gradle
- 구글
- 노개북
- KTS
- kotlin
- 코틀린
- 자바
- Android
- Today
- Total
목록안드로이드 (18)
꿈소년의 개발 이야기
코루틴 디버깅을 하는 것은 쉽지 않습니다. 일반적으로 코루틴을 디버깅할 때, 어떤 코루틴인지 알기 어렵기 때문에 이름을 붙입니다. 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 대상자로 되어 있다면 권한 자동 삭제 예외 처리를..
현상 해당 Map 은 로 선언되어 있습니다. key 값으로 value 를 가져오는 부분에서, Unboxing of 'map.get(key.toString())' may produce 'NullPointerException' 경고 문구가 생깁니다. 원인 가져온 값을 primitive type 즉, int 변수로 받아서 생기는 문제입니다. 객체 Integer를 받아서 null 체크해야 하는데, int 타입으로 넣어버리면 null check를 못하니, 경고할 수밖에 없죠. 이 부분에 대해서 염두하시고 항상 wrapper 클래스나 객체 사용 처리를 하면서 Null 체크도 잊지 마세요. 끝.
Object는 일부 클래스에 대해 새로운 하위 클래스를 명시적으로 선언하지 않고, 그 클래스를 조금 일부를 변경한 객체를 만들어야 할 때 사용합니다. Object Expressions 또는 Object Declarations를 사용하여 이를 처리할 수 있습니다. 그 중에서 Object Expressions 에 대해 적어봅니다. 코틀린 공식 문서를 참고했습니다. 객체 표현식 객체 표현식은 클래스 선언으로 명시적으로 선언되지 않은 클래스, 즉 익명 클래스의 객체를 만듭니다. 이러한 클래스는 일회용으로 유용합니다. 처음부터 정의하거나, 기존 클래스에서 상속하거나, 인터페이스를 구현할 수 있습니다. 익명 클래스의 인스턴스는 이름이 아닌 표현식으로 정의되므로 익명 객체 라고도 합니다. 처음부터 익명 객체를 생성하..
최근에 사용해야 할 폰트나 리소스가 필요한데... 검색을 통해서 원하는 걸 찾기란 여간 쉬운 일이 아닙니다. 무료인 줄 알았는데 자세히 들여다보면 라이선스가 까다롭게 설정되어 있거나 유료 서비스를 요구하는 것들이 많습니다. 특히 모바일용은 사용할려면 더욱 그렇죠. 최근에 평소보다 좀 더 많은 샘플 앱을 만들어보면서 라이브러리를 공부하고 있었는데요. 아무래도 좀 더 이쁘게 만들어야 그럴 듯 한 건 어쩔 수 없죠. 😂 저도 열심히 검색해서 괜찮은 걸 찾아보려고 했지만, 예쁜 건 죄다 유료!!! 🔥🔥🔥 그래서 구글이 제공해주는 뭔가 그럴 듯 한게 있지 않을까란 생각이 들어서 찾아보니 이게 있었습니다. Google Fonts 각종 폰트 및 아이콘들 사용 가능하게 구글에서 제공하는 곳. 아... 😤 그런데 이 사..
RecyclerView 를 사용하다 보면, 아래 같은 에러를 마주치는 경우가 있다. java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 3(offset:3).state:4 android.support.v7.widget.RecyclerView 보통 RecyclerView 에서 가져온 adapter 에 새로운 데이터 리스트를 넣어 notifyDataSetChanged() 까지 처리를 했는데도, 어느 정도 동작을 하다가 오류를 발생하게 되는 경우가 더러 있다. 일반적으로 RecyclerView 어댑터에 업데이트할 데이터 목록을 넣어 줄텐데, 그럴 경우 참조로 넘기도록 처리하면서 이슈가 생기는 경우가 많다. call..
벡터 이미지를 적용해 스크린 해상도나 크기와 상관없이 단일 리소스로만 처리할 수 있게 개발 하는 중 API 16 버전에서 문제가 생겼다. 벡터 이미지를 찾지 못해서 NullPointerException 이 발생하는 이슈가 생긴 것이다. https://developer.android.com/guide/topics/graphics/vector-drawable-resources#vector-drawables-backward-solution확인해봐도 딱히 빠진 게 없다. 도대체 뭐가 문제인지 모르던 차에 적용된 버전이었던 android support library 23.2 버전을 다시 훝어보았다.보통 ASL 의 경우, 릴리즈 히스토리에 적힌 내용을 참고하면 좋은 결과가 있었던 적이 있었기에 다시 확인해보았다. ..
안드로이드 스팬 처리 작업 시 조사한 내용. 스팬 관련 내용이 잘 정리되어 있는 글http://flavienlaurent.com/blog/2014/01/31/spans/ 동일한 글에 대한 번역 문https://blog.asamaru.net/2015/11/02/android-spans-a-powerful-concept/ 해당 글의 저자의 소스 파일들이 있는 곳https://github.com/flavienlaurent/spans
네이버 아이디로 로그인 하기 프로가드 설정법 네아로 라이브러리를 통해서 로그인하는 애플리케이션을 만드는 경우,프로가드를 설정 할 때, Retrofit 라이브러리가 사용하는 simple xml 에 대한 처리를 해줘야 한다. # 네이버 로그인 관련 retrofit 에서 사용하는 org.simpleframework.xml 처리-keep class org.simpleframework.xml.** { *; } 이걸 처리해줘야 네이버 아이디로 로그인 하는 과정이 동작한다.