Android/Android 기초21 [Android] 빌드 변형 구성 (ProductFlavors) 한 개의 프로젝트로 여러개의 앱 만들기 오늘은 AndroidProject에서 build.gradle파일에서 빌드변형구성(ProductFlavors)을 활용하여 하나의 프로젝트에서 여러개 packageName 및 appName을 가진 앱을 만드는 방법에 대해서 알아보겠습니다.이번에 소개하는 내용은 무조건적인 정답은 아니라고 생각합니다.하지만 제가 배우고 적용하면서 편리했던 내용을 정리한것이기 때문에 여러분들이 필요한 부분만 활용하여 사용하시는 것을 추천 드립니다. Android Developer 빌드 변형 구성https://developer.android.com/studio/build/build-variants?hl=ko 빌드 변형 구성 | Android 개발자 | Android Developers빌드 변형을 구성하여 단일 프로젝트에서.. 2024. 2. 18. [Android] 안드로이드 저장소(3) - 카메라/갤러리 저장하기 예제(Q Scoped Storage) Android 11 타겟팅을 위한 권한 설정 (Manifest)앱이 Android 11을 타겟팅하는 경우 WRITE_EXTERNAL_STORAGE 권한 및 WRITE_MEDIA_STORAGE 독점 권한은 더 이상 추가 액세스를 제공하지 않는다. 따라서, MediaStore를통한 파일 접근 방식이 필요하다.MANAGE_EXTERNAL_STORAGE 권한 선언앱에 관해 모든 파일 관리 허용 옵션을 사용 설정할 수 있는 시스템 설정 페이지로 사용자를 안내함 MANAGE_EXTERNAL_STORAGE 권한은 다음을 허용한다.공유 저장소 내의 모든 파일에 관한 읽기 액세스 및 쓰기 액세스MediaStore.Files 테이블의 콘텐츠에 관한 액세스--> 저장소에 읽기/쓰기를 해야하는 .. 2024. 1. 7. [Android] 안드로이드 저장소(2) - Scoped Storage 안드로이드 버전10 이상부터는 Scoped Storage를 사용한다. 이전 버전이였던 Legacy Storage와 어떤차이가 있는걸까? 지난 포스트에서도 말했듯이 안드로이드의 저장소는 크게 내부저장소와 외부저장소로 나뉜다. 두 버전에서 내부저장소는 동일하고 외부저장소의 구조가 살짝 바뀌었다. 외부저장소 구조의 변화기존에는 공용공간안에 모든 파일이 저장되었다면, 변경된 후에는 개별공간이 샌드박스 형태로 보호되어있고 공용공간 또한 타입별로 분리되었다. 개별 앱 공간은 앱 삭제시 함께 제거되고, 공용공간은 앱이 삭제되어도 기기에 남아있다. 외부저장소 접근 방법1. 개별 앱 접근방법개별 앱 공간은 따로 권한요청이 필요 없고 Context.getExternalFilesDir()를 통해 자신의 앱 공간에만 접근할.. 2024. 1. 7. [Android] 안드로이드 저장소(1) - Legacy Storage 안드로이드에서는 저장소를 내부저장소와 외부저장소로 나눠서 관리하고 있다. 안드로이드 버전10(Q)을 기준으로 저장소의 모양이 바뀌었는데, Q버전 이전의 저장소, Legacy Storage라는 형태가 Q버전 이후로는 Scoped Storage라는 형태로 변경이 되었다. 두개의 차이는 구조인데 그부분은 다음글에서 설명하고, 이번 글에서는 Q이전 형태인 Legacy Storage에 대해서 설명하겠다. 내부저장소와 외부저장소?내부저장소 | 내부저장소는 모든 스마트폰에서 제공된다. 앱을 설치하게 되면 해당 앱을 위한 저장공간이 할당되며, 이 공간은 샌드박스 형식으로 되어있어서 해당 앱만 접근하고 외부에서는 볼 수 없는 형태로 되어있다. 앱이 삭제되면 이 공간 또한 같이 제거된다. 외부저장소 | 대부분 안드로이드 .. 2024. 1. 7. [Android] 프래그먼트(Fragment) 간 통신 방법 4가지 프래그먼트 간 통신 방법Fragment간 데이터를 전달하는 방법은 여러가지가 있다. bundle과 FragmentManager로 전달Fragment Result API를 사용하여 Data 전달Fragment간 공통의 ViewModel(ex. HostActivity의 ViewModel)로 전달Jetpack의 Navigation에서 제공하는 safe-args로 전달위에 언급한 방법에 대해 각각 알아보자.1. FragmentManager에 Bundle로 Data를 담아 전달전송하려는 Fragment class//PassBundleFragment는 본인이 전달하고자 하는 Fragment class val bundle = Bundle() bundle.putString("key", "value") val passB.. 2023. 9. 6. [Android] 프래그먼트(Fragment) 프래그먼트(Frament)프래그먼트는 액티비티 내에 생성되는 UI 구성을 여러 개의 모듈 단위로 작성할 수 있도록 해주는 역할을 한다. 프래그먼트의 특징프래그먼트는 독립적일 수 없다.액티비티에 종속적이다. 따라서 액티비티가 중단되면 그 액티비티에 속해있던 모든 프래그먼트도 함께 중단된다.액티비티에 비해 가볍다.액티비티는 안드로이드 시스템에서 관리하지만, 프래그먼트는 안드로이드 시스템이 직접 관리하지 않고 프래그먼트 매니저가 관리하기 때문에 메모리 리소스가 상대적으로 덜 소모되어 액티비티보다 가볍다.다른 액티비티에서도 사용할 수 있어 재사용성이 뛰어나다.액티비티의 화면 구성을 위한 레이아웃의 복잡도를 줄일 수 있다.액티비티와 같이 레이아웃, 생명주기를 가진다.액티비티 내에서 런타임 중에 추가, 제거가 가능.. 2023. 9. 6. 이전 1 2 3 4 다음