Android63 딥링크와 앱링크 딥링크란 딥링크를 사용하면 유저가 앱과 앱을 오가는게 쉬워진다. 웹을 보다가, 특정 화면만 유저가 앱으로 봤으면 하는 경우 딥링크가 작동하는데, 이때 유저가 앱을 깔아두었으면 바로 해당화면으로 이동한다. 웹을 서핑하다가 앱으로 보내려고할 때 ... 해당 서비스의 앱이 있다면 - 해당 앱으로 이동한다. 해당 서버스의 앱이 없다면 - 해당하는 store로 이동한다. 이 기능을 가능하게 해주는데 딥 링크이다. 링크의 형태는 앱 스킴(URL 스킴) 혹은 일반적인 https:// 링크 두 가지 형태를 둘다 지원한다. 즉 https://www.example.com 혹은 app://open.my.app 두 형태를 모두 지원한다는 말이다. 또한, 아래 그림처럼 눌렀을 때 필요한 앱을 직접 선택할 수 있도록 한다는 특징.. 2023. 7. 19. 하나의 프로젝트에서 여러 다른 버전의 앱을 만들어 보자!(1) - product flavors, build variants 1. 딥링크 앱링크 2. 'product flavors' 또는 'build variants'를 활용하는 것 안드로이드 스튜디오를 사용하여 하나의 프로젝트에서 여러 다른 버전의 앱을 만드는 방법은 주로 'product flavors' 또는 'build variants'를 활용하는 것입니다. 이를 통해 동일한 코드 베이스를 공유하면서도 약간 다른 버전의 앱을 만들 수 있습니다. 1. Product Flavors': 'build.gradle(Module: app)' 파일에서 'productFlavors'를 설정하여 각각의 앱 버전에 대한 고유한 설정을 할 수 있습니다. 예를 들어, 다음과 같이 설정할 수 있습니다.여기서 'free'와 'paid'는 각각의 앱 버전을 나타냅니다. 'applicationId'는 .. 2023. 7. 17. 레이어 구조를 모듈로 나눠보자 이전 글에서는 아키텍쳐를 어떻게 나누고 해당 레이어 간의 종속관계에 대해 설명하였다. 해당 레이어간의 종속관계를 그림으로 표현하면 아래와 같다. 그런데 우리는 인간이기에 레이어간 나누고 종속관계를 컨벤션으로 할지어도 의존을 무시하고 개발 할 수 있다. 그러므로 우리는 강제적으로 의존의 흐름을 만들어야 하는데 이는 라이브러리(혹은 모듈)을 만들어 의존을 강제할 수 있다. 이번 편에서는 라이브러리를 만들어 아키텍쳐로 나누는 법에 대해 알아보자. 먼저 레이어에 대해 모듈을 만드는 방법은 아래 사진과 같다. 처음 앱을 생성했을때 app모듈이 생되는데 Application 클래스가 위치된다. app모듈은 ui 모듈로 사용하고 나머지 domain 모듈과 data 모듈을 생성한다. 생성하면 아래와 같다. APP모듈(.. 2023. 7. 7. Architecture 구조도 (이론편 - Data 레이어) 2023. 7. 7. Architecture 구조도 (이론편 - Domain 레이어) 2023. 7. 7. Architecture 구조도 (이론편 - UI 레이어) 먼저 들어가기 앞서 내가 생각하는 아키텍쳐 구조도는 다음과 같다. 위의 그림에 대해 정리해 보면 아래와 같다. 이번 편은 UI레이어에 대한 설명과 나의 생각을 작성해 보겠다. 사용자 상호작용(예: 버튼 누르기) 또는 외부 입력(예: 네트워크 응답)으로 인해 데이터가 변할 때마다 변경사항을 반영하도록 UI가 업데이트되어야 합니다. 사실상 UI는 데이터 레이어에서 가져온 애플리케이션 상태를 시각적으로 나타난다. 아래의 사진과 같이 UI레이어는 UI element 와 State holder 가 합쳐진 형태이고 Data 레이어(or Domain 레이어)에 의존한다. UI 레이어 구현 방법 UI라는 용어는 UI라는 용어는 사용하는 API(뷰 또는 Jetpack Compose)와 관계없이 데이터를 표시하는 활동 및.. 2023. 7. 6. 아키텍쳐에 관하여 먼저 글을 작성하기 앞서, 나는 취업 전 클린 아키텍쳐? , MVVM? , MVC, MVP? , AAC-ViewModel과 MVVM-ViewModel 의 차이점 등등 아키텍쳐에 많은 노력을 들였었다. 이유는 지금 당장 공고를 보면 대기업 부터 스타트업까지 모든 공고에는 Google-Architecture-Guide Clean-Architecture, MVVM 이 자격 요건에 항상 작성되어 있었고 당연히 알아야 하고 확실히 알아야 한다는 생각에 사로잡혀 있었다. 그래서 많은 검색과 다양한 블로그를 읽고 다양한 유료강의를 듣고 유명한 개발자에게 DM을 보내 질문을 하였지만 각자가 생각한 Clean-Architecture에 대한 설명을 할 뿐 명확한 근거를 얻을 수 없었고 실체를 더더욱 알 수 가없었다. 그런.. 2023. 6. 28. JeckPack 네비게이션이란 (2) - 실전 편 자 개발하는 방법에 대해 알아보자. 먼저 Gradle에 추가해준다. dependencies { def nav_version = "2.5.3" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" /.. 2023. 6. 19. JeckPack 네비게이션이란 (1) - 이론 편 한마디로 설명하면 한마디로 설명하면 JeckPack 네비게이션 이란 화면간의 이동을 할 수 있게 도와 주는 컴포넌트 이다. 나오게 된 이유 이전에는 우리는 화면간의 이동을 Intent 를 사용하여 화면간의 이동을 하였었다. 그러나 Intent는 아래와 같은 단점을 야기했었다. 코드의 복잡성: Intent를 사용하여 화면 간 이동을 구현하면 각각의 이동에 대해 별도의 Intent 객체를 생성하고 전달해야 한다. 이는 코드의 복잡성을 증가시킬 수 있다. 또한, Intent를 통해 전달되는 데이터나 인자들을 관리하기 위해서는 별도의 키(Key)를 사용해야 하며, 이는 번거로움을 초래할 수 있다. 안전성과 일관성의 부재: Intent를 사용하여 화면 전환을 구현하는 경우, 뒤로 가기 동작이나 이전 화면으로의 정.. 2023. 6. 18. 하이라이트 튜토리얼 커스텀뷰를 만들어보자 이번 글은 위와 같은 원하는 뷰를 선택하여 해당 뷰에 하이라이트를 주는 오버레이 튜토리얼 커스텀 뷰를 만들어보겠다. 먼저 해당 커스텀뷰는 하단 회색 버튼을 누를 시 두번째 사진처럼 원하는 뷰를 제외한 나머지를 회색으로 가려준다. 이 후 화면을 터치하면 세번째 사진 처럼 설정해 주었던 다음번의 뷰에 하이라이트를 잡아주며 더이상 설정한 곳이 없다면 하이라이트를 종료하게 된다. MainActivity.kr package com.example.test import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.con.. 2023. 5. 20. 커스텀 뷰에 Depth를 줄여보자 Android 개발 시 새로운 디바이스와 새로운 OS는 개발자에게 있어서 다양한 시도를 도와주는 부분이기도 한다. 다양한 자원들의 상한선/하한선 등 사용 가능한 경계선의 범위가 점점 넓어지고 있습니다. 그러기에 Android 앱 개발시에 자원을 남용하기 쉽다. 본 글에서는 레이아웃 깊이를 1단계 줄이는 방법 중 하나를 소개한다. 서론 하나의 화면을 구성하는 방법은 작성자에 따라서 다양한 방법으로 결과를 만든다. 그중 레이아웃 작업시에는 XML을 사용해서 구성하는 경우가 대부분이다. Android Studio에 기본적으로 적용된 Lint는 아래와 같다. 단일 XML에서 View Element의 갯수가 80개 이상인 경우 단일 XML에서 레이아웃 깊이가 10-Depth 이상인 경우 1번 경우인 단일 XML에.. 2023. 4. 13. 4 issues were found when checking AAR metadata: 이 오류에 대해 구글링을 해보면 그렇게 안된다.... 하는법을 작성하자. 2023. 4. 1. 둥근 모서리를 가진 그라데이션 테두리 사각형 만들기 2023. 3. 29. app:cardCornerRadius 오류 개발 도중 옛날폰(구글 폰인데 진짜 옛날폰이였음..)에서 갑자기 머더리얼 디자인이 나오지 않았다.... 이유는 app:cardCornerRadius 는 height의 1/2 로 써줘야 (height가 21dp 니깐 11dp or 10dp) 원하시는 원형이 나온다. 1/2이 넘어갈경우 옛날 폰에서 이상현상이 생기는 오류가 있었다!!! 2023. 1. 2. 커스텀 뷰 만들어보자 안드로이드 시스템은 XML에 정의된 View 태그와 속성을 기반으로 생성된 View 객체와 AttributeSet 객체를 이용해 화면에 View 를 그려준다. 좀더 풀어 쓰면, 레이아웃 XML에 정의된 모든 View 들은 화면에 출력 될 시점에 안드로이드에 의해 View 객체로 변환되어 메모리에 올라가며, 이 때, 각 뷰의 내부 속성(색상, 크기 등)은 AttributeSet 객체로 변환되어 View 클래스 생성자의 매개변수로 전달 된다. 이렇게 생성된 View객체를 안드로이드가 해석하여 화면에 그려준다. 참고로 XML 에 정의된 View 를 객체로 생성해 메모리에 올리는 과정을 Inflate 라고 한다. 해당 뷰 하단의 버튼들을 보면 모두 같은 레이아웃에 아이콘과 텍스트만 다르다는 것을 볼 수 있다. .. 2022. 12. 30. 이전 1 2 3 4 5 다음