일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- socket-server
- TIZEN
- Kotlin
- hung-up
- Dva
- NoSuchMethodError
- Galaxy Watch
- JNI
- Java8
- firebase-database
- mosquitto
- OZViewer
- Flavors
- 워치
- ActivityResult-API
- cloud-firestore
- git-push
- git
- BottomSheetDialog
- ozd
- google-login
- socket.io
- firebase-storage
- mqtt
- 오즈뷰어
- gradle
- AWS
- Android
- Firebase
- socket-client
- Today
- Total
목록개발/Android (58)
Hyeyeon blog
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..
Android의 Socket.io 라이브러리를 사용하여 앱과 소켓 서버 간의 통신을 구현합니다. Socket.io 라이브러리와 관련된 내용은 Android Socket.io Github에서 확인할 수 있습니다. 1. dependency 추가 build.gradle(module)에 io.socket 의존성을 추가합니다. exclude 구문을 넣지 않으면 특정 버전에서 json 패키지가 제외되었다는 warning 메세지가 발생합니다. dependency { implementation ('io.socket:socket.io-client:1.0.1') { exclude group: 'org.json', module: 'json' } } 2. 소켓 연결하기 Socket.on()을 사용하여 소켓 통신을 처리합니다...
새로운 액티비티를 띄울 때와 퍼미션을 요청할 때 사용되었던 startActivity, requestPermission을 간결하게 대체할 수 있는 ActivityResult API 입니다. 기존에는 onActivityResult에서 requestCode에 따라 케이스를 나누어 결과 값을 처리했다면 이제는 각 케이스 별로 콜백을 나누어 받아 처리하여 더욱 명시적인 코드를 작성할 수 있습니다. dependency 추가 - 최신 버전은 [링크]에서 확인하실 수 있습니다. implementation 'androidx.activity:activity-ktx:1.2.0-alpha05' startActivityForResult 대체 1. 기존 방식 (startActivityForResult 사용) val intent ..
1. Java KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); if (keyguardManager.inKeyguardRestrictedInputMode()) { // 화면 잠금 상태 } else { // 화면 잠금 해제 상태 } 2. Kotlin val keyguardManager = getSystemService(KEYGUARD_SERVICE) as KeyguardManager if (keyguardManager.inKeyguardRestrictedInputMode()) { // 화면 잠금 상태 } else { // 화면 잠금 해제 상태 }
gradle을 사용하여 Api key를 소스 코드에 그대로 노출시키지 않고 안정하게 사용하는 방법입니다. 1. gradle.properties 에 사용하려는 key 값을 정의합니다. secure_api_key = "apiKey" 2. build.gradle(Module:app)에 해당 key를 빌드 모드 별로 지정합니다. - release, debug 모드에 따라 사용할 key를 각각 입력합니다. - buildConfigField로 정의한 key는 java/kotlin 코드에서 사용할 수 있습니다. - resValue로 정의한 key는 xml에서 사용할 수 있습니다. android { buildTypes { release { buildConfigField 'String', "API_KEY_NAME", s..