اندروید - پشتیبان گیری از داده های کاربر (SharedPreferences) با استفاده از Auto Backup

برای پشتیبان گیری از داده ها در اندروید، Auto Backup بطور خودکار از داده های کاربر، مربوط به برنامه هایی که در اندروید 6.0 (API 23 یا بالاتر) اجرا می شوند، پشتیبان گیری می کند. این اطلاعات با محدودیت 25 مگابایت به ازای هر برنامه و در یک پوشه خصوصی در Google Drive نگهداری میشوند. میزان حافظه مصرفی توسط اطلاعات بکاپ برنامه ها جدا از سهمیه 15 گیگابایتی Google Drive میباشد.

اطلاعاتی که پشتیبان گیری میشوند شامل فایل هایی است که توسط سیستم به برنامه اختصاص داده شده است:

  • Shared preferences files.
  • Files saved to your app's internal storage, accessed by getFilesDir() or getDir(String, int).
  • Files in the directory returned by getDatabasePath(String), which also includes files created with the - SQLiteOpenHelper class.
  • Files on external storage in the directory returned by getExternalFilesDir(String).

فعال و غیرفعال کردن backup در پروژه اندروید

در فایل manifest برنامه، با استفاده از android:allowBackup میتوانید پشتیبان گیری از اپ خود را فعال یا غیر فعال کنید:

<manifest ... >
  ...
  <application android:allowBackup=&quottrue&quot ... >
    ...
  </application>
</manifest>

شخصی سازی فایل ها برای پشتیان گیری

برای اطلاعاتی مانند توکن ها و اطلاعات اعتبار سنجی کاربر که در صورت بکاپ گیری از این اطلاعات مشکلاتی در عملکرد برنامه پیش می آید مانند توکن لاگین کاربر که برای خودم پیش آمد. در این حالت کاربر لاگین میکرد، از اطلاعات برنامه (شامل توکن) بکاپ گرفته می شد و بعد از حذف و نصب مجدد برنامه، اطلاعات بکاپ بازگردانی میشدند و کاربر با اپلیکیشن لاگین شده مواجه میشد!

برای جلوگیری از این مسائل میتوانید فایل هایی که پشتیبان گیری میشوند را شخصی سازی کنید.

  • در AndroidManifest.xml فیلد android: fullBackupContent را به <application> اضافه کنید. این ویژگی به یک فایل XML اشاره دارد که حاوی قوانین پشتیبان گیری است. مثلا:
<application ...
    android:fullBackupContent=&quot@xml/my_backup_rules&quot>
</application>
  • یک فایل XML با نام my_backup_rules.xml در مسیر / res / xml / ایجاد کنید. در داخل پرونده ، قوانین را با <include> و <exclude> اضافه کنید. نمونه زیر از کلیه shared preferences ها به جز دستگاه، پشتیبان تهیه می کند:
<?xml version=&quot1.0&quot encoding=&quotutf-8&quot?>
<full-backup-content>
    <include domain=&quotsharedpref&quot path=&quot.&quot/>
    <exclude domain=&quotsharedpref&quot path=&quotdevice.xml&quot/>
</full-backup-content>

سینتکس XML برای فایل پیکربندی:

<full-backup-content>
    <include domain=[&quotfile&quot | &quotdatabase&quot | &quotsharedpref&quot | &quotexternal&quot | &quotroot&quot]
    path=&quotstring&quot
    requiredFlags=[&quotclientSideEncryption&quot | &quotdeviceToDeviceTransfer&quot] />
    <exclude domain=[&quotfile&quot | &quotdatabase&quot | &quotsharedpref&quot | &quotexternal&quot | &quotroot&quot]
    path=&quotstring&quot />
</full-backup-content>

منبع:

developer.android.com