안드로이드
-
[Android] WebView Bridge Thread 에러안드로이드 2022. 7. 26. 23:49
Only the original thread that created a view hierarchy can touch its views. A WebView method was called on thread 'javabridge'. All WebView methods must be called on the same thread. 위의 두 에러는 JavaScript에서 Android 메서드를 호출하고자 할 때 사용하는 Bridge에서 Android UI 작업 시 발생하는 에러입니다. 아래와 같이 JavaScript Bridge는 비 UI 스레드입니다. 해결방법🤔 WebView의 post() 메서드를 활용해 UI작업을 메인 스레드에서 작업할 수 있도록 해결했습니다. webView.post(new Runnable..
-
[Android] Clean Architecture란안드로이드 2022. 5. 30. 18:27
Clean Architecture 란?🤷🏻♂️ Uncle Bob인 로버트 C. 마틴의 Clean Architecture에서 시작. 소스 코드만 보고 소프트웨어가 수행하는 작업이 무엇인지 식별할 수 있어야 하는 소프트웨어 개발 방법론입니다. 프로그램의 목표를 달성하는 데 필요한 프로그래밍 언어, 하드웨어 및 소프트웨어 라이브러리는 구식이어야 합니다. Clean Architecture 장점 코드는 표준 MVVM 보다 테스트하기 쉽다. 완벽하게 선별된 분리 사용자 친화적인 패키지 구조 프로젝트를 계속 실행하기 쉽다. 새로운 기능을 추가하기 용이하다. Clean Architecture 단점 러닝 커브가 가파르다. 많은 추가 클래스가 포함되므로 정교함이 낮은 소프트웨어에는 적합하지 않다. Clean Archit..
-
[Android] Android Module안드로이드 2022. 5. 23. 00:26
모듈이란?🤷🏻♂️ 모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있습니다. 프로젝트에는 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈을 종속 항목으로 사용할 수 있습니다. 모듈을 추가하는 방법➕ File > New > New Module 을 통해 추가할 수 있습니다. Module vs Library Module과 Library 모두 Resource 파일과 Class 파일 등이 혼합된 모듈입니다. Module : 전체의 어플리케이션 없이 부분적으로 디버깅할 수 있고 테스트할 수 있는 작은 부분이라고 할 수 있습니다. Library : 어플리케이션의 기능 확장을 위해 이전에 컴파일된 소스 코드들의 집합입니다. 모듈의 종류🤔 applicatio..
-
[Android] Repository Pattern안드로이드 2022. 5. 7. 17:27
발생 배경🤷🏻 비즈니스 로직은 프로그램의 핵심이 되는 요소이며, 비즈니스 로직을 잘 짜야 원하는 결과를 올바르게 도출할 수 있습니다. 이때 비즈니스 로직은 보통 데이터베이스나 웹서비스 등의 데이터 저장소에 접근하게 되는데, 이 과정에서 여러 문제가 발생할 수 있습니다. 주로 중복되는 코드, 오류를 발생할 가능성이 있는 코드, 오타, 비즈니스 로직 테스트의 어려움 등이 있습니다. 이에 따라 요구사항이 발생하는데, 비즈니스 로직과 데이터 레이어를 분리해야 한다. 중앙 집중 처리 방식을 통해 일관된 데이터 로직을 제공해야 한다. 등장🔥 이러한 요구사항을 해결하기 위해 등장한 디자인 패턴이 Repository Pattern입니다. Repository는 Data Source 계층과 비즈니스 계층 사이를 중재하는 ..
-
[Android] DP vs SP안드로이드 2022. 5. 7. 16:34
안드로이드 UI 레이아웃을 정의할 때 주로 사용되는 DP와 SP에 대해서 알아보고자 합니다.👇🏻 PX이란?🤷🏻 PX이란 화면을 구성하는 최소 단위로 화면의 전체 화면 크기와 상관없이 지정한 수치만큼 표시되는 절대적 표시 단위입니다. 그러므로 전체적인 화면 크기에 대응하기 위해서 사용되는 단위가 DP입니다. DPI란?🤷🏻♂️ DPI는 Dots Per Inch로 1인치에 들어가는 픽셀을 나타내는 단위입니다. 예를 들어 100dpi는 1인치당 픽셀이 100개가 포함된다는 것을 의미합니다. 개수가 많을수록 고밀도이며 안드로이드에서는 주요 DPI는 아래와 같습니다. ldpi : 120dpi mdpi : 160dpi (기본) hdpi : 240dpi xhdpi : 320dpi xxhdpi : 480dpi xxxh..
-
[Android] Timber로 Debug 상태에서 로그 찍어내기안드로이드 2022. 4. 30. 22:30
Timber? 🐞 Timber는 Android의 Log 클래스 위에 구축된 로깅 유틸리티 클래스입니다. Debug 상태에서 Log를 남기고, Release 상태에서 Log를 출력하고 싶지 않을 때 주로 사용합니다. 사용법🤷🏻♂️ 1. app 수준의 build.gradle에 Timber 의존성 추가 (22.04.30일 기준 라이브러리 버전) implementation 'com.jakewharton.timber:timber:5.0.1' 2. Debug 상태에서만 로그를 출력하기 위해 앱 시작 시 Timber 초기화해주어야 합니다. class Application: Application() { override fun onCreate() { super.onCreate() if(BuildConfig.DEBUG)..
-
[Android] ADB wifi 디버깅 방법(무선 디버깅)안드로이드 2022. 3. 26. 13:11
안드로이드 ADB와 WIFI를 사용해 무선으로 디버깅을 할 수 있습니다. ADB란🤔 Android Debug Bridge의 약자로 Android Device와 통신하며 Debugging 등의 작업을 진행할 수 있는 Command Line Tool입니다. Android SDK에도 포함되어 있으며 애플리케이션 설치, Device 접속 및 관리, 파일 업/다운로드, 시스템 log 출럭, shell 접속 등이 가능합니다. 무선 디버깅 방법🔍 1. USB디버깅 활성화 먼저 개발자 옵션을 활성화시켜줍니다. (설정) -> (휴대전화 정보) -> (소프트웨어 정보) -> (빌드번호) 연속 클릭하여 개발자 모드 활성화 개발자 옵션에 들어가 USB 디버깅을 활성화해줍니다. 2. Wifi를 연결한 안드로이드 기기와 PC 연..
-
[Android] LayoutInflater란안드로이드 2022. 3. 22. 20:32
LayoutInflater란?🤔 XML에 미리 정의해둔 틀을 실제 메모리에 올려주는 역할을 합니다. Inflater 단어의 뜻은 부풀리다는 의미로 LayoutInflater 이 단어에서도 역할을 유추할 수 있습니다. 즉 LayoutInflater는 XMl에 정의된 Resource를 View 객체로 반환해 주는 역할을 합니다. 우리가 매번 사용하는 onCreate() 메서드에 있는 setContentView(R.layout.activity_main) 또한 Inflater 역할을 합니다. LayoutInflater 생성 방법👀 getSystemService : 가장 기본적인 방법으로 context에서 LayoutInflater를 가져오는 방법입니다. val inflater: LayoutInflater = c..