nueijeel

[Android] 앱 삭제 후 이전 데이터가 남아있는 문제 본문

Android/에러 및 문제 해결

[Android] 앱 삭제 후 이전 데이터가 남아있는 문제

nueijeel 2024. 3. 11. 00:50

 

 

세모반 앱 버전을 업데이트 하면서

기존에 사용하던 서버 도메인을 개발 서버에서 운영 서버로 옮겼는데

 

그 이후로 일부 기기에서 업데이트 된 버전을 다운받으면

로그인 화면에 데이터 로딩 화면이 뜨는 현상이 발생했다.

 

로그인 화면에 데이터 로딩 화면이 겹쳐서 뜸

 

 

데이터 로딩 화면은 홈 화면이 실행되고 서버 통신되는 시간동안 다른 요소를 클릭해서 발생하는 에러를 방지하기 위해 넣은 화면인데 로그인 화면에서 이 화면이 계속 뜬다는 건...

자동로그인을 처리하는 과정에서 이전 설치시 로그인했던 데이터가 남아있기 때문일거라고 추측했다

 

 

 

 

 

우선 정확한 원인 파악을 위해 앱을 다시 실행하고 로그를 살펴보니

홈 화면에서 최초로 유저 프로필을 받아오는 통신이 수행되고 401 코드를 반환받았다

 

401은 액세스토큰 만료 코드이기 때문에 이 코드를 반환 받으면 토큰 갱신을 위한 api가 호출되는데 

이후 LoginRepository에서 찍힌 로그에서도 401 코드가 반환된 것을 보면 액세스 토큰 갱신에 사용되는 리프레시 토큰이 유효하지 않음을 알 수 있었다.

 

 

로그를 통해서 두가지 문제점을 파악할 수 있었다.

 

첫 번째는,

앱을 처음 실행했는데 홈 화면에서 통신이 이루어진다는 것은 자동 로그인에 사용되는 내부 데이터가 이전 설치 삭제 시 삭제되지 않고 그대로 남아있어 발생하는 문제

 

두 번째는,

토큰 갱신에 실패해서 로그인 화면으로 돌아갈 때 데이터 로딩 화면이 dismiss 되지 않아 앱이 먹통이 되어버리는 문제

 

 

두 번째 문제는 토큰 갱신 api 통신 시 401 에러가 발생할 경우 데이터 로딩 화면을 닫아주는 처리를 하면 되기 때문에

여기서는 첫 번째 문제의 해결 방법만을 알아보려고 한다.

 

 

안드로이드 6.0(API 23) 버전 이후부터는 사용자의 Google Drive에 있는 비공개 폴더에 자동으로 앱 데이터를 백업시켜주기 때문에 애플리케이션에서 자동 백업을 사용하지 않도록 설정하면 앱을 재설치해서 사용해도 이전 데이터가 백업되지 않는다고 한다.

 

(백업되는 파일의 종류나 백업 위치 등의 자세한 정보는 공식문서를 통해 확인할 수 있다.)

 

 

애플리케이션에서 자동 백업을 사용하지 않도록 설정하는 방법은 간단하다.

 

<application
        ...
        android:allowBackup="false"
        android:fullBackupContent="false"
        ...

 

AndroidManifest.xml 파일에서 android:allowBackup 속성과 android:fullBackupContent 속성 각각을 false로 지정해주면 된다!

 

 

 

 

앱을 삭제하면 당연히 관련된 내부 데이터가 함께 삭제되는 줄 알았는데 백업이 되었다가 활용되는 줄은 몰랐다.

 

만약 앱을 삭제했다가 다시 깔았을 때 존재해야하는 이전의 데이터가 있다면 backup rule을 이용해 자동으로 데이터를 백업해뒀다가 복원할 데이터를 지정해볼 수도 있을 것 같다!

 

 

 

 

 

 

 

 

참고)

https://lifeinprogram.tistory.com/31

 

 

 

 

 

 

728x90