본문 바로가기

Develop/Android7

Andoird 메모리 사용을 분석해보자!!! adb shell dumpsys meminfo ```sh Total RAM: 3,597,148K (status normal) Free RAM: 1,071,266K ( 637,714K cached pss + 336,024K cached kernel + 97,528K free) ION: 237,236K ( 183,672K mapped + -18,480K unmapped + 72,044K pools) GPU: 0K Used RAM: 3,462,226K (3,094,698K used pss + 367,528K kernel) Lost RAM: 194,720K ZRAM: 319,316K physical used for 1,759,976K in swap (4,194,300K total swap) Tuning: 192.. 2024. 1. 17.
Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present 1. 문제상황 구글스토어에 업로드하고 잘 사용하던 어플이 어느 순간 스마트폰에서 자동으로 삭제 되었다. 그리고 설치하려고 해도 설치가 안 되었다. 2. 원인찾기 adb: failed to install C:\Users\superpower\Develop\rms\android/app/build/outputs/apk/debug/app-debug.apk: Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl928833812.tmp/base.apk (at Binary XML file line #78): com.zoontek.rnbootsplash.RNBootSplashActivity:.. 2022. 4. 9.
[gradle] googlePlayServicesVersion 설정 방법 googlePlayServiceVersion, firebaseMessagingVersion 버전 뭘로 하지!? # 아래와 같이 구글API 버전을 설정할 때 어떻게 정하는게 좋을까? buildscript { ext { buildToolsVersion = "29.0.3" minSdkVersion = 24 compileSdkVersion = 30 targetSdkVersion = 30 ndkVersion = "20.1.5948944" // react-native-push-notification googlePlayServicesVersion = "17.6.0" // default: "+" firebaseMessagingVersion = "21.1.0" // default: "21.1.0" } ... } # 라이.. 2021. 11. 27.
안드로이드 앱 꺼짐 현상 앱크래시😥 React Native 로 면접지문을 읽고 면접을 촬영한 후 업로드하는 기능을 서비스하는 애플리케이션을 개발했다. "면접지문을 읽을 때 0.01% 의 사용자가 면접지문을 읽는 중 앱이 종료된다는 리포트를 받았다." 주어진 지문 읽는 시간을 카운트하는 기능이기 때문에 초단위로 리랜더링되고 있어 랜더링 최적화 문제도 의심할 수 있지만 앱이 갑자기 종료되는 앱크래시 현상이라 무엇보다 메모리 문제라 가정하였고 프로파일링을 돌려봤다. # 면접지문 읽는 상황 프로파일링 결과 - 지속적으로 GC(Garbage Collector)가 메모리를 회수하고 있다.(조밀한 휴지통 표시) - 메모리 사용량이 줄지 않는다. - 실행환경, 기기환경, 사용환경에 따라 GC가 오작동하거나 GC 회수량을 초과할 경우 앱크래시가 나타날 것.. 2021. 10. 18.
[android] MediaPlayer?? ExoPlayer?? 안드로이드 미디어 플레이어는 크게 두 종류가 있다. MediaPlayer 와 ExoPlayer. 어떤걸 사용해야 할까? MediaPlayer 오디오 재생만 하는 경우 & 애플리케이션 용량을 최대한 줄이고 싶은 경우. ExoPlayer 그 외 모든 경우 1. MediaPlayer 기본적으로 휴대폰 로컬에 설치되므로 어떤 버전이 사용할지 제어할 수 없다. 따라서 MediaPlayer 버전, OS, 휴대폰에 따라 다르게 구현되어 있을 수 있고, 이는 여러 상태의 버그가 존재하여 디버깅하기 어렵다. 저전력으로 오디오 디코딩을 할 수 있어 오디오 재생 기능이 좋다. 2. ExoPlayer Android 프레임워크에 속하지 않고 Android SDK에서 별도로 배포되는 오픈소스 프로젝트이다. Android 4.1(.. 2021. 10. 5.
[android] 실행중인 앱을 강제 종료시키고 싶을 때 adb shell am force-stop [--user | all | current] 디버깅 하던 중 실행 중인 앱이 갑자기 종료되었을 때, 어떻게 작동하는지 테스트해보고 싶었다. 예를 들면 큰 크기의 파일을 인코딩하고 업로드하는 일련의 처리에서 예상하지 못 하게 크래시가 발생해 앱이 종료 되면 어떻게 될까? 그리고 이런 상황이 발생했을 때도 사용자가 큰 불편함을 느끼지 않고 대처할 수 있게 개발하고 싶었다. adb shell am force-stop [--user | all | current] # 특정 패키지 강제 종료 adb shell am force-stop com.3stack.kakao # 특정 유저의 특정 패키지 강제 종료 adb shell am force-stop --user 10 com.3.. 2021. 9. 29.
[Android] 어떻게 안드로이드 앱 사이즈를 줄일까?🤔 How to reduce Android App size in react-native? 안드로이드 앱 사이즈 줄이기 1. enableSeparateBuildPerCPUArchitecture - 사용할 경우 특정 ABI(Android Binary Interface)에맞춰 APK 파일을 따로 따로 생성. - 이 옵션을 사용하지 않으면 다양한 안드로이드 기기의 ABI를 전부 지원할 수 있는 하나의 APK 파일 생성. - assembleRelease가 아니라 bundleRelease를 사용하여 AAB(Android App Bundle)을 구글스토어에 업로드할 경우, 자동으로 사용자의 기기의 ABI에 적합한 앱으로 다운로드 된다. 구글스토어에 AAB파일을 업로드할 경우 사용할 필요 없음. 2. shrinkResou.. 2021. 9. 28.