분류 전체보기(80)
-
Baseline Profiles
Baseline Profiles란apk에 담기는 클래스와 메소드의 목록앱이 설치되는 동안 이 목록의 클래스와 메소드는 pre-compile된다. 이 결과물은 실행이 더 빠르다 → 앱 실행 시간과 jank(cpu의 초과 작업시간)감소 Baseline Profiles 만들기Jetpack Macrobenchmark 라이브러리를 사용해야 한다.BaselineProfileRule을 사용해서 테스트를 작성한다.rooted 기기 또는 구글플레이가 설치되지 않은 emulator에서 테스트를 실행한다.Test Results 패널에서 생성된 profiles 로그를 찾는다. 로그 예)To copy the profile use: adb pull "/sdcard/Android/media/com.example.macrobench..
2023.07.26 -
Fragment 에서 데이터를 주고받는 방법
CommunicatorFragment Interface 활용abstract class CommunicatorFragment : Fragment() { abstract fun processReceivedData(key: String, value: Any) // 보내는쪽 abstract fun registerDataCallback(callback: (key: String, value: Any) // 받는쪽 -> Unit) } fragment Apackage com.example.moduleA import com.example.utility.CommunicatorFragment ... class FragmentA : CommunicatorFragment(){ private lateinit var dataCal..
2023.07.26 -
Android Jetpack security
Security with zetpackEncryptedfileFlieInputStream / FileOutputStream의 사용자 구현을 지원. AEAD(Streaming Authenticated Encrption with Associated Data)를 지원해 안전한 스트리밍 읽기 / 쓰기 보장 EncryptedSharedPreferencesSharedPreferences 클래스의 wrapper. Sp에 저장된 키와 값의 자동 암호화 제공. AES-256 사용 KeyStore데이터 암호화 및 해독에 사용되는 기본 master키 사용. With Samples전통적으로, 암호화 되지 않은 sp를 사용하면 유출 될 수 있음.아래는 샘플https://github.com/Burak-Tasci/TokenMana..
2023.07.26 -
Architecture guide - suggested by Google
최신 앱 아키텍쳐 권장사항이 최신 앱 아키텍처에서는 다음 기법을 사용하도록 권장합니다.반응형 및 계층형 아키텍처앱의 모든 레이어에서 단방향 데이터 흐름(UDF)상태 홀더가 있는 UI 레이어로 UI의 복잡성 관리코루틴 및 흐름종속 항목 삽입 권장사항 UI Layer State는 아래와 같은 형식data class NewsUiState( val isSignedIn: Boolean = false, val isPremium: Boolean = false, val newsItems: List = listOf(), val userMessages: List = listOf() ) data class NewsItemUiState( val title: String, val body: String, val bookmark..
2023.07.26 -
딥링크 BASIC
커스텀 스킴 …And More Android 웹뷰에서 딥링크 열기manifest에 패키지 등록 필요한 액션을 발생시킬 페이지를 WebViewClient로 열기 → 요청, 상태, 에러를 콜백으로 편리하게 처리 가능웹뷰에서 URL을 열 때는 shouldOverrideUrlLoading()를 사용메서드에서 true를 반환하면 URL은 개발자가 정의한 대로 열리고, false를 반환하면 현재 웹뷰에서 URL을 염먼저 딥링크를 파싱해서 URI 객체로 만들고, 그리고 스킴을 확인함Intent 스킴이라면 startSchemeIntent()함수를 호출Intent 스킴 링크를 열어보고 앱이 설치 안 되어 있다면, Intent 스킴에 포함된 앱 패키지 정보로 스토어를 염Intent 스킴이 아니라면 커스텀 링크 또는 App..
2023.07.26 -
Kotlin operator extension
Spread 연산자 (*)배열리나 리스트를 spread하는데 사용됨. fun printNumbers ( vararg numbers: Int ) { for (number in numbers) { println(number) } } fun main () { val numbers = intArrayOf( 1 , 2 , 3 ) printNumbers(*numbers) } // 출력 /* 1 2 3 */ in 연산자컬렉션 또는 범위에 요소가 있는지 확인하는데 사용됨. 있으면 TRUE 아니면 FALSE val numbers = listOf( 1 , 2 , 3 , 4 , 5 ) val result = 7 in numbers println( "result is $result " ) // 출력 // false 범위 연산..
2023.07.25