음... flutter에서 android app의 firebase SHA-1을 연결해야 하는데 안드로이드 스튜디오도 에러 투성이에... 겨우 열었더니, 이번에는 Task 'prepareKotlinBuildScriptModel' not found in project ':app' 에러가 뜨면서 Gradle build가 안된다.. 요 놈 때문에 거의 이틀 정도를 날려 먹었으니... 나중을 위해 기록하려고 한다. Error: Task 'prepareKotlinBuildScriptModel' not found in project ':app'. 스오플에서 누가 Kotlin plug-in을 제거하라고 해서... disable 했다가 문제만 더 키웠다...ㅋㅋ 사실 build.gradle 맨 마지막 줄에 tasks.r..
Android 는 단말의 자체 데이터베이스로 SQLite를 사용하고 있으며, 이를 그대로 어플에서 사용이 가능하다. 이전에 포스팅했던 내용처럼 JDBC와 동일하게 POJO Style로 쿼리문을 작성하고, excute해도 문제가 없지만 개발하고 있는 어플의 특성상 데이터 저장 주기가 빈번하고, 데이터 수도 꽤나 많을 것으로 예상이 되어서 JPA와 같은 ORM 표준이 혹시 있나? 하는 마음에 찾아봤다. Room은 Android에서 사용을 적극 권장하는 프레임워크로 ORM이기 때문에 아래와 같은 장점을 가지고 있다. SQL 쿼리의 컴파일 시간 확인 반복적이고 오류가 발생하기 쉬운 상용구 코드를 최소화하는 편의 주석 간소화된 데이터베이스 이전 경로 보다 정확한 레퍼런스와 자세한 구현 방법은 여기를 참조하자. 위..
드디어 APK를 추출하고 내 폰에 설치를 해보려고 했는데, 자꾸만 설치가 안되고 에러가 뜨길래 도대체 뭐가 문제인지 스마트폰을 직접 연결하여 돌려보니, 진짜 뭐가 문제인 지 감도 안잡히는 에러가 띡 떴다. 에러 내용: Installation failed due to: 'Failed to commit install session 1502073924 with command cmd package install-commit 1502073924. Error: -127: Package com.example.diary attempting to declare permission com.example.diary.andpermission.bridge in group com.example.diary.andpermission..
예제 앱을 전부 구성하고 APK 빌드를 하려고 했는데, key 생성도 해야하고 war 파일보다 설정해줘야 할 게 많은 거 같아서 정리를 좀 하려고 한다. 우선 빌드할 프로젝트에서 Build>Generate Signed Bundle/APK... 를 클릭하여 빌드 창을 연다. key store 는 제작한 앱에 넣을 서명 같은 개념으로 이 파일이 있으므로써 해당 어플은 구글 플레이 스토어에 APK를 올릴 수 있게 된다. Create New 를 클릭하여 새 key store를 생성하고 서명 정보를 입력해준다. 이제 Next 를 누르고 해당 서명이 release인 지 debug 버전인 지 체크 후에 key store를 등록한다. 이후 빌드를 진행하면 아래 경로에 APK 파일이 생성된 것을 확인할 수 있다.
Multi Window는 단말 화면에 여러 개의 액티비티가 보이도록 지원하는 기능이다. 이 기능은 사용자가 필요에 따라 만드는 기능이지만 앱에서 별도의 처리를 해주어야 하는 경우도 있기 때문에 따로 다중 창을 지원하는 액티비티 메서드를 사용하는 경우가 많다. 다중 창으로 어플을 열었을 때 화면 레이아웃을 이에 맞게 제어할 수 있는 메서드는 대표적으로 다음과 같다. public boolean isInMultiWindowMode(): 현재 다중 창 모드에 있는 지 체크 public boolean isInPictureInPictureMode(): 현재 PIP 모드에 있는 지 확인 public void onMultiWindowModeChanged(boolean isInMultiWindowMode, Configu..
단말의 인터넷 연결 상태를 확인하고, 연결이 되어 있지 않다면 어떤 에러 메시지나 엑티비티를 띄우기 위해서는 ConectivityService를 활용하면 된다. 딱히 어려운 건 아니니 바로 확인해보자. ◎MainActivity.java package com.example.samplesensor; import android.content.Context; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.os.Bundle; import android.view.View; import android.widget.Button; import and..
시스템 서비스는 단말이 켜졌을 때 자동으로 실행되어 백그라운드에서 동작하는 서비스이다. 이런 시스템 서비스 중에 지금까지 인플레이션을 위한 시스템 서비스나 센서을 위한 시스템 서비스는 공부를 하며 사용을 했었다. 이외에도 안드로이드는 다양한 시스템 서비스를 가지고 있는데, 그 중 ActivityManager, PackageManager, AlarmManager를 사용해보려고 한다. ActivityManager: 액티비티나 서비스를 관리하는 시스템 서비스로 앱의 실행 상태를 알 수 있도록 한다. PackageManager: 앱의 설치에 대한 정보를 알 수 있도록 한다. AlarmManager: 일정 시간에 알림을 받을 수 있도록 시스템에 등록해주는 역할 바로 이 시스템 서비스들을 사용한 간단한 예제를 확인..
스마트폰이 가지고 있는 다양한 센서의 정보들은 SensorManager 라는 시스템 서비스를 통해 모두 같은 방식으로 사용할 수 있다. 다음은 안드로이드에서 지원하는 대표적인 센서들이다. 센서 이름 상수 설명 Accelerometer TYPE_ACCELEROMETER 가속도 감지, 외부의 충격량과 방향 감지 (단위: m/s^2)(중력 + 선형 가속) Gyroscrope TYPE_GYROSCOPE 회전 정보 감지, 다양한 축을 따른 회전각 감지 Gravity TYPE_GRAVITY 축의 방향과 중력 감지 Light TYPE_LIGHT 빛의 세기 감지 Linear Acceleration TYPE_LINEAR_ACCELERATION 각 축에 따른 가속도를 감지하는 3차원 벡터 Proximity TYPE_PRO..
푸시 서비스는 메시지를 구글 클라우드 서ㅓ에서 구글 Play 스토어가 설치된 단말기로 보내주는 방식이다. 이 푸시 서비스를 단말에서 연결을 유지하고 있기 때문에 사용하는 각각은 앱의 구글 클라우드 서버에서 직접 연결하지 않는다. 만, 이 구글 서비스를 이용하지 않고 직접 구현하려면 단말에서 서버로 연결을 유지하며ㅓ 동시에 연결을 지속적으로 유지해야 한다. 이는 polling 매커니즘을 구현하여 일정 시간 간격으로 연결이 끊어졌는 지 확인해야 하는데, 이러한 매커니즘은 휴대폰의 리소스를 많이 잡아 먹는 문제가 있다. 다음은 안드로이드에서 제공하는 FCM 푸시 메시지 처리 과정을 순서대로 나타낸 것이다. 단말은 자신을 클라우드 서버에 등록하고 서버로부터 등록 ID 를 받는다. 등록 ID는 메시지 전송을 담당..
상단 알림은 Notification 객체를 이용하여 띄울 수 있으며, 이 객체는 NotificationCompat.Builder 객체를 호출하여 참조할 수 있다. 간단하게 버튼을 클릭하면 상단에 알림을 띄우는 예제를 확인해보자. ◎MainActivity.java package com.example.samplenoti; import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.os.Build; import android.v..
- await
- 인천 구월동 맛집
- 이탈리안 레스토랑
- 정보보안기사 #실기 #정리
- redux
- 맛집
- Async
- redux-thunk
- react
- 파니노구스토
- AsyncStorage
- react-native
- 인천 구월동 이탈리안 맛집
- Promise
- javascript
- Total
- Today
- Yesterday