안드로이드 192

[Android] Dagger에 대해 알아보자

Android Dagger DI와 ioC Dagger는 DI Framework 입니다. DI는 Dependency Injection(의존성 주입)의 준말입니다. 의존성 주입이란 외부에서 의존 객체를 생성하여 넘겨주는것을 의미. DI를 위해서는 객체를 생성하고 넘겨주는 외부의 무언가가 필요합니다. 이것이 DI Framework가 하는 일입니다. 외부에서 넘겨주는 무언가를 스프링에서는 컨테이너, Dagger에서는 Component와 Module이라고 부릅니다. DI는 이렇게 의존성이 있는 객체의 제어를 외부 Framework로 올리면서 IoC개념을 구현합니다. Ioc는 Inversion of Control(제어의 역전)의 준말입니다. :외부 컨테이너가 객체를 생성, 주입합니다. 제어가 거꾸로 가는 개념을 I..

안드로이드 2022.10.27

[Android] Context에 대해 알아보자

Context란? - 어떤 객체를 핸들링 하기 위한 접근 수단. 두가지 역할 -어플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근하기 (ex. getPackageName(), getResource()) -안드로이드 시스템 서비스에서 제공하는 API를 호출 할 수 있는 기능 (ex. startActivity(), bindService()) 안드로이드는 Context라는 인스턴스화된 매개체를 통해야만 유사한 일들을 수행할 수 있다. Context는 어플리케이션이 시작될 때, 어플리케이션 컴포넌트들이 생성될때마다 생성된다 ContextWraper Context의 대리인으로 원본 Context를 변화시키지 않고 수정할 수 있게 해주는 서브 클래스. 보호 프록시 패턴 혹은 어댑터 패턴으로 구현되어 Conte..

안드로이드 2022.10.27

[Android] 데이터 바인딩 BindingAdapter

데이터 바인딩 BindingAdapter 데이터 바인딩을 실무에 적용하기 위해서는 BindingAdapter를 자유자재로 다룰 수 있어야 합니다. ImageView, ListView, RecyclerView등 기능이 복잡한 View는 BindingAdapter를 통해 데이터를 처리해주어야 하기 때문입니다. 1. 서버로부터 이미지를 받아야 되기 때문에 인터넷 접근 권한을 설정해줍니다.(Glide라이브러리) 2.APP단계의 build.gradle에 Glide를 추가해줍니다. //glide implementation "com.github.bumptech.glide:glide:$glideVersion" 3.User.kt에 profile데이터(이미지 주소)와 BindingAdapter를 추가해 줍니다. class..

안드로이드 2022.10.27

[Android] Android Apk 패키징 v1, v2

Android Apk 패키징 v1, v2 안드로이드 apk파일을 생성하는 과정에서 개인키로 암호화 서명을 하여, 이 apk파일이 누구에 의해서 서명되었는지 알수 있습니다. 이러한 인증과정은 누군가가 조작된 apk(악성코드가 심어진)를 배포하지 못하도록 하는 보안적인 이유입니다. 안드로이드 7.0부터는 v2의 새로운 서명 방식이 사용가능하다. android studio 2.2 이상을 사용하면 signature version을 선택할수 있습니다. 기존의 서명은 v1, 안드로이드 7.0부터는 서명이 v2입니다. 참조 : https://trend21c.tistory.com/2017 android apk 패키징 v1, v2 안드로이드는 apk파일을 생성하는 과정에서 개인키로 암호화서명을 하여, 이 apk 파일이 ..

안드로이드 2022.10.27

[Android] Anko alert, startActivity에 대해 알아보자

Anko alert , startActivity 사용법 -Anko는 JetBrain에서 직접 제작하여 배포한 코틀린 라이브러리 입니다. Anko는 네 종류의 라이브러리를 나뉩니다. 1.Anko Commons 2.Anko Layouts 3.Anko SQLite 4.Anko Coroutines 기존 코틀린 다이얼로그는 아래와 같이 사용합니다. val alertDialogBuilder = AlertDialog.Builder(acitivity) alertDialogBuilder.setTitle("title") alertDialogBuilder.setMessage("message").setCancelable(false) .setPositiveButton("확인", Dialoginterface.OnClickList..

안드로이드 2022.10.27

[Android] Notification 오레오 대응

Notification 오레오 대응 오레오에서부터는 이 Notification Channel을 필수로 만들어 주어야 합니다. 오레오에서 Notification Channel을 만들어 주지 않으면 알림이 오지 않습니다. 알림채널(Notification Channel) 만들기 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel notificationChannel = new NotificationChannel("channel_id",..

[Android] Gradle 빌드 에러(HttpErrorStatusCodeException)

Gradle 빌드 에러(HttpErrorStatusCodeException) https://stackoverflow.com/questions/46467561/difference-between-google-and-maven-url-https-maven-google-com maven url 'https://maven.google.com' } 와 google() google() 은 Google maven 저장소에 대한 바로가기입니다. 실제로 동일한 저장소를 가리킵니다. 그러나 google() 단축키를 사용하려면 Gradle 4.x+, Android Studio 3.x+ 및 Android 3.x+용 Gradle플러그인이 필요합니다. 나는 maven url 'https://maven.google.com' } 와 ..

[Android] Android DB Room에 대해 알아보자

Android DB Room에 대해 알아보자 안드로이드 JetPack -Foundation -Architecture -Behavior -Ui 4개의 구성 먼저 Architecture는 다시 Databinding, Lifecycles, LiveData, Navigation,Paging, Room, ViewModel, WorkManager 이렇게 8개로 세분화 할수 있습니다. https://black-jin0427.tistory.com/53?category=727620 1.Room ORM? Room을 알아보기 전에 ORM에 대한 개념을 살펴보겠습니다. ORM이란 Object Relational Mapping 으로 데이터베이스와 객체 지향 프로그래밍 언어간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법으로..

안드로이드 2022.10.25

[Android] 프로가드(Proguard)에 대해 알아 보자

Android Proguard에 대해 알아보자 Android Proguard가 필요한 이유 1. 코드 난독화를 통해 디컴파일시 본인의 코드가 노출되는 것을 방지 할 수 있습니다. 2.불필요한 메서드를 제거하여 멀티덱스를 피할 수 있습니다. -멀티덱스(multidex)란? 안드로이드 앱을 구성하는 코드는 컴파일 되어 덱스(dex)파일로 만들어집니다. 하나의 덱스(dex)파일에는 최대 65536개의 메소드만 참조 할 수 있습니다. 만약 프로젝트의 코드가 65536개의 메소드를 초과하게 되면 덱스(dex)파일이 여러개가 생성됩니다. 그러면 멀티 덱스를 사용하여 컴파일 할 수 있지만, 빌드 과정에서 앱 내의 파일을 여러개의 덱스파일로 나누어야 하므로 빌드 속도가 느려지고 APK의 용량이 커지게 됩니다. 가능하다..

안드로이드 2022.10.25