일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오즈뷰어
- firebase-database
- ozd
- Android
- mosquitto
- ActivityResult-API
- Kotlin
- 워치
- AWS
- Dva
- Flavors
- NoSuchMethodError
- socket-server
- socket.io
- Java8
- hung-up
- Firebase
- OZViewer
- socket-client
- gradle
- git-push
- cloud-firestore
- google-login
- Galaxy Watch
- BottomSheetDialog
- git
- TIZEN
- mqtt
- JNI
- firebase-storage
- Today
- Total
목록Android (21)
Hyeyeon blog

1. MVI 패턴이란?MVI (Model-View-Intent) 패턴은 단방향 데이터 흐름을 기반으로 하는 아키텍처 패턴입니다.사용자의 입력(Intent)을 받아 애플리케이션의 상태(State)를 변경하고, 그 상태를 기반으로 UI(View)를 렌더링하는 구조를 갖습니다.이를 통해 복잡한 상태 관리를 단순화하고 UI의 동작을 예측 가능하게 만들어 디버깅과 유지보수를 용이하게 만듭니다. 2. Compose + MVI 1) 단방향 데이터 흐름Compose의 UI는 상태(State)에 따라 변하며 상태 변화가 있을 때마다 UI가 재구성됩니다.MVI는 단방향 데이터 흐름을 사용하여 상태를 관리하기 때문에 Compose의 흐름과 잘 맞습니다. 2) 불변 상태 관리Compose는 상태를 불변(immutable)하..

1.Firebase 설정 1-1. Firebase Console에서 프로젝트 생성 후, Authencation에서 시작하기를 클릭합니다. 프로젝트 생성 시 SHA-1은 Android Studio에서 Gradle > Tasks > android > signingReport 를 실행하면 콘솔에서 확인할 수 있습니다. 1-2. 로그인 제공 업체 목록에서 Google을 선택합니다. 1-2. 사용 설정을 활성화 시킨 후, 프로젝트 지원 이메일을 선택하고 저장을 클릭합니다. 2. Android 프로젝트 설정 2-1. build.gradle(Project) buildscript { repositories { google() } dependencies { classpath 'com.google.gms:google-se..

1. build.gradle(Project) buildscript { repositories { google() } dependencies { classpath 'com.google.gms:google-services:4.3.5' } } allprojects { repositories { google() } } 2. build.gradle(Module) apply plugin: 'com.google.gms.google-services' dependencies { implementation platform('com.google.firebase:firebase-bom:26.8.0') implementation 'com.google.firebase:firebase-storage-ktx' } 3. Firebas..
잘되던 파일 다운로드 View에서 progressBar의 퍼센트를 표시해주는 텍스트가 특정 퍼센트부터 음수로 나오기 시작해서 찾아보니 아래의 소스에서 progess * 100의 값이 int의 범위를 넘어가면 음수로 결과값을 내려준다고 한다. 0% .. 75% 76% -77% -76% 아래와 같이 Long을 사용하면 해결할 수 있다. # 기존 val percent = (progress * 100) / contentLength # 변경 val percent = (progress * 100L) / contentLength

targetSdkVersion을 26에서 29로 변경하니 아래와같은 오류가 발생했다. java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/params/BasicHttpParams; AndroidManifest.xml의 application에 아래와 같이 추가하면 해결된다.

Android Flavors 설정 시 위와 같은 오류가 발생하는 경우가 있는데, google-services.json에 해당 패키지의 client_info가 설정되지 않아서 발생한다. google-services.json에 오류가 발생한 패키지 명의 client_info를 추가하여 해결할 수 있다. { "project_info": { .. }, "client" : { "client_info": { "mobilesdk_app_id": "...", "android_client_info": { "package_name": "com.example.demo" } }, .. } }
JNI에서 사용되는 문법 정리 1. jbyte[]를 jstring로 변환 jbyte array[] = {48 ,48 , ..}; // byte array jstring result = (*env)->NewStringUTF(env, (char *) array); 2. jbyte[] 크기 구하기 const jbyte array[] = {48, 48, ..}; // byte array int size = sizeof(array); 3. char* 크기 구하기 char * text = {48, 48, ..}; // byte array int size = strlen(text); 4. char[] 크기 구하기 char arr[] = {48, 48, ..}; int size = sizeof(arr); 5. 전역 변..

1. NDK 설치 - Preferences > System Settings > Android SDK > SDK Tools > NDK 설치 2. External Tool 생성 - Preferences > Tools > External Tools > + 버튼을 클릭하여 Tool 생성 Name: ndk-build Description: .so 파일 생성 Program: ndk-build 위치 - File > SDK Location > Android NDK location 과 동일하게 작성 Arguments : (공백) Working directory: 현재 프로젝트의 jni 폴더 위치 3. src/main/jni 폴더 생성 후 하위에 각 파일 생성 (1) Android.mk LOCAL_PATH := $(cal..