프로그래밍/Android 19

[bug fix] Expected @HiltAndroidApp to have a value. Did you forget to apply the Gradle Plugin? 해결하기

[bug fix] Expected @HiltAndroidApp to have a value. Did you forget to apply the Gradle Plugin? 해결하기 Android Hilt를 적용한 뒤에 Expected @HiltAndroidApp to have a value. Did you forget to apply the Gradle Plugin? 에러가 발생할 경우대부분 아래와 같은 가이드를 한다.android { defaultConfig { javaCompileOptions { annotationProcessorOptions { arguments += ["room.schemaLocation": "$projectDir/schemas".toString()] } } } } 하지만, ROO..

Heads Up Notification를 표시하는 방법 (Android P 와 이전 버전의 차이점)

Android P에서 GCM으로 작업한 프로젝트의 Heads up notification에 문제가 있는 현상을 발견했습니다.해당 현상에 대한 보고도 해결방법도 거의 없다시피 한 상태에서 삽질을 통해 나름대로의 해결방법을 파악했고 확인된 사항을 공유합니다. 현재까지 파악된 사항은 다음과 같습니다.앱이 실행되자마자 Channel을 생성하고 등록해야 한다.Channel을 생성할때, 중요도를 IMPORTANCE_HIGH 이상으로 해야한다.Notification을 생성할때, NotificationCompat를 사용해야 한다. (이전 방법인 Notification.Builder를 사용하는 경우 Action을 추가 해야만 Heads up nofitication이 표시된다) ★ 2019.01.28 UPDATE이번에 공..

Android 4.4 에서 TLS 1.2 사용하기

보안상의 이슈로 TLS 1.0 / 1.1 을 점점 더 지원하지 않는 서버가 많아지고 있습니다.이때, TLS 1.2만을 지원하는 서버에는 Android 4.4가 접속하지 못하는 경우가 발생하고 있습니다. (SSL handshake aborted) 아래와 같이, Android 4.4도 스팩상으로는 TLS 1.2를 지원하지만 버그로 인해 SSLHandshakeException이 발생합니다.(자세한 내용은 아래 Reference를 참고해 주세요) 출처 : https://www.ssllabs.com/ssltest/그동안은 SSLSocketFactory를 상속받아 TLS1.2를 활성화한 SSLSocketFactory를 사용했지만 Chipher Suites의 종류에 따라 코딩하기가 번거로웠습니다.그런데 Google에..

Andorid 앱 푸시 알림이 꺼져 있는지 확인하는 방법

Android의 설정에서 앱별로 알림을 켜고 끌 수 있습니다.사용자가 알림을 껐을경우, 팝업을 띄워 다시 알림을 킬 수 있도록 가이드를 해야 하는 경우가 있는데요 이경우에 사용하시면 되겠습니다.Android O(오레오) 이상부터는 알림에 채널이라는 개념이 강제되면서 '앱의 채널당 알림 설정'을 확인해야 합니다.public boolean areNotificationsEnabled(Context context, String channelId) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if(channelId != null && !channelId.isEmpty()) { NotificationManager manager = (NotificationMan..

Android P 에서 Heads Up Notification 표시하는 방법.

헤드업 알림(Heads-up notification) 이란? 출처 : https://developer.android.com/guide/topics/ui/notifiers/notifications?hl=ko확실히, Heads-up notificatoin을 사용하면 이쁩니다. 사용자도 Push가 왔다는 것을 명시적으로 인지할 수 있죠.Android P 에서의 Heads-up Notification 출처 : https://www.androidpolice.com/2018/05/09/heads-notification-animations-android-p-dp2-pretty-snazzy/Android P 에서는 에니메이션이 좀 더 들어갔습니다.하지만, 기존 코드로는 Android P에서 Heads-up notifi..

Firebase Cloud Messaging(FCM) 제대로 알고 사용하자!

FCM 메세지는 아래와 같이 3가지 종류으로 나뉩니다. 출처 : https://firebase.google.com/docs/cloud-messaging/android/receive?hl=ko알림 (Notification messages)앱이 종료되었거나 백그라운드에 있을때 별도의 작업없이 작업표시줄 (Notification 영역)에 알림이 표시됩니다. 데이터 (Data messages)기존의 GCM과 동일한 방식 입니다. 모두 (Messages containing both notification and data payloads)위의 두가지 정보가 모두 들어간 경우 입니다. 이 경우 Notification messages와 비슷하게 처리됩니다.예전 GCM방식의 경우 작업표시줄에 알림을 표시하기 위해서는 프..

크롬으로 Android Webview의 웹페이지 디버깅 하기 (하이브리드앱 or 웹앱)

하이브리드나 웹앱은 Native에서 Webview를 사용하여 웹형식의 컨텐츠를 표시하고 동작하는 앱을 말합니다.( 참고 : '위키백과 - 웹 애플리케이션’, '나무위키 - 하이브리드 앱’ )이번 포스팅은 하이브리드 앱 혹은 웹 앱에서 Webview안에 표시되는 웹 컨텐츠의 디버깅 방법을 다룹니다. 디버깅용 WebView 구성애플리케이션 내에서 WebView 디버깅이 활성화되어 있어야 합니다. WebView 디버깅을 활성화하려면 WebView 클래스에서 정적 메서드 setWebContentsDebuggingEnabled를 호출합니다. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled..

jarsigner/apksigner로 apk signing하기 (콘솔에서 Signing 하기)

App을 만든뒤에 스토어에 배포하기 위해서는 Signing 작업이 필요합니다Signing작업시 Keystore 파일이 필요한데요, 배포하기 위한 Keystore파일을 가지고 있지 않고 다른 곳에서 Signing을 하는 경우에 아래와 같은 방법을 사용하게 됩니다.우선은 Keystore파일이 없으므로, apk를 만들때 unsigned apk를 만듭니다.이때, 만들어진 unsigned apk를 Signing 하는 곳에 전달하고, 전달받은 곳에서 jarsigner나 apksigner를 이용해서 Signing 작업을 진행합니다. jarsigner로 apk sign시 Android 4.4에서 설치되지 않는 현상이 있는데, 이는 Android 4.4 하위버전이 JDK7이전 Java 기반으로 설계되어 암호화 방식이 틀..

RxAndroid로 리액티브 앱 만들기 #4

RxAndroid로 리액티브 앱 만들기 #1 RxAndroid로 리액티브 앱 만들기 #2 RxAndroid로 리액티브 앱 만들기 #3 RxAndroid로 리액티브 앱 만들기 #4 출처 : https://realm.io/kr/news/rxandroid-4/ RxAndroid 시리즈의 마지막 글 입니다. 이번 시간에는 스케쥴러를 이용하는 법과 Retrofit, Realm 등의 다른 라이브러리와 함께 쓰일 때 어떻게 쓰일 수 있을지를 살펴보겠습니다.스케쥴러스케쥴러는 해당 옵저버블, 오퍼레이터, 서브스크라이버를 어떤 스레드에서 수행할지 결정하는 것입니다. 스케줄러가 어떤 부분을 맞게 되는지는 subscribeOn과 observeOn으로 지정합니다. 아래의 그림을 함께 봅시다. 이미치 출처 : http://rea..

RxAndroid로 리액티브 앱 만들기 #3

RxAndroid로 리액티브 앱 만들기 #1 RxAndroid로 리액티브 앱 만들기 #2 RxAndroid로 리액티브 앱 만들기 #3 RxAndroid로 리액티브 앱 만들기 #4 출처 : https://realm.io/kr/news/rxandroid-3/ RxAndroid와 RxBinding 버전 변경 내역에 대한 피드백을 주신 Park ChulWoo님에게 감사드립니다.사용자 인터페이스는 한 쪽을 움직이면 다른 한 곳이 바뀌고, 다른 한 곳을 바꾸면 또 다른 곳이 바뀌는 복잡한 상호작용의 연속입니다. RxAndroid가 제공하는 다양한 옵저버블과 오퍼레이터 등을 합성하여 사용자 인터페이스를 효과적으로 구조화할 수 있습니다. 다양한 옵저버블과 오퍼레이터를 하나씩 살펴봅시다.클릭의 추상화안드로이드에서 필수적..

반응형