들어가며Android 앱에서 WebView를 사용할 때, 로컬 HTML, CSS, JavaScript 파일을 로드해야 하는 경우가 많습니다. 과거에는 file:// 스킴을 사용했지만, 보안 문제와 CORS 제약으로 인해 많은 제한이 있었습니다. Android에서는 이러한 문제를 해결하기 위해 WebViewAssetLoader를 제공합니다. WebViewAssetLoader란?WebViewAssetLoader는 Android Jetpack의 webkit 라이브러리에 포함된 클래스로, 로컬 리소스(assets, resources)를 가상의 HTTP(S) URL을 통해 안전하게 제공할 수 있게 해줍니다.주요 특징:file:// 대신 https:// 스킴 사용CORS 정책 준수Same-Origin Policy ..
플러그인 설치Android Studio 에서 Kotlin MultiPlatform 플러그인을 설치합니다. 프로젝트 생성새 프로젝트를 생성해서 Kotlin Multiplatform App 을 선택해서 앱을 작성합니다. settings.grdle.ktsrootProject.name = "Quiz"enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")pluginManagement { repositories { google { mavenContent { includeGroupAndSubgroups("androidx") includeGroupAndSubgroups("com.androi..
문제 상황 Android 프로젝트를 빌드할 때 다음과 같은 에러가 발생했습니다: Caused by: java.lang.RuntimeException: Duplicate class org.jetbrains.annotations.Nls found in modules - annotations-23.0.0.jar -> annotations-23.0.0 (org.jetbrains:annotations:23.0.0) - kotlin-gradle-plugin-2.1.0-gradle85.jar -> kotlin-gradle-plugin-2.1.0-gradle85 (org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.0) Duplicate class org.jetbrai..
기능단축키설명모든 곳 검색Shift 두 번파일, 클래스, 액션, 설정 등 IDE 내 모든 것을 찾는 검색창클래스 검색Cmd+O클래스 이름만 입력해 즉시 해당 파일로 이동액션 검색Cmd+Shift+A메뉴나 설정에서 찾기 힘든 IDE 기능/액션을 검색하고 바로 실행선언으로 이동Cmd+B함수나 변수 위에 커서를 두고 누르면 정의된 원본 코드로 바로 점프최근 파일Cmd+E최근에 열었던 파일 목록을 보여줌. 파일 간 빠른 전환 기능단축키설명코드 포맷팅Cmd+Alt+L현재 파일의 들여쓰기와 공백을 프로젝트 스타일에 맞춰 단번에 정리빠른 수정Alt+Enter에러, 경고, 개선 제안이 있는 곳에서 누르면 IDE가 적절한 해결책을 제시코드 생성Cmd+N생성자, Getter, Setter, override 메서드 등을 ..
안드로이드 개발하다 보면 진짜 답답한 순간이 있다. 바로 "이 기기가 태블릿인지 폰인지" 판단해야 할 때다. // 개발자들이 결국 이런 코드를 짜게 된다fun isTablet(context: Context): Boolean { return (context.resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE}// 또는fun Context.isTablet(): Boolean = this.resources.configuration.smallestScreenWidthDp >= 600 이런 코드를 복붙하면서 한 번쯤 생각해봤을 것이..
Jetpack Compose: remember vs rememberSaveable 제대로 이해하기Jetpack Compose를 사용하다 보면 remember 와 rememberSaveable 이라는 함수를 자주 만나게 된다겉으로 보면 둘 다 상태를 저장해주는 것처럼 보이지만, 실제 동작 방식에는 중요한 차이가 존재함 1. remember란?remember 는 컴포저블 함수가 재구성(Recomposition) 될 때 상태를 유지하도록 도와준다..즉, 화면이 다시 그려져도 값이 초기화되지 않고 유지된다. @Composablefun CounterWithRemember() { var count by remember { mutableStateOf(0) } Column { Text("Cou..
adb shell dumpsys deviceidle force-idle adb shell dumpsys deviceidle force-idle: 즉시 Doze 모드로 진입adb shell dumpsys deviceidle unforce: Doze 모드 강제 해제adb shell dumpsys deviceidle step: Doze 모드의 다음 단계로 진행 ACTIVE: 일반적인 사용 상태IDLE_PENDING: Doze 모드 진입을 준비하는 상태SENSING: 센서를 통해 기기의 움직임을 감지하는 상태LOCATING: 위치 서비스를 확인하는 상태IDLE: Doze 모드 진입 상태IDLE_MAINTENANCE: Doze 모드에서 주기적으로 깨어나는 상태
fold 구현public inline fun Iterable.fold( initial: R, operation: (acc: R, T) -> R): R 초기값에서 시작해서, 컬랙션 각 요소를 차례로 처리하면서 누적된 결과 반환 예1 > 숫자 합val numbers = listOf(1, 2, 3, 4)val sum = numbers.fold(0) { acc, num -> acc + num }println(sum) // 10 예2> 문자열 연결 val words = listOf("a", "b", "c")val result = words.fold("Start: ") { acc, s -> acc + s }println(result) // Start: abc 예3> 리스트 역순으로 만들기(하지만, ..
union두 Iterable 을 합쳐서 중복 없는 set 생성 val a = listOf(1, 2, 3)val b = listOf(3, 4, 5)val result = a union bprintln(result) // [1, 2, 3, 4, 5] allhof (고차함수) parameter 조건 판단 (단, 비어있는 배열은 무조건 true 임)Iterable 내의 모든 요소가 조건을 만족하면 true, 하나라도 만족하지 않으면 false * 모든 숫자가 양수인지 판단val numbers = listOf(1, 2, 3, 4, 5)val result = numbers.all { it > 0 }println(result) // true val numbers = listOf(1, -2, 3)val resul..
distinctIterable 의 중복된 값 제거 후 list 반환 val list = listOf(1, 2, 2, 3, 3, 3, 4)val distinctList = list.distinct()println(distinctList) // 출력: [1, 2, 3, 4] Iterable 이 custom data class 인 경우 data class User(val name: String)val users = listOf( User("Alice"), User("Bob"), User("Alice"))val result = users.distinct()println(result)// 출력: [User(name=Alice), User(name=Bob)]- 해당 클래스의 hashCode, e..
- Total
- Today
- Yesterday
- C언어
- Kotlin
- mysql
- 손석희
- 점유율
- BBC 가쉽
- Asterisk
- 앵커브리핑
- git hub
- Swift
- CentOS
- php
- Phaser
- 노드
- 스위프트
- IOS
- Android
- 안드로이드
- nodejs
- GIT
- xcode
- linux
- Node
- 리눅스
- 깃헙
- C
- node.js
- 배열
- 뉴스룸
- 서버
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |