안드로이드 184

[Android] 스토어 배포 경고 (디버그 기호 업로드)

스토어 배포 경고 (디버그 기호 업로드)스토어에 aab 파일 올렸을 때 경고창이 떴다. assemble로 빌드 apk 생성했을 때 lib정보도 같이 생김app/build/intermediates/merged_nativ_libs/프로젝트폴더/out/libx86_64x86armeabi-v7aarm64-v8a4개의 폴더를 포함한 압축파일을 올려주어야 한다. 오류The native debug symbols contain an invalid directory __MACOSX. Only Android ABIs are supported. The native debug symbols contain an invalid directory lib. Only Android ABIs are supported.The native..

안드로이드 09:28:10

[Android] 프로젝트 설정 멀티 모듈 적용하기

안드로이드 프로젝트 설정 멀티 모듈 적용 해보도록 하겠습니다. nowinandroid 깃헙 보면 core 모듈안에 여럿 모듈이 들어가 있다. (2024.05.16 기준)모듈이 많은데 나는 필요한 모듈만 생성해볼 것이다.모듈 생성했을 때 폴더 모양초록색 점으로 표시되는게 Application(Android App Module)책 모양으로 표시되는게 Android Library파란색 네모로 표시되는게 Java & Kotlin Library 이다. 모듈 삭제 방법모듈을 잘못 생성했을 때 삭제 하는 방법File - Project Structure - Modules 에서 삭제 core 모듈 생성Core폴더의 모듈은 Android Library 템플릿을 사용한다고 함.나는 Java or Kotlin Library로..

안드로이드 2024.05.16

[Android] Gradle VersionCatalog 알아보자

안드로이드 프로젝트 셋팅 Gradle VersionCatalog 알아보자 Version Catalog안드로디르 개발 프로젝트를 하면서 멀티 모듈을 사용할 때, build.gradle파일이 많이 생기고 각 파일에서 공통적으로 사용할 변수나 의존성 버전으로 인해 빌드 오류를 자주 겪는 경우가 생긴다.그래서 buildSrc 등을 이용하여 버전을 관리 했다.요즘엔 Version Catalog를 사용하여 버전 관릳를 많이 한다고 한다. Version Catalog란?버전을 bundle 형태로 묶어서 관리할 수 있고, 프로젝트에 여러 모듈이 있는 경우,라이브러리와 플러그인을 업그레이드 해야 할 때마다 이름과 버전을 개별 빌드 파일에 하드코딩 대신,Version Catalog를 생성 해놓으면 다른 모듈에서 스튜디오 ..

안드로이드 2024.05.16

[Android] RecyclerView GridLayoutManager 헤더, 푸터, spanSizeLookup 작업

RecyclerView GridLayoutManager 헤더, 푸터, spanSizeLookup 작업작업중에헤더 푸터는 전체 칼럼으로 보여줘야하고, 그리드 영역은 span size 에 맞게 처리 해야하는 작업이 필요했습니다.아래 표와 같은 형태헤더그리드 영역   푸터 1. RecyclerView에 GridLayoutManager 설정val layoutManager = GridLayoutManager(context, 2) // 전체 칼럼 수를 2으로 설정layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { override fun getSpanSize(position: Int): Int { return wh..

안드로이드 2024.05.10

[Android] 코루틴 플로우(Coroutine Flow)에 대해 알아보자

Android 코루틴 플로우(Coroutine Flow)에 대해 알아보자 # flow { ... } public fun flow(@BuilderInterface block: suspend FlowCollector.() -> Unit) : Flow = SafeFlow(block) flow { // 플로우 블럭 } 하나의 소비자(Consumer)에게 값을 보냅니다. 생성된 이후에 누군가 소비하기 시작하면 데이터를 발행합니다. # 플로우 기초 플로우 기초 플로우 기초 플로우 기초 예제 45: 처음만나보는 플로우 Flow는 코틀린에서 쓸 수 있는 비동기 스트림입니다. import kotlin.random.Random import kotlinx.coroutines.* import kotlinx.coroutines..

[Android] Custom NotificationView(RemoteViews)에 대해 알아 보자

Android Custom NotificationView(RemoteViews)에 대해 알아 보자 Android custom NotificationView를 찾다가 RemoteViews라는게 있었습니다! notification 을 원하는 형태로 그릴 수 있었습니다! val acceptIntent = Intent(this, 원하는화면::class.java) val rejectIntent = Intent(this, 원하는화면::class.java) RemoteViews(packageName, R.layout.보여줄xml).let { val contents = "원하는 내용" it.setTextViewText(R.id.textview1, "내용") it.setTextViewText(R.id.textview2,..

안드로이드 2024.03.26

[Android] 안드로이드 잠금 화면, 슬립 깨우기

Android 잠금 화면, 슬립 깨우기 잠금화면을 해제할 액티비티의 onCreate 에 추가 하였습니다. private fun turnScreenOnAndKeyguardOff() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { setShowWhenLocked(true) setTurnScreenOn(true) window.addFlags( WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON ) } else { window.addFlags( WindowManager.LayoutParams.FLAG_SHOW_W..

안드로이드 2024.03.26

아키텍처는 왜 중요한가? (MVC, MVP, MVVM, Clean Architecture, ViewModel, 모듈) 알아 보자!

아키텍처는 왜 중요한가? (MVC, MVP, MVVM, Clean Architecture, ViewModel, 모듈) 알아 보자! 아키텍처는 왜 중요한가? 모바일의 특징을 고려 네트워크적 특징을 고려 사용자 이벤트 다른앱들의 실행. 전화 문자 등등 반응형 프로그래밍 (코루틴, RX Java 등) 이런것들의 동시에 일어난다. 빠른 배포가 필요 비지니스의 확장을 위해서 모듈화가 필요하고 확장에 유연해야한다. 실험적인 기능을 가설을 세우고 특정유저에게 보낸다 → 좋은 아키텍처가 뒷받침 Network Drivien UI → 비지니스 모델에 따라 지원해야할수도 있음 테스트를 위함 확장성이 좋은 앱, 모듈간의 커플링이 낮음 → 결국 테스트하기 좋은 앱 아키텍처는 답이 없음 (중요!) 앱에 실질적으로 도움이 되는것을..

안드로이드 2024.03.26

[Android] 루팅이란? 루팅 체크 방법

루팅(Rooting)이란? 모바일 기기에서 구동되는 안드로이드 운영 체제 상에서 최상위 권한(루트 권한)을 얻어 생산자 측에서 걸어놓은 제약을 해제하는 행위 Android 기기 루팅 되었는지 확인하는 방법 단계 1) 기기 루팅 시도 단계 2) Root Checker라는 무료 앱 설치 단계 3) 앱을 실행하고 'Verify Root Access' 버튼을 탭합니다. 단계 4) 앱은 기기를 성공적으로 루팅했는지 여부를 알려줍니다. 단계 5) 기기가 루팅된 경우 좋습니다. 그렇지 않은 경우 One Click Root를 설치하여 문제를 해결하십시오. 루트 검사기는 어떻게 작동합니까? Root Checker는 Android 스마트폰 또는 태블릿에서 루트 액세스 권한을 테스트하는 간단한 앱입니다. 이를 위해 Root..

안드로이드 2024.03.22

[Android] AudioFocus 관리, MediaPlayer, AudioManager

안드로이드 프레임워크에서 소리와 영상을 재생하기 위해 사용되는 클래스는 아래와 같습니다. # MediaPlayer 오디오 및 비디오 파일과 스트림 재생을 위해 쓰입니다. 소리와 영상을 재생하기 위한 기본 API입니다. # AudioManager 기기의 오디오 소스와 오디오 출력을 관리하는 클래스입니다. # Audio Focus 2개 이상의 앱이 audio를 하나의 stream으로 동시에 재생할 수 있다. 시스템들은 이것을 믹스한다. 이는 유저에게 소음이 될 수 있다. 이를 예방하기 위해 Audio Focus라는 개념을 도입. 하나의 앱만 audio focus를 가질 수 있다. 앱이 audio output을 하려면, audio focus를 요청해야 한다. focus를 획득하면 소리를 재생할 수 있다. 획득..

안드로이드 2024.03.20