본문 바로가기

728x90
반응형

Android

10/30 read post 1. 출처 : https://medium.com/proandroiddev/android-touch-system-part-2-common-touch-event-scenarios-a37a885f5f75 제목 : Android Touch System — Part 2: Common Touch Event Scenarios 요약 : android touch system 에 대해서 설명합니다. 터치는 부모로부터 dispatchTouchEvent 를 통해서 전달되며 onIntercepTouchEvent 가 재정의 되어있는지 확인하고 재정의 되어있지 않으면 자식으로 전달됩니다. 가장 아래에 있는 자식이 onTouchEvent 를 호출한 후 이곳에서 false 가 호출되면 다시 부모로 전달됩니다. 이때 true 가 호출되.. 더보기
ClipToOutline, ClipToPadding, ClipToChildren 참고자료 : Create Shadows and Clip Views | Android Developers , AAPT: error: attribute android:clipToOutline not found , RenderNode | Android Developers Outline 내부 동작 먼저 outline 이 내부적으로 어떻게 동작하는지 확인해보겠습니다. (sdk level 31 기준) View.java @CallSuper protected void onAttachedToWindow() { if ((mPrivateFlags & PFLAG_REQUEST_TRANSPARENT_REGIONS) != 0) { mParent.requestTransparentRegion(this); } mPrivateFlags.. 더보기
Making Sense of Intent Filters in Android 13 Android 13 이전에는 매니페스트에 exported component 로 등록하고 를 추가하면 명시적 intent 로 component 를 시작할 수 있었습니다. – 심지어 intent filter 가 일치하지 않는 경우에도. 일부 상황에서는 다른 앱이 내부 전용 기능을 트리거하도록 허용할 수 있습니다. 이 동작은 Android 13에서 업데이트되었습니다. 이제 action 을 지정하고 외부 앱에서 시작하는 intent는 intent가 선언된 요소와 일치하는 경우에만 exported component 에 전달됩니다 . 반직관적 기존 Android 버전에서는 intent 가 component 의 선언된 요소와 일치하지 않는 component(예: )에 intent 를 전달하는 두 가지 방법이 있습니다.. 더보기
Data Store 출처 : https://medium.com/androiddevelopers/introduction-to-jetpack-datastore-3dc8d74139e7, https://medium.com/@jurajkunier/migrating-sharedpreferences-to-jetpack-datastore-9deb8259063, https://developer.android.com/topic/libraries/architecture/datastore Introduction to Jetpack DataStore DataStore 는 preference 또는 application state 같은 작은 양의 data 를 안전하고 일관되게 저장하기 위한 방법을 제공하는 Jetpack library 입니다. Dat.. 더보기
Understand Android Lifecycle Aware Coroutine Scope Made Easy 출처 : https://medium.com/mobile-app-development-publication/understand-android-lifecycle-aware-coroutine-scope-made-easy-f86d13d16f0e Kotlin Coroutine을 사용하려면 적절한 scope 를 정의해야 합니다. 까다로운 부분은 생성하고 중지하는 것을 기억해야 한다는 것입니다. 이를 고려하여 Google Android 개발 팀은 수명 주기를 인식하는 몇 가지 Coroutine scope 를 제공했습니다. 예제에서 Activity에 lifecycleScope를 사용하면 Fragment에 viewLifecycleOwner.lifecycleScope가 사용됩니다. Fragment 체크아웃에 대해 구체적으.. 더보기
Avoid Using “when” Expression as Much as Possible. Use Polymorphism Instead 출처 : https://medium.com/better-programming/avoid-using-when-expression-as-much-as-possible-use-polymorphism-instead-890b92389060 When 문은 종종 smell code 로 간주되어 피해야만 합니다. 5개의 미리 정의된 크기로 개발해야 하는 Button 5개가 있다고 가정해 보겠습니다. small (height = 16dp) medium (height = 24dp) large (height = 32dp) huge (height = 40dp) custom sealed class ButtonSize { object Small : ButtonSize() object Medium : ButtonSize() obj.. 더보기
Android SNS 로그인 시 Locale Change 이슈 Android 7.0 이상에서 분명 Locale 을 영어나 글로벌 언어로 해놓았는데, WebView 를 거치거나 chrome tab 을 이용하는 library 를 사용하게 되면 Locale 이 변경 되는 이슈가 있다. 해당 library 에서 변경하는 내부코드 부분을 찾아보려 했으나 찾지 못하였다. DateTimeFormatter public static DateTimeFormatter ofPattern(String pattern) { return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter(); } public DateTimeFormatter toFormatter() { return toFormatter(Locale.getDefa.. 더보기
Frida 사용 도전?기 Android / iOS 해킹?툴 Frida를 알게 되었다. Frida 를 직접 써보고 가능하다면 여러가지 활용이나 대응 방안을 해보기 위해 일단 써보기로 하였다. 테스트 환경은 Android 단말을 테스트로 하였고, 대부분 비루팅 상황이기 때문에 비루팅 단말을 대상으로 하였다. 비루팅 단말은 gadget library를 이용한 방식인데, app에 library 를 삽입후 재패키징하여 frida-server 를 돌리는 것처럼 만드는 방식이다. 꽤 몇일을 고생한 결과 실패했다. 실패한 이유는 27042 tcp listening 하는 서버?가 생성되지 않는다. gadget 9점대로 하니 crash. 최신 버전및 그 하위 버전으로 해도 서버가 생성되지 않는다... Unkown bits set in runtim.. 더보기

728x90
반응형