📱 Android 61

[Android] OS 점유율 & minSdkVersion

오늘은 OS 점유율에 대해 확인해보겠습니다 OS 점유율은 프로젝트 생성 시 하단의 링크를 클릭하면 됩니다. ❔Your app will run on approximately 100% of devices. Help me choose 저 링크를 클릭하면 아래와 같은 사진이 뜹니다. 각 API별로 cumulative distribution을 확인할 수 있는데, 해당 API 를 제공하면 몇 %의 사용자가 사용할 수 있는지라고 생각하시면 될 것 같습니다 점유율 확인은 minSDKVersion을 정할 때 확인하면 됩니다. minSdkversion이란? 애플리케이션이 실행하는 데 필요한 최소 API 레벨을 지정하는 정수입니다. Android 시스템은 시스템의 API 레벨이 이 특성에 지정된 값보다 낮은 경우 사용자가 ..

📱 Android 2021.01.27

[Android] SharedPreferences 사용하기

SharedPreferences란? ✔ 데이터가 파일로 저장되고, 저장하려는 키-값 컬렉션이 비교적 작은 경우에 주로 사용됩니다. ✔ DB를 사용하지 않고, 간단한 데이터들을 저장할 때 주로 쓰이며, 앱을 껐다 켜도 사라지지 않아서 자주 사용하는 인터페이스입니다. ✔ 앱을 삭제하거나, 따로 삭제를 설정해야 값들이 사라집니다. ✔ Key, Value형태로 저장됩니다. SharedPreferences 사용법 1. KEY 정하기 위에서 언급했듯이 Key, Value의 형태로 저장되기 때문에, 우선 Key값을 정해줍니다. 2. Value 타입 정하기 SharedPreferences에는 String, Int, Boolean, Long 등 다양한 자료형이 저장될 수 있으므로 어떤 타입을 사용할지 지정해야 합니다. ..

📱 Android 2021.01.19

[Android] Notification

안드로이드 개발자라면 한번씩은 해봤을 Notification에 대해 정리해보겠습니다. 간략히 말하자면 Notification은 사용자에게 앱의 이벤트에 대한 정보를 제공하고, Builder를 통해서 생성해야합니다. NotificationChannel은 각 Notification들을 관리하는 것이라 생각하면 되는데, API 26 이상부턴 반드시 추가를 해줘야 Notification을 발생시킬 수 있습니다. 예제를 통해 더 자세히 알아보겠습니다 1. NotificationChannel 생성 val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager if (Build.VERSION.SDK_INT >..

📱 Android 2021.01.04

[Android] Timber 사용해보기

로그를 찍을 때마다 Log를 사용했었는데 Using 'Log' instead of 'Timber' Log를 사용하는 부분에서 위와 같은 메시지가 떴습니다 줄곧 Log만 사용하다가 Timber에 대해 궁금증이 생겨서 이에 대해 정리해보려고 합니다. 1. Timber ? 마찬가지로 로깅 클래스인데 , 기존에 사용하던 Log보다 더 간편하고 릴리즈할 때 로그가 노출될 걱정을 하지 않아도 됩니다. 다른 로깅 클래스와 마찬가지로 사용법은 어렵지 않습니다. 2. Timber 사용법 우선, 다른 라이브러리를 implementation 해줍니다. (build.gradle(:app)) implementation 'com.jakewharton.timber:timber:4.7.1' 그리고 Log.d를 사용할 때와는 달리 초..

📱 Android 2020.12.29

[Android/kotlin] LayoutInflater 사용 (PopupWindow)

오늘은 LayoutInflater를 사용해서 PopupWindow를 만들어보겠습니다 팝업창을 만들고 사용자가 만든 레이아웃을 설정할 수 있고, 현재 Activity 최상단에 띄워집니다 그럼 PopupWindow를 간단하게 사용해보고 특징들에 대해 정리해보도록 하겠습니다 1. PopupWindow에 띄울 Layout 설정 간단한 예제로 아래 그림과 같은 TextView 1개, Button 2개로 구성된 레이아웃을 만들어보겠습니다 [text_popup.xml] 2. xml을 view로 만들어줍니다 xml과 view를 만들어주기 위해선 LayoutInflate를 알아야합니다 여기서 LayoutInflate란 xml에 선언된 위젯들을 실제 View로 만들어주는 역할을 합니다. var linear = Linear..

📱 Android 2020.12.22

[Android] getColor, getDrawable Deprecated 대응

Android 버전이 업데이트되면, 기존의 함수가 Deprecated가 되기도 합니다. Deprecated 된 함수들은 버전별로 처리를 해주어야 합니다. 이번에 살펴볼 함수는 getColor와 getDrawable 함수입니다. getColor public int getColor (int id) getColor는 마시멜로우버전(API 23)에서 부터 Deprecated(getColor)되었다고 나와있습니다. 공식 문서에 보면, getColor(int, android.content.res.Resources.Theme)를 대신해서 쓰라고 나와있습니다만, ContextCompat에 있는 아래의 함수를 사용해서 변경해보도록 하겠습니다. 설명처럼 Build.VERSION_CODES.M (API 23) 에서부터 사용..

📱 Android 2020.11.18

[Android] Firebase setCurrentScreen 지원중단

앞선 포스팅에 이어, Firebase SDK가 업데이트되면서 수동화면추적을 위한 setCurrentScreen도 곧 지원중단 되므로, 함수를 변경해주도록 합니다. 수동화면추적이란? 자동 추적 사용 설정 여부와 관계없이 screen_view 이벤트를 수동으로 로깅할 수 있습니다. 이러한 이벤트는 iOS의 경우 viewDidAppear상태, Android의 경우 onResume 상태에서 로깅할 수 있습니다. screen_class 를 설정하지 않으면 애널리틱스는 호출할 때 포커스가 지정된 UIViewController 또는 Activity를 기반으로 기본값을 설정합니다 앱을 사용하면서 화면전환율, 현재 화면에 관한 정보를 이벤트에 추적하면서 쓰입니다. 아래의 예시는 사용자가 어떤 화면에 들어왔는지를 남기기 ..

📱 Android 2020.11.09

[Android] 최신 Firebase Crashlytics Sdk 업데이트

공식문서 Firebase Crashlytics SDK로 업그레이드 iOS Android Unity 이제 새로운 공식 Firebase Crashlytics SDK를 사용하여 앱에서 Crashlytics를 설정할 수 있습니다. 이 SDK는 다른 Firebase 제품과의 일관성이 향상되었고 보다 직관적으로 사용할 수 있는 개선 firebase.google.com 위의 공식문서를 참고해서 정리해보겠습니다. (Android를 탭해도 IOS의 방법이 보이는 것 같습니다..) 1. Firebase 구성 파일 추가 프로젝트 설정에서 구성 파일이 필요한 ID를 선택합니다. google-services.json을 다운로드해서 프로젝트 app폴더에 넣어줍니다. 2. build.gradle (app) 수정 io.fabric이..

📱 Android 2020.11.05

[Android] Proguard 적용하기

proguard란? - 코드를 축소, 최적화, 난독화를 해주는 도구 Proguard가 중요한 이유 1. 디컴파일시 코드의 노출을 방지 Proguard 설정을 하지 않는다면, 디컴파일러로 소스를 볼 수 있는 상황이 발생합니다 2. 앱을 최대한 작게 만들기 위해 클래스와 멤버 이름을 줄여 DEX 파일 크기를 줄입니다 Proguard 설정 방법 build.gradle 파일 buildTypes { release { minifyEnabled true // Proguard를 활성화 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 난독화를 시킬 경우, 예외적으로 난독화에서 제거해야할 부분이 발생할 수 있습니다...

📱 Android 2020.08.30

[Android/kotlin] 특정 위치로 스크롤하기

ScrollView의 특정 UI로 자동 스크롤 ScrollView의 특정 TextView를 클릭하면 특정 위치로 자동스크롤 되게 하기 위해서, 현재 스크롤 위치, 특정 UI로 자동 스크롤 위 2가지를 알아야했습니다. Vertical ScrollView를 쓰고 있기 때문에 값은 Y축의 값만 사용합니다. 현재 스크롤 위치 구하기 현재 스크롤의 Y축 값은 생각보다 간단하게 구할 수 있는데, 그 값을 가져오기 위해서 ViewTreeObserver를 사용해야합니다. ViewTreeObserver없이 사용하면 0을 리턴하는 경우가 많기 때문에 ViewTreeObserver를 사용하겠습니다. ViewTreeObserver 각 리스너를 통해 변화를 감지, OnScrollChangeListener 사용 OnScrollC..

📱 Android 2020.08.12