지금 회사에서 네이티브 앱을 flutter 앱으로 리뉴얼 하는 작업을 진행 중이다.
업데이트 되는 시점에서 자동 로그인이 풀리지 않도록
shared preferences 값을 마이그레이션 하는 작업이 필요하다고 하여
찾게된 라이브러리 Native Shared Preferences!
처음에 안드로이드 네이티브 앱을 설치하고 flutter 앱을 설치 해주면 자꾸 삭제되고 다시 설치가 되었다.
업데이트가 아니라!
패키지명도 같은데 와이?
✓ Built build/app/outputs/flutter-apk/app-live-debug.apk. Installing build/app/outputs/flutter-apk/app.apk... Uninstalling old version... Error: ADB exited with exit code 1 Performing Streamed Install
Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package --------- signatures do not match previously installed version; ignoring!]Installing build/app/outputs/flutter-apk/app.apk...
이런 에러가 뜨면서!
이유는? keystore 에 서명한 동일한 인증서가 아니라서 라고!
동일한 인증서로 맞추기 위해 일단 네이티브 앱을 앱스토어에서 설치하고
flutter build apk --flavor live -t lib/main_live.dart
를 이용하여 flutter 앱의 apk를 만든다음 앱에서 직접 설치해 주었다.
일단 데이터도 그대로이고 권한도 그대로 유지하는 거 보니 삭제 후 설치가 아니라 제대로 업데이트 된 것 같다.
그런데!
네이티브앱에서 shared preferences 에 저장된 값은 넘어오지 않았다...
이유가 멀까?
일단 아이오에스를 테스트 해보았는데 아이오에스는 너무나도 잘 넘어온다. 그냥 설치해도 잘됨!!
https://www.flutterclutter.dev/flutter/tutorials/read-shared-preferences-from-native-apps/2021/9753/
이때 검색을 통해 또 하나의 링크를 찾고 여기서 해답을 얻었다..
storage_name
setSharedPreferencesName(getDefaultSharedPreferencesName(context));
public static String getDefaultSharedPreferencesName(Context context) {
return context.getPackageName() + "_preferences";
}
네이티브 앱에서 스토리지 네임을 세팅해주는 부분을 찾았더니 패키지 네임에 _preferences 를 붙여주었고
이것을 플러터 앱 android > app > src > main > res > values > strings 파일에
<resources>
...
<string name="flutter_shared_pref_name">resource_name</string>
...
</resources>
추가 해주었더니 제대로 불러와지는 것을 확인 할 수 있었다!!!
'# 02 > Flutter' 카테고리의 다른 글
[Flutter] Bluetooth Keyboard Error!! (0) | 2022.09.20 |
---|---|
[Flutter] show Performance Overlay (0) | 2022.09.01 |
[Flutter] How to use Expanded in SingleChildScrollView? (0) | 2022.06.13 |
[Flutter] scroll physics no bounce no scroll (0) | 2022.04.21 |
[Flutter] in app messaging (0) | 2022.03.11 |