IT

Android 앱 업데이트시 SharedPreferences는 어떻게하나요?

lottoking 2020. 9. 25. 08:20

Android 앱 업데이트시 SharedPreferences는 어떻게하나요?


내 앱의 SharedPreferences에 사용자 설정을 저장했습니다. Google Play 스토어를 통해 앱을 새 버전의 앱으로 업데이트하면 SharedPreferences는 어떻게 되나요?

SharedPrefernces는 업데이트 후에도 여전히 존재하면 아니면 삭제됩니까?

지금까지 웹이나 Stackoverflow에서 답변을 찾지 못합니다. (추천 키워드로 검색해도 될까요?).

이 프로세스를 설명하는 링크를 알려주시겠습니까?

편집 : 한편 나는 다른 대답도 발견했습니다 : 업데이트 / 제거시 SharedPreferences 동작

편집 2 : 내가 처음이 질문을 할 때 꽤 이후로 최근에 Android 6.0 (API 23) 이후 Google에서 지난번에 자동 백업 기능을 사용 하여 공유 환경 설정 보호수 있음을 알게 되었습니다 . 단지를 추가 allowBackup="true"하여하여에 AndroidManifest.xml파일.


Cristian은 다음과 같이 사실. 사용자가 업데이트를 사용할 때 응용 프로그램 데이터가 유지됩니다.

package name, 이전 앱의 업데이트 와 동일해야합니다 .

EboMike의 Android 사용자에게 앱 업데이트로 인해 이전 앱 버전의 데이터가 부과 될 수 있습니다. 말한다 :

솔직히 말해서 업그레이드로 인한 손상 데이터는 용납 할 수 없습니다.

편집 :

일반적으로 된 SharedPreferences (및 기타 사용자 데이터)는 업데이트 프로세스 중에 유지되지만 때로는 " 알 수없는 "로 인해 데이터 문제가 손실 될 수 있으며 제어 할 수 없는 을 구석으로 같습니다. 따라서 된 SharedPreferences가 유지 될 것이라고 간단히 믿을 수 있습니다 ( 여기 참조 ).

따라서 업그레이드 진행 중에 사용자의 데이터를 지우지 사용면 기본 데이터를 외부 저장소 (SD 카드 또는 내부의 이동식 저장 장치와 같은 이동식 저장 매체)에 저장해야합니다. 또는 최소한 사용자가 업그레이드하기 전에 데이터를 백업 할 수 있도록 보관하십시오. 그런 다음 (업그레이드 된) 앱을 처음 사용했을 때 외부 저장소에 백업 파일이 있는지 확인하십시오.

어떤 일이 일어나거나 어떤 일이 일어나거나 존재하는지 알고 있습니까? , 나는 이것에 대한 좋은 설명이 없습니다Android Security. Application signing,,copy protection그리고 다른주제들과 복잡하고 최다입니다. 위의 필드에서 앱의 상태를 변경하면 다른 결과가 발생한다는 것을 의미합니다.
예를 들어CHANGED COPY PROTECTION FROM ON to OFF OR OFF to ON, 귀하의 앱이 모든 공유 기본 설정이 적용되고 파일 액세스가 불가능하고 ....
조건에주의해야하지만being considered이전 앱에 대한업데이트 업데이트 새 앱이 발생합니다(업데이트 수없는 항목 참조).

또한 코드에주의해야합니다. 데이터베이스의 데이터가 삭제 될 수 있습니다 ( 사전로드 된 SQLite로 앱 업데이트 참조 ).

그러나 말할 수 있습니다.

업데이트 프로세스는 apk 파일 (예 : 드로어 블 등) 만 대체하고 데이터베이스, 공유 기본 설정 및 작동 새에 생성 된 기타 파일을 변경하지 않습니다. (아마도이 ​​경우에는 앱이 이전 앱의 UID와 동일한 UID).

자세한 내용은 다음 페이지를 참조하세요.

도움!? 시장에서 애플리케이션을 업데이트하면 SharedPreferences가 삭제됩니다.
시장 복사 방지가 업데이트 후 파일 액세스를 완전히 차단합니다.
누군가 앱 업데이트 프로세스를 설명 할 수 있습니까?


마지막으로 Google Play를 통해 내 애플리케이션을 업데이트했을 때 sharedPreferences가 영향을받지 않을 것입니다.
나는 배포를 사용하여 자동으로 로그인 업데이트 후 그렇게했습니다.
한 달 전 이었으니 기억이 흐려질 수 있고 다른 사람의 의견도 듣는 편이 좋다.


4 시간 이상에서 한 후 낳화하여 모델을 저장하고 있음을 알았습니다. 직렬화 가능한 클래스 serialVersionUID 라는 이름의 고유 한 ID가 운영되는 운영에 기본적으로 설정되는 클래스 이름, 인터페이스 및 변수 이름으로도 계산됩니다. 모델 클래스를 변경하고 변수를 추가 한 다음 앱을 업데이트했음을 알았습니다. 이제 클래스가 변경되어 새로운 serialVersionUID 가 설정되어 업데이트시 클래스를 역화 할 수없고 모델을 생성 할 수 없습니다. java.io.InvalidClassException을 제공했습니다.

이 문제를 방지하기 위해 명시 적으로 serialVersionUID를 설정합니다.

static final long serialVersionUID = 42L;

참고 URL : https://stackoverflow.com/questions/12637737/what-will-happen-to-the-sharedpreferences-on-update-an-android-app