본문 바로가기
[android] Safe Browsing 에 대해 알아보자. - Google Play Protect 가 Safe Browsing 이 기본으로 탑재된 WebView 를 제공한다. 2018년 4월부터이며, 이는 WebView 66 부터이다. WebView 의 Safe Browsing 은 Android 8.0 (API 26, OOS) 부터 Chrome on Android 기술을 통해 가능하다. - 개발자들이 Safe Browsing 의 이득을 얻기 위해 추가로 해줘야 할 건 없다. Safe Browsing 이 trigger 되면 app 은 warning 과 함께 network error 를 받는다. API 27 (O MR1) 이상부터는 Safe Browsing API 들을 사용해서 이를 customize 할 수 있다. - https://developer.android... 2023. 1. 7.
[android studio] Could not find lint-gradle-api.jar 해결 방법 - jcenter 와 google 이 repositories 에 추가되었음에도.. 아래와 같은 에러 메시지를 마딱뜨렸다. Could not find lint-gradle-api.jar (com.android.tools.lint:lint-gradle-api:26.1.2). Searched in the following locations: https://jcenter.bintray.com/com/android/tools/lint/lint-gradle-api/26.1.2/lint-gradle-api-26.1.2.jar - 나의 순서는 아래와 같았다. repositories{ jcenter() google() } 이를 아래와 같이 순서를 바꾸어주니 해결.... repositories{ google() jcent.. 2023. 1. 6.
[android] Runtime permission group 에 대한 이야기 - Permission group 과 개개의 permission 의 관계가 명확치 않아서 정리해보았다. - 우선 permission 요청은 group 단위가 아닌 개개 permission 단위이다. 예를 들어 READ_PHONE_STATE 만 permission 을 요청하고 grant 해도 Settings 에서는 CALL group 에 대한 permission 이 grant 된 것으로 표시된다. 비록 CALL permission group 은 ON 으로 되었지만, READ_CALL_LOG 등과 같이 grant 하지 않은 permission 을 사용하려고 하면 SecurityException 이 발생한다. - 그럼 Settings 에서 CALL permission group 을 ON 시키면 permissi.. 2022. 12. 31.
[android] implicit broadcast - signature permission or FLAG_RECEIVVER_INCLUDE_BACKGROUND - 안드로이드 가이드에 따르면 targetSdk 를 oreo 이상으로 설정할 경우, implicit broadcast 에 발송에 대해 (대상이 명확하지 않은 broadcast) static receiver 의 경우 수신할 수 없고, dynamic receiver 의 경우 수신할 수 있다. ( 물론, 일부 broadcast 는 예외적이다. https://developer.android.com/guide/components/broadcast-exceptions ) - Oreo 소스 기준 BroadcastQueue.java 의 processNextBroadcast 를 보면 아래 코드가 있다. // ... else if (((r.intent.getFlags()&Intent.FLAG_RECEIVER_EXCLUDE.. 2022. 12. 30.
[android] StrictMode 에 대해 다시 한번 알아보자 - http://aroundck.tistory.com/3429 Android StrictMode Android StrictMode 출처http://code.tutsplus.com/tutorials/android-best-practices-strictmode--mobile-7581http://developer.android.com/reference/android/os/StrictMode.html - android strict mode 는 2가지 category 가 있다. 하나는 thread policy 이 aroundck.tistory.com http://aroundck.tistory.com/2074 [android] Strict Mode 에 대해 알아보자. 안드로이드, Strict Mode 에 대해 알아.. 2022. 12. 29.
[android] FilePath 에 대한 이야기 - API 를 통해 FilePath 를 가져올 때 absolute path 정보가 조금 아리까리하다. 그래서 FilePath return 을 정리하여 감을 잡기 쉽게 하기 위해 이 글을 적어본다. - 아래 path 에 data/user/0 = data/data 이다. (main user 일 경우) - https://developer.android.com/reference/android/content/Context.html#getDir(java.lang.String,%20int) Context.getDir(, MODE_PRIVATE) /data/user/0//app_ - https://developer.android.com/reference/android/content/Context.html#getFile.. 2022. 12. 28.
[android] ListView, RecyclerView 에서 top position 인지 판단하는 방법 - canScrollVertically 를 이용하면 된다. - scrollView.setOnScrollChangeListener{ _, _, _, _, _ -> if(scrollView.canScrollVertically(-1)){ // it’s not top yet } else{ // it’s top } } 끝 2022. 12. 27.
Legacy Code 와 효율적으로 일하기 # 다음과 같은 이야기를 얼마나 들어봤는가? - 코드가 거지같은데 이 새로운 기능을 어떻게 추가하지? - 이 파일 바꾸는것은 위험부담이 큰데? - X, Y, Z 에 dependency 가 있는데 어떻게 이 class 를 test 하지? - 니가 원하는데로 바꾸기에는 시간이 충분치 않아 - 이 코드는 대체 뭘 하는거지?! - 이건 너무하다, 이건 더 이상 나아질 수 없을꺼라 생각해. # Legacy 코드는 무엇인가? 다른 사람이 짠 코드를 받는 것이다. test 가 되지 않은 코드이다. # 모든 변화는 risk 이다. code 가 제대로 동작하고 있다면 굳이 바꿀 이유가 없다. 특히나 test 가 되지 않는 코드라면.. 그러나 bug fix 를 한다던지, new feature 를 추가한다던지 할 때는 변화.. 2022. 12. 26.
[책 정리] 34. 빠져 있는 장 - Clean Architecture - 소프트웨어는 올바르게 정의된 경계, 명확한 책임, 그리고 통제된 의존성을 가진 클래스와 컴포넌트로 구성되어야 한다. 하지만 악마는 항상 디테일(구현 세부사항)에 있는 법이며, 이점을 심사숙고하지 않는다면 마지막 고비에 걸려 넘어지기 십상일 것이다. 계층 기반 패키지 - 코드는 계층이라는 얇은 수평 조각으로 나뉘며, 각 계층은 유사한 종류의 것들을 묶는 도구로 사용된다. '엄격한 계층형 아키텍처'의 경우 계층은 반드시 바로 아래 계층에만 의존해야 한다. - 계층형 아키텍처는 엄청난 복잡함을 겪지 않고도 무언가를 작동시켜 주는 아주 빠른 방법이다. 문제는 소프트웨어가 커지고 복잡해지기 시작하면, 머지 않아 큰 그릇 몇 개 만으로는 모든 코드를 담기엔 부족하다는 사실을 깨닫고, 더 잘게 모듈화해야 할지를 .. 2022. 11. 15.
반응형