본문 바로가기

Android

이모지 체크 하기 회사의 레거시 서버의 탓에 EditText 로 전달 받는 값 중 이모지를 입력하면 안된다는 항목이 존재해서 이를 위해 자료를 찾고 있었는데 EditText 자체에 입력이 아에 안되게 하는 방법 그리고 입력 된 후 String 에 이모지가 담겨 있는지 확인하는 방법 이렇게 2가지 형태로 체크 할 수 있었다. 우선은 둘다 적용해보기로 하고 아래와 같이 Extension 을 만들어냈다. EditText 에 이모지가 입력 안되게 하는 방법 fun EditText.blockingEmoji() { filters = arrayOf(object: InputFilter { override fun filter( source: CharSequence?, start: Int, end: Int, dest: Spanned?, d.. 더보기
AOS Border fade-in/fade-out 개발중에 round border 를 줄 일이있었는데 view 선택 시 툭 툭 변경되는데 좀 부자연 스럽게 느껴저서 부드럽게 전환 할 방법이 있나하고 찾아보았더니 나온다. 별건 없고 생성한 selector 에 enterFadeDuration / exitFadeDuration 값을 설정하면 내부적으로 처리를 해주더라 (min api 21 에서 시도 했다.) 더보기
Dagger Hilt 구글에서 Android 향 으로 개발된 Dagger Hilt 를 출시하였고 기존의 Dagger2 를 Dagger Hilt 로 전환하는 방법에 대한 메뉴얼 https://codelabs.developers.google.com/codelabs/android-dagger-to-hilt/#0 Dagger ~ Hilt Hilt Guide : https://dagger.dev/hilt/ Android Developers ~ Guides Dependency injection Dependency injection with Hilt : https://developer.android.com/training/dependency-injection/hilt-android Hilt in multi-module apps : htt.. 더보기
AppUpdateManager 참고 https://developer.android.com/guide/app-bundle/in-app-updates https://proandroiddev.com/android-in-app-updates-common-pitfalls-and-some-good-patterns-9024988bbbe8 언제 나왔는지도 몰랐다가 오늘 뒤적거리니 보이는 AppUpdateManager 되시겠다. 일단 사용하기 위해서는 min level 21 은 되어야 하며 Play Core Library 1.5.0 이상을 사용해야 된다고 한다. 초기에 업데이트 확인을 위해 웹크롤링을 이용했다가 플레이 구글 사이트 개편 이후 =_ = 이를 서버로 옮기곤 손 떼고 있었는데 다시 보니 정식으로 지원하는 API 가 존재하는 걸 보는데 왠지.. 더보기
SameSite=Lax 참조 https://developers-kr.googleblog.com/2020/01/developers-get-ready-for-new.html?fbclid=IwAR0wnJFGd6Fg9_WIbQPK3_FxSSpFLqDCr9bjicXdzy--CCLJhJgC9pJe5ss&m=1 https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03 https://web.dev/samesite-cookies-explained/ https://web.dev/samesite-cookie-recipes/ SameSite 이슈 관련하여 이상 여부 메일을 와서 (근래에 구글 블로그를 확인 안했군..) 잠시 확인하는데 문서상에서 풀어 나가는 방법으로 설명되어 있는 바로는 첫번째 방.. 더보기
SameSite=Lax 참조 https://developers-kr.googleblog.com/2020/01/developers-get-ready-for-new.html?fbclid=IwAR0wnJFGd6Fg9_WIbQPK3_FxSSpFLqDCr9bjicXdzy--CCLJhJgC9pJe5ss&m=1 https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03 https://web.dev/samesite-cookies-explained/ https://web.dev/samesite-cookie-recipes/ SameSite 이슈 관련하여 이상 여부 메일을 와서 (근래에 구글 블로그를 확인 안했군..) 잠시 확인하는데 문서상에서 풀어 나가는 방법으로 설명되어 있는 바로는 첫번째 방.. 더보기
cannot inline bytecode built with jvm target 1.8 into bytecode that is being built with jvm target 1.6. please specify proper '-jvm-target' option 묵혀둔 소스를 테스트 케이스를 진행하는데 갑자기 나타나는 =_ = 오류 메시지 흠 ... cannot inline bytecode built with jvm target 1.8 into bytecode that is being built with jvm target 1.6. please specify proper '-jvm-target' option 뒤적 거려서 해결본 사항은 아래와 같다. app level 또는 lib level build.gradle 의 android block 내에 kotlinOptions 을 추가하고 jvmTarget 를 1.8 로 고정시켜주면 된다. build.gradle android { ... kotlinOptions { jvmTarget = "1.8" } } 더보기
IntDef, StringDef 사용법 안드로이드에서는 enum 사용에대해 보통 비추천을 하고 있기 때문에 숫자 또는 문자열로 기준 값을 정의 한 뒤 이를 기준으로 값을 비교 하는 형태가 주인데 문제는 enum 과 같이 딱 떨어지는 값이 아니다 보니 예외 상황이 발생될 가능성이 존재하게 된다. 이를 보안하기 위해 @IntDef 또는 @StringDef 로 지정하여 사용하는 것인데 이에 한 예제는 아래와 같다. interface IWindowDelegate { companion object { const val WINDOW = 0 const val POPUP_WINDOW = 1 } } @IntDef(value = [ IWindowDelegate.WINDOW, IWindowDelegate.POPUP_WINDOW ]) annotation class.. 더보기
kotlin 그리고 java builder 패턴 java 에선 매우 유용하던 builder 패턴이 kotlin 으로 넘어가면서 다소 계륵이 된듯한 느낌이지만 어찌되었던 간에 kotlin + java 의 상황에서는 신규로 만드는 kotlin 코드에서도 java 에서 builder 패턴 으로 호출 할 수 있도록 작업이 필요하다. 물론 순수 kotlin 으로만 되어 있다면 data class 에 apply 만 이용하면 비슷한 효과를 얻을 수있으므로 필요 없는 작업이 되겠지만 기존의 프로젝트의 경우 java 와 섞여 있으니 =_ = 해야 된다. 가령 기존의 java 코드가 아래와 같았다면 final class WindowDelegateParams { public final String url; public final String windowName; publ.. 더보기
dokka (kdoc) 진행하는 프로젝트에 kotlin 파일이 늘어나다 보니 =_ = 기존의 javadoc 으로는 답 안나와서 kdoc 으로 변경하려고 했는데 =_ = multi project 형태는 아직 명확한 답이 없네?? 단일 프로젝트는 단순 명료하지만 다중 프로젝트로 (다수의 라이브러리 모듈) 구성된 형태라면 현재로서는 각각으로 생성되는데 하나로 합쳐지는 형태가 딱히 보이질 않는다. 내가 못찾는것 일수도 있지만 =_ = 일단 kdoc 적용은 보류 dokka https://www.facebook.com/kotlinkr/posts/784627251645615/ 설명도 간단했다. Java엔 JavaDoc이 있다면, Kotlin엔 KDoc[1]이 있습니다! Inline Markup은 Markdown 문법으로 작성할 수 있어서 .. 더보기