프로그래밍 30

[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..

Native(Android, iOS) 개인 개발환경 구축하기 - git commit 전에 ktlint, push된 이후에 자동빌드 하기 (ktlint, git hook, bitrise web hook)

Native(Android, iOS) 개인 개발환경 구축하기 - git commit 전에 ktlint, push된 이후에 자동빌드 하기 (ktlint, git hook, bitrise web hook) 이번 포스트에서는 git hook에 관련된 내용을 다뤄 보겠습니다. (아래 빨간색 선 부분)물론, 전문적인 DevOps를 다루시는 분들이 보신다면 너무 기초적인 내용이겠지만, 개인적으로 사이드 프로젝트를 진행하실 때는 괜찮게 써먹을 만한 자료가 될 것 같습니다.그럼 각설하고 시작하겠습니다.Git hook 이란? In computer programming, the term hooking covers a range of techniques used to alter or augment the behaviour ..

Native(Android, iOS) 개인 개발환경 구축하기 - 개요 (raspberry PI & git & bitrise & firebase & slack & telegram)

Native(Android, iOS) 개인 개발환경 구축하기 - 개요 (raspberry PI & git & bitrise & firebase & slack & telegram) 제가 구축해 사용하고 있는 개발환경을 소개합니다. (Android를 기준으로 그렸지만 iOS도 동일합니다) Open Source로 공개할 프로젝트라도 우선은 아래와 같이 Private Repository를 이용해 작업합니다. 지금은 NAS도 있지만 처음 구축을 라즈베리파이에 해서 그대로 이용 중이고, NAS는 백업 & 공유용으로 사용하고 있습니다. 위 구성을 간략하게 설명하면, 라즈베리파이를 이용해 private repository를 사용합니다. git에 commit 하기 전에 ktlint로 코드 컨벤션 검사를 합니다. git에..

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..

Private Repository를 Jitpack.io로 배포한 라이브러리 사용하기

Private Repo를 Jitpack로 배포하여 사용하는 방법은 'Github와 Jitpack.io를 이용한 Android 라이브러리 배포’와 크게 다르지 않습니다.하나 더 추가해야 하는 것은 'Github Private Repository 인 경우 Jitpack.io를 이용한 배포’에서 처럼 Auth 토큰을 받아 추가해 주는 작업만 더 해주시면 됩니다.정리해 보자면 Private Repo를 사용하는 방법은 다음과 같습니다.1. Project의 gradle.properries에 다음을 추가.authToken=AUTHENTICATION_TOKEN // jitpack에서 발급받은 AUTHENTICATION_TOKEN 1. Project root 의 build.gradle에 다음을 추가allprojects ..

반응형