728x90

출처

https://ddolcat.tistory.com/26

http://blog.naver.com/PostView.nhn?blogId=netrance&logNo=221224761858&parentCategoryNo=&categoryNo=95&viewDate=&isShowPopularPosts=true&from=search

 

 

앱을 삭제했을 때 shared preference 데이터를 삭제하는 방법
How to remove shared preference while application uninstall in android

 

앱을 삭제 후 재설치하게 되면 공유환경 설정(shared preference)에서 일부 데이터가 복원되는 증상이 요즈음 나온 최신 폰에서 발생하고 있습니다.

즉, 앱을 삭제 후 재설치하면, 삭제 전에 저장되었던 자료들이 남아있는 문제가 발견되고 있습니다.

 

원인은 바로 자동 백업 "BackupManager" 때문 -- android:allowBackup 속성 true로 자동 설정

Android API 23(또는 Android "6.0" 또는 Android "Marshmellow")이후 BackupManager는 공유 환경 설정을 포함한 앱의 모든 데이터를 클라우드에 저장합니다.

이는 안드로이드 6.0부터는 AndroidManifest.xml 파일에서 application 요소의 android:allowBackup 속성을 명시하지 않으면 자동으로 true로 설정하기 때문인데 이로 인해 사용자도 모르게 데이터가 구글 클라우드에 자동으로 백업됩니다.

 

결국 앱 삭제 후 재설치하면, 자료가 자동으로 복원되다 보니 환경설정(preferences)에 저장된 자료가 되살아 나는 것입니다.

 


해결방법

 

1. 안드로이드 폰에서 직접 해제 하는 방법이 있습니다.
   설정 > 백업 및 재설정 > 자동복원을 선택, 자동복원 해제 를 하는 방법입니다.
   그러나 이 방법은 장치에 설치된 모든 응용 프로그램의 자동 백업기능을 해제하기 때문에 권장하지 않습니다.


2. 앱 소스에서 매니페스트 파일로 이동, application 태그에서 "allowBackup" 속성을 찾아서 false로 설정하는 것입니다.

 


앱의 데이터 자동 백업을 막는 방법

 

1. AndroidManifest.xml 파일을 여세요.

 

2. application 요소에 android:allowBackup 요소를 추가하고, 값을 false로 설정하세요.

android:allowBackup="false"

 

3. application 요소에 android:fullBackupContent 요소를 추가하고, 값을 false로 설정하세요.

android:fullBackupContent="false"

 

4. (옵션) 프로젝트에 다른 플러그인이 있는 경우, allowBackup 속성이 충돌할 수 있습니다.

    이 경우 application 요소에 tools:replace 속성을 추가하고, 값은 "android:allowBackup"으로 설정합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          package="패키지명">

    <uses-feature
        android:name="android.hardware.camera"
        android:required="true"/>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


......


    <application
        android:name=".MyApp"

        android:allowBackup="false"
        android:fullBackupContent="false"
        tools:replace="android:allowBackup"
        
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true"
        tools:replace="android:icon">

......


    </application>

</manifest>

 

참고로 android:fullbackupOnly="false" 기능은 안드로이드 API 21 이후 폰에서 설정, 사용가능합니다.

 

 

<기타 참고 사이트>

https://stackoverflow.com/questions/33169618/an-android-app-remembers-its-data-after-uninstall-and-reinstall

https://developer.android.com/guide/topics/data/autobackup.html

http://androbook.tistory.com/entry/%EB%8B%A4%EC%8B%9C-%EC%82%B4%ED%8E%B4%EB%B3%B4%EB%8A%94-%EB%A7%A4%EB%8B%88%ED%8E%98%EC%8A%A4%ED%8A%B8-%EC%86%8D%EC%84%B1%EB%93%A4

 

+ Recent posts