전체 글 썸네일형 리스트형 [Android] 의존성 주입이란? (feat. 수동 의존성 주입) 클린 아키텍처를 공부하면서 의존성 주입, 의존성 역전 원칙 등등 의존성에 관련된 말이 많이 나왔는데요의존성 주입이란 무엇인지 처음부터 차근차근 정리해보려고 합니다 🪄 의존성 주입(Dependency Injection)이란?객체는 다른 객체와 상호작용을 하며 필요한 객체에 의존을 하게 됩니다 예를 들어 Car 클래스가 Engine 클래스를 참조하고 있습니다이때, Car 클래스는 Engine 클래스에 의존하고 있다고 말할 수 있는데요그리고 이렇게 클래스를 필요로 하는 것을 의존성(Dependency)이라고 합니다 그런데 이러한 의존성이 많아지면 코드 간 결합도가 높아져 유지보수성이 떨어지고 객체를 재사용하기 어려워집니다그렇기 때문에 객체 간의 결합도를 낮추기 위해 객체를 생성하는 시점에 필요한 의존성 .. 더보기 클린 아키텍처 in 안드로이드 이전에 클린 아키텍처 개념에 대해 포스팅을 작성했었는데요그렇다면 클린 아키텍처가 안드로이드에서는 어떻게 사용되는지 살펴보겠습니다 👩🏻💻 안드로이드에 적용한 클린 아키텍처 클린 아키텍처에서 엔터프라이즈 업무 규칙, 애플리케이션 업무 규칙, 인터페이스 어댑터, 프레임워크와 드라이버로 나눠져 있던 청사진입니다안드로이드에서는 이를 프레젠테이션 계층(Presentation Layer), 도메인 계층(Domain Layer), 데이터 계층(Data Layer) 3개의 계층으로 나누게 됩니다 클린 아키텍처 구조에서는 의존성이 무조건 바깥에서 안쪽으로 향하지만 안드로이드에서는 계층을 나누기 때문에 프레젠테이션 계층과 데이터 계층이 도메인 계층을 바라보며 의존성을 가지는 형태로 구성됩니다 그리고 각 계층에 .. 더보기 클린 아키텍처(Clean Architecture)란? 안드로이드 프로젝트를 진행하며 클린 아키텍처를 기반으로 구현을 하게 되었는데요처음엔 너무 대체 이게 뭐지..? 싶었던 클린 아키텍처를 차근차근 정리해보려고 합니다오늘은 우선 클린 아키텍처의 개념부터 정리해보겠습니다 :) 👩🏻💻 클린 아키텍처(Clean Architecture)란 ?클린 아키텍처란 개발자들 사이에서 유명한 책인 '클린 코드 (Clean Code)'를 저술한 로버트 마틴(Robert C.Martin)이 제안한 시스템 아키텍처로, 복잡한 소프트웨어 시스템 관리를 용이하게 하고 기존의 아키텍처들이 가지던 의존성에서 벗어나도록 하는 설계를 제공합니다. 주요 원칙클린 아키텍처의 주요 원칙은 아래와 같습니다 1. 의존성 역전 원칙 (Dependency Inversion Principle)고.. 더보기 조금 늦은 GDG 상사 후기 GDG Campus Korea에서 주최한 행사인 GDG 상사에 참여하게 되었는데 너무 재밌고 의미있던 행사였기에 정리 겸 기록해둘 겸 ,, ✏️ 🧚🏻♀️ GDG 상사GDG 상사는 멘토와 한 팀을 이뤄 현업에 계신 분들이 어떻게 서로 소통을 하고 작업하는지 과정을 볼 수 있는 행사였는데 현업에 대한 궁금증이 굉장히 많기도 했고, 다양한 개발자분들과 대화를 나눌 수 있는 기회가 너무 좋을 것 같아서 신청하게 되었다(간단한 자소서?와 함께 신청을 하고 승인을 해주시면 참가하게 되는 방식 ! 자세한 행사 정보는 아래 링크 참고 !) 행사를 위해 임의로 Task를 만들어서 각 Task마다 한 팀으로 구성해주셨고 그리고 그 안에서 또 Android, Web, Backend끼리 모여 앉게 되었다우리 Task.. 더보기 구글 플레이스토어 첫 앱 출시기 <안뜰> IT 동아리에서 1월부터 시작해 팀원들과 꾸준히 진행한 '안뜰'이 드디어 9월 초에 구글 플레이 스토어에 배포되었다 ! 안뜰 플레이 스토어 링크 🌱https://play.google.com/store/apps/details?id=com.umc.anddeul&hl=ko 첫 앱 출시기 시작합니다 💨 🌱 안뜰 '안뜰'은 가족 간 소통을 위한 소규모 SNS 어플리케이션입니다 주요 기능은 이렇게 4가지가 있습니다1. 우리 가족만을 위한 작은 SNS 💌게시글에 사진이나 음성을 올려 서로의 일상을 공유해보세요!이모지로 게시물에 반응을 남겨보세요.2. ‘따듯한 잔소리’ 기능 내 가족에게 애정 어린 잔소리가 필요할 때!가족의 페이지에 직접 체크리스트 만들어주세요 : 상대방의 페이지에 방문해 직접 체크리스트.. 더보기 [Android] 비즈니스 로직이란? 프로젝트를 진행하며 클린 아키텍처를 도입하면서 UseCase를 사용하게 되었는데요 처음 사용하는 UseCase에 대해 찾아보는데 ..UseCase를 사용하면서 UseCase는 비즈니스 로직을 실행한다, UseCase를 설계할 때 비즈니스 로직에 기반한다.. 등등 대체 비즈니스 로직이 정확히 뭐지..?? 🤯 UseCase를 제대로 사용하기 전에 비지니스 로직에 대해 먼저 이해하기 위해 정리해보았습니다 🤔 우선, 로직 분리를 왜 해야하지 ?바로 소프트웨어 설계의 근본인 "관심사의 분리"를 위해서 ! 조금 더 쉽게 풀어서 말하면코드를 하나의 커다란 뭉텅이로 만들지 말고, 작게 쪼개서 역할을 나누자 ! 하나의 앱을 만들기 위해선 간단해보이는 작은 앱일지라도 생각보다 많은 코드가 필요합니다그렇다 보면 .. 더보기 [Android] 앱 배포하기04_ AAB 파일 만들기 🪐 AAB 파일이란 ?AAB 파일은 Android App Bundle의 줄임말로, 안드로이드 애플리케이션을 배포하기 위한 새로운 앱 패키징 형식입니다Google에서는 2021년 8월부터 배포되는 안드로이드 앱은 APK 파일이 아닌 AAB 파일로 업로드 되어야 한다고 정책을 바꾸었습니다 AAB는 APK와 달리 모든 디바이스에 동일한 파일을 제공하지 않고, 각 디바이스에 맞게 최적화된 APK를 생성해 배포합니다 🤔 여기에서 '각 디바이스에 맞게 최적화된' 이 무엇인가 하면예를 들어 앱이 여러 언어 (한국어, 영어, 일본어)를 지원한다고 가정해보겠습니다 APK 방식일 때는 모든 언어 리소스를 포함한 하나의 APK 파일을 생성해야 하며, 사용자가 필요하지 않은 언어 리소스도 함께 설치됩니다즉, 한국 사.. 더보기 [Android] 앱 배포하기03_ Proguard로 코드 난독화하기 🎲 코드 난독화가 뭐야?코드 난독화란 소스 코드의 가독성을 줄여서 코드의 분석 및 역공학을 어렵게 만드는 기술입니다 코드의 기능적 동작은 변경하지 않으면서, 코드의 구조와 내용을 복잡하게 만들어 해커나 악의적인 사용자가 코드를 이해하거나 수정하는 것을 어렵게 만들어줍니다 ! 즉, 한마디로 코드를 알아보기 어렵게 만든다는 거죠 난독화 도구로는 Proguard, R8, DexGuard 등이 있는데 저는 Proguard를 사용해서 난독화를 진행했습니다 🤔 왜 해야할까?1. 보안 강화- 애플리케이션의 내부 동작과 알고리즘을 숨겨 소스 코드의 취약점을 악용하거나 불법적으로 분석하는 것을 어렵게 만들어줍니다 2. 역공학 방지- 역컴파일러를 사용하여 원래의 소스 코드를 재구성하기 어렵게 만들어줍니다 3. .. 더보기 이전 1 2 3 4 5 ··· 9 다음