본문 바로가기
반응형

안드로이드 개발103

LiveData와 Realm 그리고 ViewModel을 같이 이용하는 방법 Android Architecture 라이브러리가 나오고 LiveData의 등장하면서 Realm과 같이 하면, Reactive하면서도 Lifecycle에 대응가능하게 되었는데요. 오늘은 그 방법에 대해서 정리해 보고자 합니다. 1. Realm과 LiveData를 같이 사용하는 방법 이 둘을 같이 사용하기 위해서는, Realm의 결과 값을 listen하는 listener가 붙어있는 Wrapper클래스를 생성해서, listerner에서 그 결과값을 받으면, LiveData타입의 데이터를 set해주면 됩니다. 그럼 먼저 Realm을 initialize하는 것 부터 보도록 하겠습니다. 2. Realm initialize 먼저 아래와 같이 Application클래스에서 Realm을 initialize해 주었습니다.. 2019. 10. 14.
ViewModel에서 Coroutine을 이용하는 방법 #ViewModel Scope Coroutine을 안드로이드에서 사용한다고 했을 때, ViewModel에서 사용하면 매우 효율적인데요. 오늘은 Coroutine을 ViewModel에서 사용하는 방법에 대해서 정리해 보도록 하겠습니다. Coroutine에 관해 기본적인 내용들은 아래 링크를 참조해 주세요. >> Kotlin Coroutine에 대한 정리 1. ViewModel 과 Coroutine Coroutine도 더이상 작업이 필요하지 않거나 할 때, cancel을 적절히 해주어야 하는데요. 이럴 때 ViewModel과 연계되어 있으면, ViewModel의 라이프사이클에 맞추어, 쉽게 Coroutine도 관리할 수 있습니다. 예전 Coroutine에 관한 글에서도 정리하였지만, Coroutine의 관리 단위는 Scope입니다. Sc.. 2019. 10. 10.
Kotlin Coroutine에 대한 정리 이제 안드로이드 개발을 하면서, RxJava나 AsyncTask이외에도 다른 Thread로 작업을 할 수 있는 방법이 생겼는데요. 바로 Kotlin의 Coroutine입니다. Coroutine은 RxJava만큼 다양한 Operator를 제공해주지는 않지만, 심플하다는 면에서는 좀 더 좋은면이 있는 것 같습니다. 오늘은 이 Coroutine에 대해서 정리해 보도록 하겠습니다. 1. 라이브러리 implement 가장 먼저 해야할 것은 역시 Library설정인데요. Kotlin의 버전을 최신 버전으로 하구요. 아래와 같이 app레벨의 build.gradle에서 implement해 줍니다. 마치 rxjava와 rxandroid를 같이 implement했듯이, coroutine도 core와 android 라이브러.. 2019. 10. 9.
Kotlin에서 활용하는 Generic Java에서와 마찬가지로 Kotlin도 Genenric을 지원하는데요. 오늘은 Kotlin에서의 Generic에 대해 정리해 보겠습니다. 1. Class에서의 Generic Generic이라고 하는 것은, class 혹은 함수를 사용하는 시점에, class 또는 함수에서 사용할 타입을 지정할 수 있도록 하는 것 인데요. 코드를 보면서 알아보도록 하겠습니다. 아래 코드를 보면, 먼저 클래스이름 다음에 라는 타입을 정해서 붙여 주었는데요. 여기가 Generic타입을 정하는 위치입니다. Return값의 타입을 나타내는 곳과는 다른 곳 이지요. 클래스를 정의한 다음, Person클래스를 객체화 String혹은 Int로 객체화 하였는데요. 처음에는 외부에서 String이라는 타입을 정해 주고 "goodBoy"라는.. 2019. 10. 6.
APK 빌드 시 Lint found fatal errors 에러가 발생할 경우의 대응 테스트가 끝나고 Release빌드를 만들기 위해서, Signed APK를 빌드하다가 Lint found fatal errors를 만나는 경우가 있습니다. 오늘 글에서는 이 에러가 발생하는 경우의 대응 방법에 대해서 정리해 보도록 하겠습니다. 1. Lint Found Fatal Error 안드로이드 스튜디오는 Lint라는 코드 스캔 도구를 이용해서, 빌드시에 코드의 문제들을 찾아내 주는데요. 이 때 Fatal Error가 나는 경우가 있습니다. 이 때는 build리포트를 통해서 상세하게 해당내용을 알려주기 때문에 대응하기도 쉬운편인데요. 한가지 문제는 이 에러가 발생한 원인에 대한 Report를 어디서 찾느냐 인데요. 그것은 아래에서 보도록 하겠습니다. 2. Build Report 의 위치 lint가 찾아.. 2019. 10. 6.
Repository 패턴에 대해서 정리해 보겠습니다 MVVM 혹은 MVP에 대해서 알고 계신다면 Repository에 대해서 알고 계실텐데요. 오늘은 이 Repository패턴에 대해서 정리해 보겠습니다. 1. Repository 패턴과 MVVM Repository의 역할을 이해하기 위해서, MVVM에서의 Repository의 역할을 보며 정리해 보겠습니다. 아래의 표는 구글 공식사이트에 존재하는 도표인데요. 이것을 보면 Repository가 ViewModel과 Room이라고 하는 DB나 Retrofit사이에 있습니다. ViewModel이 Activity나 Fragment에 보여주려고 하는 데이터를 Repository에 요청하면 Repository가 요청한 데이터를 받아서 보내 준다는 것 입니다. 도표에서 느낄 수 있듯이 분업화가 매우 확실합니다. 데이터.. 2019. 10. 5.
Kotlin을 배워보자 part5 # CompanionObject Object Expression and Declaration 지난 part4에서는 Data Class, Nested Class와 Inner클래스에 대해서 정리해 보았습니다. 이전 글은 아래링크를 클릭해주세요 >> Kotlin을 배워보자 part4 (Data Class, Nested and Inner Class) 이번 part5에서는 익명 inner class에 사용되는 Object Expression, Singleton패턴을 위한 Object Declaration 그리고 Java의 Static 함수를 대신하기 위해 사용하는 Companion Object 에 대해 정리해 보겠습니다. 1. Object Expression and Declaration 1-1. Object Expression Object Expression은 특정타입으로부터 상속받는 Anonymous .. 2019. 9. 28.
Kotlin을 배워보자 part4 (Data Class, Nested and Inner Class) 지난 part3에서는 Class와 생성자, 프로퍼티 그리고 상속 등에 대해서 정리해 보았는데요. 이번 글에서는 Data Class, Nested Class와 Inner클래스에 대해서 알아보도록 하겠습니다. 이전 글은 아래 링크를 참조해 주시면 됩니다. >> Kotlin을 배워보자 part3 (Class, Constructor, 상속) 1. Data Class 코틀린에서는 데이터만 보관하는 용도로 쓰는 클래스를 제공해 주고 있는데요. 선언하는 방법도 매우 간단한데요. data 키워드를 class 앞에 붙여주고 기본 생성자에서 1개 이상의 property를 선언해 주기만 하면 됩니다. 1-1. data클래스의 특징 data클래스임을 명시적으로 표시하면, 기본적으로 아래의 함수들을 자동으로 생성해 줍니다. 꽤.. 2019. 9. 27.
Kotlin을 배워보자 part3 (Class, Constructor, 상속) 벌써 kotlin에 대해 정리한 글의 part3가 되었네요. 이전 part2에서는 if, when, for, array, list, ranges에 대해서 정리해 보았는데요. 이번 글에서는 class와 생성자 그리고 상속에 대해서 정리해 보도록 하겠습니다. 혹시 이전글을 보시지 못한 분들은 아래 링크를 참조해 주세요. >> Kotlin을 배워보자 part2(if, when, for, while, array, list, ranges) 1. Class와 생성자 코틀린에서 클래스를 만들기 위해서 class라는 키워드를 사용하구요. 클래스의 객체를 생성할 때 Java에서 쓰던 new연산자는 사용하지 않습니다. 아래 코드에서는 자동차 클래스를 이용해 차 객체를 만들어 준 다음, 자동차를 생성할 때 같이 생성된 Ti.. 2019. 9. 26.
Kotlin을 배워보자 part1(Basic Types, Function, Null, 타입 변환, Lambda, 고차함수, Elvis, inline) 2017년 5월에 공식적으로 안드로이드 언어로 채택된 Kotlin은, Java의 virtual Machine인 JVM에서 동작하는 컴파일 언어입니다. 2019 IO를 보면 Kotlin First, Kotlin/Everywhere라는 단어가 보입니다. 구글의 안드로이드 공식문서에서도 Java보다 kotlin 예제코드를 먼저 보여주기 시작 했구요. 점점 많은 개발자들이 안드로이드의 실제 프로덕트에 적용하며 추천하고 있기도 합니다. 이러한 Kotlin에 대해서, 이번 글을 시작으로 5part에 걸쳐 정리해 보겠습니다. 그럼 가장 먼저 변수선언에 대해서 정리해 보도록 하겠습니다. 1. 변수 선언을 위한 val과 var 변수 혹은 상수를 선언하는 방법에 대해서 알아보도록 할텐데요. Java에서는 상수의 경우 fi.. 2019. 9. 24.
Android Checkbox에 Custom 이미지 사용하기 안드로이드 UI작업을 하다보면, Checkbox를 Custom 이미지를 사용해야할 경우가 정말 많습니다. 오늘은 어떻게 해야하는지 정리해 보도록 하겠습니다. 1. Checkbox의 HierArchy Custom 이미지의 구현에 대해 보기 전에, CheckBox의 HierArchy를 보도록 하겠습니다. 아래 이미지에서, Button 클래스를 상속받고 있는 부분이 보이시나요? 커스텀하게 CheckBox를 사용하기 위해서는 이 Button 속성을 이용하는 것이 핵심인데요. CheckBox가 Button을 상속하기 때문에 가능한 것 입니다. 핵심을 알았으니, 구현만 해주면 되겠네요. 구현에 필요한 Selector부터 만들어 보겠습니다. 2. Selector 생성 checkbox의 핵심은 checked의 stat.. 2019. 9. 18.
Mp3파일 외부 저장소에서 가져와 재생하기 #안드로이드 유저가 가지고 있는 MP3파일을 앱 내부에 저장해 두고 필요할 때 재생할 수 있도록 할 경우가 있는데요. 오늘은 외부 저장소에 있는 MP3파일들 중 하나를 선택한 다음,그 파일을 내부 저장소로 가져와 파일을 재생하는 방법을,정리하도록 하겠습니다.참고로 이글은 2024년도에 수정되어 API34(Android13)에 대응되도록 수정하였습니다. 이 방법에 대해서 정리하기 전에,저장소에 대한 개념을 가볍게 정리해 보고 가려고 합니다.이에 대한 개념이 필요하시지 않은 분들은 바로 3번으로 넘어가 주세요. 1. 저장소(Storage)안드로이드의 Storage의 개념에서 크게 두가지가 있는데요.바로 내부저장소(Internal Storage)와 외부 저장소(External Storage)입니다.더 세부적으로 구분할 수.. 2019. 9. 7.
ADB(Android Debug Bridge)를 맥 OS에서 사용하는 방법 맥에서 개발하면서 ADB를 사용하려고 하는데, 어떻게 접근하면 되는지 막막할 수 있는데요. 오늘은 손쉽게 adb를 설치하고 사용하는 방법에 대해서 정리해 보도록 하겠습니다. 1. ADB(Android Debug Bridge) Android 디버그 브리지는 앱을 개발하면서 연결된 휴대폰이나 에뮬레이터와 통신할 수 있는 유용한 도구입니다. 예를 들면 저 같은 경우 알람앱을 만들고 얼마나 많은 알람이 휴대폰에 등록되었는지 등을 확인하는데 사용하였는데요. 이에도 활용용도가 매우 많아서 디버깅 하는데 많은 도움이 됩니다. 2. ADB가 설치된 위치 ADB는 어디에 있는걸까요? adb 도구는 android_sdk/platform-tools/ 폴더에 위치하고 있습니다. 그럼 android_sdk폴더는 어디에 위치해 .. 2019. 9. 1.
DialogFragment 사이즈 조정 및 타이틀 제거 개발을 하면서 DialogFragment를 좀 더 커스텀하게 사용해야 할 때가 있는데요. 그 중에서도 사이즈 및 타이틀이 있고 없는 부분은 디자인상 중요한 부분인데요. 오늘은 어떻게 하면 이러한 부분을 수정할 수 있는지 정리해 보도록 하겟습니다. 참고로 Dialog Fragment의 기본적인 부분은 아래링크를 참조해 주세요. FragmentDialog 로 대화상자(팝업) 구현하기 1. DialogFragment 사이즈 조정하기 DialogFragment의 가로세로 사이즈를 조정하기 위해서는, onResume에서 window객체를 얻어와서 setLayout메소드를 사용해 주면 되는데요. onResume에서 아래와 같이 해 주면 됩니다. 2. DialogFragment 타이틀 제거 상단 타이틀을 제거하는 방.. 2019. 8. 26.
Kotlin(코틀린)의 Sequence에 대해 알아보자 Kotlin에서 List를 사용하는 경우 map이나 filter등의 메소드를 이용해서 원하는 결과를 쉽게 얻을 수 있는데요. 퍼포먼스 측면에서 한가지 생각해야 할 점이 있습니다. 함수를 거칠 때 마다, 매번 list가 연산되어서 반환되기 때문에, list아이템이 매우 많을 경우, 메소드를 거칠 수록 처리에 대한 부담이 커지게 되는 것인데요. 그런데, sequence의 경우는 lazy하게 최종 메소드가 실행될 때 전체가 실행되어 집니다. 따라서 list에서 iterator가 하듯, 매번 list를 반환에서 넘겨주지 않아도 되므로, 부하가 적어지게 되는 것인데요. 오늘은 이 Sequence에 대해서 정리해 보도록 하겠습니다. 1. Sequence Sequence를 생성하기 위해서는 아래와 같은 방법을 사용하.. 2019. 8. 16.
BuildConfig 와 ProductFlavor 정리 # BuildTypes BuildConfigField 오늘은 BuildConfig와 ProductFlavor에 대해서 정리해 보고자 하는데요. 이 두가지 클래스들은 각각 빌드별로 다른 값을 가지거나, 기본앱과는 다른 타입의 앱을 출시해서 사용하도록 하는데 사용할 수 있는데요. 먼저 빌드별로 다른 값을 가지도록 할 때 사용하는, buildConfig클래스의 buildConfigField에 대해서 알아보도록 하겠습니다. 1. buildConfig 클래스 1-1. BuildConfigField 구현 빌드가 될 때, 안드로이드의 빌드 시스템인 Gradle은 BuildConfig클래스를 생성합니다. 이는 현재 빌드에 대한 정보를 확인할 수 있도록 하기 위함인데요. BuildConfig클래스의 buildConfigField()메소드를 이용하면, 인자에 원하는 값을 넣.. 2019. 8. 13.
멀티덱스 적용없이 디버그를 위한 Proguard(프로가드) 설정 방법 안드로이드의 여러 라이브러리를 사용하다보면, 단순히 디버깅을 위해 앱을 빌드할 때 조차도, 메소드 카운트가 6.5K를 넘기는 경우가 발생하게 되는데요. 이때 안드로이드 스튜디오가 알려주는데로 무심코 MultiDex를 사용하는 것 보다는, 디버깅할 때에도 사용하지 않는 메소드를 줄여주는 minify과정을 통해서 Multidex를 사용하지 않도록 해야하는 것을 먼저 시도해 보아야 합니다. 그렇게 해도 해결이 않될정도로 앱이 거대하고 큰 규모라면 Multidex를 사용해야 할 테구요. 문제는 minify(리소스를 축소)를 하는 과정에서 난독화도 같이 하게 되면서 테스트를 위한 빌드를 하는데도 엄청난 시간이 걸릴 수 있는 것 인데요. 이는 개발동기 저하와 생산성하락으로 이어질 테구요. 오늘은 이를 어떻게 해결해.. 2019. 7. 26.
AndroidX 로 SupportLibrary 마이그레이션(Migration) 하기 기존의 SupportLibrary를 사용하시는 분들에게는AndroidX로 마이그레이션 해야한다는 사실은 정말 피곤한 일이 아닐 수 없습니다.하지만, 구글의 SupportLibrary Revision을 보면 이젠 더이상 업그레이드를 하지 않는다고 명시되어 있기도 하고,계속 SupportLibrary를 고수할 수 없는일이지요. 오늘은 마이그레이션 하는 과정에 대해서 정리해보겠습니다. 1. AndroidX로 변경하기 참고로 AndroidX의 변경사항에 대해서는 아래 링크를 참고해 볼 수 있습니다.>> https://developer.android.com/jetpack/androidx/releases/archive/androidx 2019. 7. 15.
업그레이드 된 안드로이드 개발 이미지 추가 방법 #Resource Manager 안드로이드 개발하면서 은근히 피곤한 것 하면 빼놓을 수 없는 것이 바로 이미지 추가하는 것입니다. 서로 다른 해상도마다 이미지를 추가해 주어야 하는데요. 그래서 벡터이미지를 사용하기도 하는데, 개인적으로는 호환성문제도 있고 속도 문제가 발생하는 경우도 있어서 다시 이미지를 사용하는 경우도 있었습니다. 그런데 안드로이드 스튜디오가 업그레이드 되면서, 너무도 쉽게 해상도별로 다른 이미지들을 한번에 추가하는 방법이 생겼는데요. 오늘은 이 방법에 대해서 알아보도록 하겠습니다. 참고로 이 글은 최신버전의 업그레이드 안드로이드 스튜디오에만 적용가능하므로, 혹시 업그레이드가 않되어있는 상태라면 하시기를 추천드립니다. 1. Resource Manager 안드로이드 스튜디오가 업그레이드 되면서 Resource Manag.. 2019. 7. 14.
PhoneStateListener 로 안드로이드폰 전화 상태 알아내기 #통화중 음악재생 알람기능이 들어간 앱을 만들경우에, 전화를 하고 있다면,알람소리를 잠시 멈추었다가 통화가 끝나면 다시 재생해주는 등의 처리를 해주어야 합니다.이러한 처리를 하기 위해서는 사용자가 전화를 받고 있다는 것을 알아야 하는데요.이를 위해서 TelephonyManager와 PhoneStateListener가 필요한 데요.오늘은 이들을 이용해서 대응하는 방법에 대해서 정리해 보도록 하겠습니다. 1. TelephonyManager 안드로이드 폰의 전화서비스에 대한 정보에 접근하기 위해서는 TelephonyManager객체가 필요한데요.이를 위해서 getSystemService메소드를 통해서 객체의 레퍼런스를 얻어옵니다. 그리고 전화와 관련된 정보를 얻을 때는 Manifest에서 permission을 얻는다고 명시해주.. 2019. 7. 13.
Android 버튼 UI에 Ripple효과 넣기 안드로이드에 UI작업을 하다보면, 머티리얼 디자인에서 흔히 볼 수 있는, 버튼을 누르면 퍼지는 Ripple효과가 요구되는 경우가 있습니다. 워낙 사용자들도 저 효과를 많이 보다 보니, 그냥 컬러만 바뀌는 경우는, 밋밋하게 생각하는 경우가 많고 디자이너들도 요구하는 부분이기도 하지요. 백그라운드에 특정한 이미지를 쓰지 않는 투명버튼이나, 이미지버튼의 경우 상대적으로 이 효과를 적용하기 쉬운데, 배경색이나 이미지가 적용된 경우는 이 효과를 적용하는데 있어서 하위호환성문제가 발생합니다. 우선은 투명버튼의 경우부터, 어떻게 하면 리플 효과를 적용할 수 있는지 정리해 보도록 하겠습니다. 1. Button UI 아래와 같이 배경이 없는 투명 버튼의 경우를 먼저 보도록 하겠습니다. 이 버튼을 누르면 약간 연한 톤의 .. 2019. 6. 16.
Notification Channel (알림 채널) 생성해서 적용하는 방법 안드로이드 Oreo (API26 , Android8.0) 버전부터는 노티채널을 만들어 주어야 하는데요. 채널을 만드는 것부터 하나씩 보도록 하겠습니다. 1. Notification Channel 노티피케이션 채널은 노티를 할 때마다 만들어야 하는 것은 아니구요. 앱에서 한번만 생성하면 되므로, android.app.Application을 상속받은 Applicaiton.class에서 하도록 하였습니다. 코드를 보면서 정리해 보겠습니다. NotificationChannel을 생성할 때는 다음의 사항들을 인자로 넣어주어야 합니다. id: 임의의 채널 id name: 알람 이름 importance level: 알람의 중요도 id와 이름은 임의의 문자로 정해주면 되지만, importance level은 정해진 상.. 2019. 6. 12.
부팅 혹은 재 부팅시 실행되는 Android Service 개발 폰이 부팅 혹은 재부팅될 때 실행되어야 하는 경우가 있습니다. 예를 들면, 알람앱 같은 경우가 될 텐데요. 알람을 설정하고 나서, 폰이 재부팅된 이후에도, 실행되도록 부팅시 DB를 조회해서 알람을 다시 등록해야 하겠습니다. 오늘은 이 방법에 대해서 정리해 보도록 하겠습니다. 1. 부팅 시기 알림받기 부팅이 되었을 때 앱이 안드로이드로부터 알림을 받아야 할 텐데요. 이를 위해서는 Receiver가 필요합니다. 그런데 Receiver를 작성하기 전에, 권한을 하나 추가해야 하는데요. android.permission.RECEIVE_BOOT_COMPLETED 권한을 AndroidManifest.xml에 추가해 주어야 합니다. 2. Receiver 추가하기 RebootReceiver를 생성한 다음, Androi.. 2019. 5. 26.
Firebase의 CrashLytics를 Slack과 연동해서 알림받기 Crash가 발생할 때 가장 중요한 것은 빠르게 알림을 받는 것인데요. 이메일을 통해서도 알람을 받지만, Slack과 같은 메신저를 통해서 하나의 채널에서만 모아서 받는 다면, 관리하기도 더욱 좋아질텐데요. 오늘은 이 방법에 대해서 정리해 보도록 하겠습니다. 참고로 CrashLytics가 Fabric에서 Firebase로 이사가게 됩니다. 2020년초까지는 계속 Fabric으로 지원을 한다고 하지만, 지금부터 만드는 앱에서는 Firebase기준으로 하는 것이 좋겠지요. 이 글도, Firebase의 CrashLytics를 Slack과 연동하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Firebase 콘솔에서 설정 Firebase의 콘솔에서 좌측상단의 설정> 통합에 들어가면 아래와 같이 Slack과 연.. 2019. 5. 23.
Android 에서 Vector(벡터) 이미지 사용하기 안드로이드 개발하는데 있어서 Vector를 사용하는 것은 너무나 편리합니다.hdpi, xhdpi, xxhdpi, xxxhdpi등 이미지를 몇개나 만들어야 했었는데,벡터파일 하나면 되니 소스관리도 편하고,이미지를 만들어서 주는 디자이너들도 좋아합니다.sketch같은 프로그램으로 export시켜 사용하면 이보다 더 편리한 것은 없죠. supportLibrary에서 벡터사용을 지원하기 때문에, 사용하는 방법도 쉬운데요.아쉽게도 안드로이드 개발을 하면서 항상 만나게 되는 하위버전 호환문제가 있습니다.경우에 따라서, API21미만에서는 리소스를 못찾아서 nullPointerException을 발생시킬 수 있어요. 그럼 어떻게 벡터그래픽을 사용하고, API21미만에서는 어떻게 대응해야 하는지 정리해 보도록 하겠습니.. 2019. 1. 18.
FragmentDialog 로 대화상자(팝업) 구현하기 안드로이드에서 유저에게 특정한 이벤트를 소개하거나 경고를 하는데 있어서,AlertDialog를 사용하는 경우도 있지만, FragmentDialog도 많이 사용하는데요. 오늘은 이 FramentDialog를 사용하여서 대화상자를 구현하는 방법에 대해서 정리해 보겠습니다. 1. Dialog XML 정의 먼저 보여줄 Dialog의 UI를 XML을 정의하겠습니다.간단하게 이미지와 텍스트 그리고, 확인 버튼을 보여주는 UI를 생성할께요. 2. Fragment Java Code 이제 위의 레이아웃을 inflate할 fragment의 java code를 구현해 보겠습니다.(참고로 DialogFragment는 v4 support library로부터 import 해왔습니다.)onCreateView에서 아래와 같이 버튼을.. 2019. 1. 8.
안드로이드 애드몹(Admob)광고배너 무효 혹은 부정 클릭 방지하기 앱을 처음 만들고, admob을 붙여서 광고를 넣고 출시하는 과정은 너무나 즐겁습니다.특히 자신이 만든 앱에 광고가 들어가 있는 것이 그런데요.하지만, 자칫 잘못해 QA나 사용성테스트 등의 과정에서 실수하여광고를 눌러버리게 되는 경우, 구글에 의해서 더이상 광고를 붙일수 없게되거나 광고가 정지 될 수 있습니다.항상 걸린다고 보증할 수는 없지만, 처음 출시하여서 사용자가 적은경우,더더욱 실수에 대해서 민감하게 됩니다. 이는 혼자서 앱을 관리하는 개발자들에게는 정말 치명적인 일이 아닐 수 없는데요.오늘은 이러한 일을 미연에 방지하는 방법에 대해서 정리하도록 하겠습니다. 참고로 Admob광고를 구현하는 방법은 아래링크를 참조해주세요>>Admob으로 앱에 광고 달기 2018. 9. 17.
안드로이드 스튜디오3에서 Gradle Sync 이슈 해결하기 안드로이드 스튜디오3로 업그레이드를 해주고,빌드를 돌려보면, 아래와 같이 Gradle Sync Issues를 볼 수 있습니다.이러한 이슈들은 build.gradle의 Module:app레벨에서 일어나는 이슈들인데요. 자세히 보면 아래와 같이 나와있습니다..지금 쓰고 있는 configuratoin의 설정은 이제 더이상 쓰지 않고,2018년도 이후에는 사용할 수 없다고 되어 있네요. 다행이 관련 해서 정보를 얻을 수 있는 링크를 제공해 주고 있네요.https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration?utm_source=android-studio#new_configurations 5가지나 바뀌었으니 조금 피곤하게 되었네요.하지만 유.. 2018. 8. 20.
RxJava2 (RxAndroid2) 로 업그레이드 하기 RxJava2(RxAndroid)가 나온지도 시간이 많이 흘렀네요.RxJava개발진영에서도 2018년 3,4월경부터는 더이상 지원을 하지 않는다고 하니,이제는 업그레이드를 위한 준비를 해서 테스트 일정까지 생각해보아야 할 때가 되었는데요. 오늘은 RxJava1에서 RxJava2(RxAndroid)로 업그레이드 하면서 알아야 하는 것에 대해서 정리해 보도록 하겠습니다.혹시 RxJava1에 관해서는 아래 링크를 참조해 주세요ㅋ>>RxAndroid 이해하기 1. dependency설정 RxAndroid2를 사용하기 위해서는 dependency부터 변경해야 겠지요.이미지에서 하이라이트된 두줄을 추가해 주어야 합니다. 참고로 retrofit을 사용하고 있다면, adapter-rxjava2로 adapter도 변경해.. 2018. 4. 3.
Android XML에서 Custom Font 사용하기(SupportLibrary26 이상) SupportLibrary26이 발표되면서, 드디어 XML에서 Font를 사용할 수 있게 되었습니다.(벌써 27버전이 발표되었고, AndroidStudio는 3.0릴리즈 버전으로 업데이트 되었습니다.)더이상 TypeKit은 사용할 필요가 없게 되었네요.오늘은 xml에서 CustomFont를 사용하는 방법에 대해서 정리해 보겠습니다. 1. SupportLibrary 추가하기 SupportLibrary 25.4.0부터는 Maven Repository를 이용하는데요.기존의 jcenter()밑에 maven { url "https://maven.google.com" } 만 추가해주면 됩니다. 26이상의 최신 Support Library를 추가해 주어야 하구요.build.gradle의 dependency에 supp.. 2017. 10. 31.