본문 바로가기

프로그래밍 놀이터/안드로이드, Java1044

[android] 성능에 대한 미신들을 때려잡자! ( from Dev Summit 2019 ) 성능에 대한 미신들을 때려잡자! ( from Dev Summit 2019 ) -Performance 에 대해서는 항상 measure 를 해봐야 한다. * Kotlin -Kotlin app 은 더 size 가 크고 느릴 것이다. -단순한 밴치마킹용 심플 코드가 아닌, Google Drive 를 converting 해보았다. 16K lines / 171 Files / 41 Build Target Startup time 은 동일 / 25% code line 줄어듬 / 2% 정도 compile code size 가 줄어듬성능은 동일하지만, 유지보수해야 하는 코드가 줄어들었다는데 큰 의미가 있다. * Code pattern Fields Access Patterns (getter/setter) getter/sett.. 2019. 11. 16.
[android] AndroidX 로의 migration : 그 때가 왔다! ( from Dev Summit 19 ) AndroidX 로의 migration : 그 때가 왔다! ( from Dev Summit 19 ) * AndroidX 가 뭔데 - androidx 는 set of tool & guide 이다. 목표는 best practice 적용, boiler plate 제거, 어려운 일을 간단히 해서 핵심에 집중할 수 있게 한다. - Jetpack, Support lib, AndroidX 의 관계는 어떻게 될까? AndroidX 는 Jetpack 을 담고 있다. Jetpack 코드의 pgk name 은 androidx 이다. 그리고 Support lib 28 이 AndroidX 1.0 에 들어왔다. * 왜 Migrate 해야 하지? - Support lib 이 28 에서 지원을 멈추고 이제는 AndroidX 에서 제.. 2019. 11. 15.
[android] Coding in Style: Static Analysis with Custom Lint Rules ( from Dev Summit 19 ) Coding in Style: Static Analysis with Custom Lint Rules ( from Dev Summit 19 ) * Initial project set-up - module 을 만들어서 java-library 로 지정하고, aar 로 패키징해서 배포한다. - apply plugin: 'java-library' apply plugin: 'kotlin' ext { lintVersion = "26.5.1" // android gradle version 에 23 을 더해준다. (걍 그렇게 되었다고 함) } dependencies { compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8" // Lint compileOnly "com.androi.. 2019. 11. 14.
[android] Pie (android 9) 의 변경점 [android] Pie (android 9) 의 변경점 https://developer.android.com/about/versions/pie/android-9.0-changes-all -다음 변경점들은 API level 이나 targeting 에 상관없이 Android 9 platform 에서 동작하는 “모든 앱” 에 적용된다. * Power management 전원 관리 관련된 새로운 기능들이 추가되었다https://developer.android.com/about/versions/pie/power app standby bucket 과 battery saver improvements 가 주 내용이다. * Privacy changes bg app 이 sensor 에 접근하거나, Wi-Fi scan 하.. 2019. 7. 31.
[android] Pie 에서 앱 잘 작동하는지 확인하기 [android] Pie 에서 앱 잘 작동하는지 확인하기 https://developer.android.com/about/versions/pie/android-9.0-migration#ct -targetSdkVersion 을 올리지 않아도 pie(android 9) 에서 제대로 작동하지 않는 경우가 있다.그래서 아래의 것들을 확인해봐야한다. * non-SDK interface 에 대한 제약 -특정 non-SDK interface 에 대한 접근이 막힌다. 이것이 직접적 사용이던, JNI 를 통하던 reflection 을 통하던 말이다.제한된 interface 에 접근하는 것은 NoSuchFieldException 또는 NoSuchMethodException 을 발생시킨다.이에 대한 자세한 내용은.. htt.. 2019. 7. 30.
[android] Pie (9) 의 Power management [android] Pie (9) 의 Power management https://developer.android.com/about/versions/pie/power -Android 9 (API 28) 에서는 전원 관리를 위한 새로운 feature 가 추가되었다.이 전원 관리 기능은 2가지 카테고리로 나뉜다. 1. App standby buckets 시스템이 단말의 CPU, 배터리 등의 리소스 사용을 유저의 사용 패턴에 의해 제한한다. 2. Battery saver 개선 Battery saver 가 켜져 있을 때 시스템이 모든 앱에 대해 제한을 건다. 이건 기존에 있던 기능인데, Pie(9) 에서 개선되었다. * App Standby Buckets -얼마나 최근에 얼마나 자주 앱이 사용되었는지에 대한 유저.. 2019. 7. 29.
[android] Pie (POS) 에서의 text [android] Pie (POS) 에서의 text https://android-developers.googleblog.com/2018/07/whats-new-for-text-in-android-p.html PrecomputedText -TextView 에서 text 의 measure, layout 에 엄청 많은 일을 한다.font file 을 읽고, 상형문자를 찾고, shape 를 결정하고, bounding box 를 measure 하고, cache 를 한다.그리고 이 모든 일들은 UI Thread 에서 이루어진다. ( frame 하락을 가져온다. ) 이 중에서 text measuring 이 90% 시간을 차지한다.이 문제를 해결하기 위해 Jetpack 의 일부로 PrecomputedText 가 들어갔.. 2019. 7. 25.
[android] Android P 부터는 기본으로 TLS [android] Android P 부터는 기본으로 TLS https://android-developers.googleblog.com/2018/04/protecting-users-with-tls-by-default-in.html android:usesCleartextTraffic 이라는 manifest attribute 가 MOS 부터 추가되었다. NOS 에서는 Network Security Config 기능이 추가되었다. - 모든 Connection 이 TLS 를 사용한다면 아무런 조치를 취하지 않아도 된다. - TLS 는 느리지 않다. - Socket 을 직접 만들어 사용하는 경우 SocketFactory 대신 SSLSocketFactory 를 사용해라. SSLSocket 은 hostname veri.. 2019. 7. 24.
[android] POS, target SDK 28 이상의 동작 변경 [android] POS, target SDK 28 이상의 동작 변경 https://developer.android.com/about/versions/pie/android-9.0-changes-28 * Foreground services -Android 9 이상을 target 하는 앱들은 반드시 FOREGROUND_SERVICE 권한을 받아야 한다.이것은 normal permission 으로 system 이 자동으로 grant 해준다.target 이 android 9 이상을 하는데, 이 권한이 없는 경우 SecurityException 이 발생한다. * Privacy changes ** Build serial number deprecation -Build.SERIAL 값이 항상 UNKNOWN 을 제공한다.. 2019. 7. 23.