এই পৃষ্ঠাটি আপনাকে দেখাবে কিভাবে আপনার অ্যাপের জন্য ক্লাউড ব্যাকআপ এবং ডিভাইস-টু-ডিভাইস (D2D) ট্রান্সফার প্রক্রিয়া পরীক্ষা করতে হয়। আপনার ব্যবহারকারীরা যাতে নতুন ডিভাইসে আপনার অ্যাপ ব্যবহার চালিয়ে যেতে পারেন তা নিশ্চিত করার জন্য আপনার অ্যাপের প্রতিটি বড় রিলিজের সাথে এই দুটি পরীক্ষা করা গুরুত্বপূর্ণ। যদিও ব্যাকআপ এবং ট্রান্সফার উভয়ই একই রকম, Android 12 (API লেভেল 31) এবং তার উচ্চতর সংস্করণে উভয়ের মধ্যে গুরুত্বপূর্ণ পার্থক্য রয়েছে - সবচেয়ে উল্লেখযোগ্যভাবে, ট্রান্সফারের জন্য 2 GB এর তুলনায় 2 GB এর ডেটা সাইজ সীমা অনেক বেশি।
এই নির্দেশিকাটি আপনাকে দেখাবে কিভাবে আপনি ডেভেলপমেন্ট চক্র জুড়ে ক্লাউড ব্যাকআপ এবং পুনরুদ্ধার এবং D2D ট্রান্সফার দক্ষতার সাথে পরীক্ষা করতে পারেন।
ব্যাকআপ পরীক্ষা কীভাবে কাজ করে
এই বিভাগে অ্যান্ড্রয়েড ব্যাকআপ ফ্রেমওয়ার্কের বিভিন্ন অংশ এবং অটো ব্যাকআপ এবং কী-ভ্যালু ব্যাকআপ সমর্থনকারী অ্যাপগুলির সাথে তারা কীভাবে ইন্টারঅ্যাক্ট করে তা বর্ণনা করা হয়েছে। অ্যাপ ডেভেলপমেন্ট পর্যায়ে, ফ্রেমওয়ার্কের বেশিরভাগ অভ্যন্তরীণ কাজ বিমূর্তভাবে বাদ দেওয়া হয়, তাই আপনার এই তথ্য জানার প্রয়োজন হয় না। তবে, পরীক্ষার পর্যায়ে, এই ধারণাগুলি বোঝা আরও গুরুত্বপূর্ণ হয়ে ওঠে।
ক্লাউড ব্যাকআপ এবং পুনরুদ্ধারের সময় ডেটা কীভাবে প্রবাহিত হয় তা নিম্নলিখিত চিত্রটিতে দেখানো হয়েছে:

নিম্নলিখিত চিত্রটি D2D স্থানান্তরের সময় ডেটা কীভাবে প্রবাহিত হয় তা চিত্রিত করে:

ক্লাউড ব্যাকআপ এবং রিস্টোর পরীক্ষার বিপরীতে, D2D পরীক্ষার জন্য একটি সোর্স ডিভাইস এবং একটি টার্গেট ডিভাইস থেকে কপি করার প্রয়োজন হয়।
ব্যাকআপ ম্যানেজার সার্ভিস হল একটি অ্যান্ড্রয়েড সিস্টেম পরিষেবা যা ব্যাকআপ এবং পুনরুদ্ধারের ক্রিয়াকলাপ পরিচালনা করে এবং শুরু করে। Backup Manager API এর মাধ্যমে পরিষেবাটি অ্যাক্সেসযোগ্য।
ব্যাকআপ অপারেশনের সময়, পরিষেবাটি আপনার অ্যাপ থেকে ব্যাকআপ ডেটার জন্য জিজ্ঞাসা করে এবং ব্যাকআপ ট্রান্সপোর্টে হস্তান্তর করে, যা ক্লাউডে ডেটা সংরক্ষণাগারভুক্ত করে। পুনরুদ্ধার অপারেশনের সময়, ব্যাকআপ ম্যানেজার পরিষেবা ব্যাকআপ ট্রান্সপোর্ট থেকে ব্যাকআপ ডেটা পুনরুদ্ধার করে এবং ডিভাইসে ডেটা পুনরুদ্ধার করে। D2D ট্রান্সফারের জন্য, ব্যাকআপ ম্যানেজার পরিষেবা আপনার অ্যাপ থেকে ব্যাকআপ ডেটার জন্য জিজ্ঞাসা করে এবং এটি সরাসরি নতুন ডিভাইসের ব্যাকআপ ম্যানেজার পরিষেবাতে প্রেরণ করে, যা এটি আপনার অ্যাপে লোড করে।
ব্যাকআপ ট্রান্সপোর্ট হল অ্যান্ড্রয়েড উপাদান যা আপনার অ্যাপ ডেটা সংরক্ষণ এবং পুনরুদ্ধারের জন্য দায়ী। একটি অ্যান্ড্রয়েড-চালিত ডিভাইসে শূন্য বা তার বেশি ব্যাকআপ ট্রান্সপোর্ট থাকতে পারে, তবে একবারে কেবল একটি সক্রিয় থাকতে পারে। ডিভাইস নির্মাতা এবং পরিষেবা প্রদানকারীর কাস্টমাইজেশনের কারণে উপলব্ধ ব্যাকআপ ট্রান্সপোর্টগুলি ডিভাইস থেকে ডিভাইসে ভিন্ন হয়। বেশিরভাগ Google Play-সক্ষম ডিভাইস নিম্নলিখিত ট্রান্সপোর্টগুলির সাথে আসে:
- জিএমএস ট্রান্সপোর্ট: বেশিরভাগ ডিভাইসে সক্রিয় ক্লাউড ব্যাকআপ ট্রান্সপোর্ট, যা গুগল মোবাইল সার্ভিসেসের অংশ। এই ট্রান্সপোর্টটি অ্যান্ড্রয়েড ব্যাকআপ সার্ভিসে ডেটা সঞ্চয় করে।
- D2D ট্রান্সপোর্ট: এই ট্রান্সপোর্টটি D2D মাইগ্রেশনে সরাসরি এক ডিভাইস থেকে অন্য ডিভাইসে ডেটা স্থানান্তর করতে ব্যবহৃত হয়।
যন্ত্র
আপনার ব্যাকআপ এবং পুনরুদ্ধারের ক্রিয়াকলাপ পরীক্ষা করার জন্য, আপনাকে নিম্নলিখিত সরঞ্জামগুলি সম্পর্কে কিছুটা জানতে হবে:
-
adb: ডিভাইস বা এমুলেটরে কমান্ড চালানোর জন্য। -
bmgr: বিভিন্ন ব্যাকআপ এবং পুনরুদ্ধারের কাজ সম্পাদন করতে। -
logcat: ব্যাকআপ এবং পুনরুদ্ধারের ক্রিয়াকলাপের আউটপুট দেখতে।
ক্লাউড ব্যাকআপ পরীক্ষা করুন
এই বিভাগের ধাপগুলি অনুসরণ করে একটি একক ডিভাইস ব্যবহার করে ক্লাউড ব্যাকআপ এবং পুনরুদ্ধার করা যেতে পারে।
ক্লাউড ব্যাকআপের জন্য আপনার ডিভাইস বা এমুলেটর প্রস্তুত করুন
নিম্নলিখিত চেকলিস্টটি অনুসরণ করে ব্যাকআপ পরীক্ষার জন্য আপনার ডিভাইস বা এমুলেটর প্রস্তুত করুন:
- অটো ব্যাকআপের জন্য, আপনি Android 6.0 (API লেভেল 23) বা তার বেশি ভার্সন চালিত কোনও ডিভাইস বা এমুলেটর ব্যবহার করছেন কিনা তা পরীক্ষা করে দেখুন।
- কী-মান ব্যাকআপের জন্য, আপনি Android 2.2 (API লেভেল 8) বা তার উচ্চতর ভার্সন চালিত কোনও ডিভাইস বা এমুলেটর ব্যবহার করছেন কিনা তা পরীক্ষা করে দেখুন।
- ক্লাউড ব্যাকআপ পরীক্ষা করার জন্য আপনার অবশ্যই ইন্টারনেট অ্যাক্সেস থাকতে হবে।
- একটি Google অ্যাকাউন্ট দিয়ে ডিভাইসে সাইন ইন করুন এবং সেটিংস > Google > ব্যাকআপ এ গিয়ে এটিকে ব্যাকআপ অ্যাকাউন্ট হিসেবে সেট করুন।
ক্লাউড ব্যাকআপ পরীক্ষা করার জন্য, একটি ক্লাউড ব্যাকআপ ট্রিগার করুন, তারপর অ্যাপটি আনইনস্টল করে পুনরায় ইনস্টল করুন। এই ধাপগুলি পুনরাবৃত্তিযোগ্য করার জন্য, আপনি নিম্নলিখিত স্ক্রিপ্ট, test_cloud_backup.sh ব্যবহার করতে পারেন, যা আপনার অ্যাপের ব্যাকআপ নেয়, স্থানীয়ভাবে APK ডাউনলোড করে, আনইনস্টল করে এবং APK পুনরায় ইনস্টল করে:
#!/bin/bash -eu
: "${1?"Usage: $0 package name"}"
# Initialize and create a backup
adb shell bmgr enable true
adb shell bmgr transport com.android.localtransport/.LocalTransport | grep -q "Selected transport" || (echo "Error: error selecting local transport"; exit 1)
adb shell settings put secure backup_local_transport_parameters 'is_encrypted=true'
adb shell bmgr backupnow "$1" | grep -F "Package $1 with result: Success" || (echo "Backup failed"; exit 1)
# Uninstall and reinstall the app to clear the data and trigger a restore
apk_path_list=$(adb shell pm path "$1")
OIFS=$IFS
IFS=$'\n'
apk_number=0
for apk_line in $apk_path_list
do
(( ++apk_number ))
apk_path=${apk_line:8:1000}
adb pull "$apk_path" "myapk${apk_number}.apk"
done
IFS=$OIFS
adb shell pm uninstall --user 0 "$1"
apks=$(seq -f 'myapk%.f.apk' 1 $apk_number)
adb install-multiple -t --user 0 $apks
# Clean up
adb shell bmgr transport com.google.android.gms/.backup.BackupTransportService
rm $apks
echo "Done"
পরীক্ষার ধাপ
- আপনার অ্যাপটি খুলুন, সাইন ইন করুন এবং সমস্ত সেটিংস পরিবর্তন করুন।
- আপনার প্যাকেজের নাম, যেমন
test_cloud_backup.sh com.example.myapp, লিখে স্ক্রিপ্টটি চালান। - অ্যাপটি পুনরায় খুলুন এবং যাচাই করুন যে এটি সঠিকভাবে কাজ করছে, সমস্ত ডেটা ধরে রাখা হয়েছে।
আপনি চাইবেন না যে আপনার ব্যবহারকারীদের সাইন ইন করতে হবে এবং তাদের সমস্ত সেটিংস, অগ্রগতি এবং অ্যাপ ডেটা আগের মতোই থাকবে। যদি আপনার পরীক্ষার ফলাফল এই মানদণ্ডগুলি পূরণ না করে, তাহলে নিশ্চিত করুন যে আপনি গুরুত্বপূর্ণ ডেটা বাদ না দিয়ে সঠিকভাবে ব্যাকআপ কনফিগার করেছেন এবং ব্যাকআপ থেকে বাদ দেওয়া যেকোনো ক্যাশেড ডেটার পুনর্নির্মাণও পরিচালনা করছেন। প্রতিটি পরীক্ষার পুনরাবৃত্তির জন্য ধাপ 1-3 পুনরাবৃত্তি করুন।
D2D ট্রান্সফার পরীক্ষা করুন
D2D ট্রান্সফার পরীক্ষা করার সবচেয়ে ব্যাপক উপায় হল আপনার ফোনের সম্পূর্ণ কন্টেন্ট একটি নতুন, ফ্যাক্টরি-রিসেট ডিভাইসে স্থানান্তর করা এবং এটি সঠিকভাবে কাজ করছে কিনা তা যাচাই করা। তবে, যদি আপনাকে একাধিকবার প্রক্রিয়াটি পুনরাবৃত্তি করতে হয় তবে এটি অসুবিধাজনক এবং সময়সাপেক্ষ হতে পারে। এই পদক্ষেপগুলি আপনাকে দেখায় যে ডিভাইসে বারবার ফ্যাক্টরি রিসেট না করে কীভাবে একটি একক ডিভাইস দিয়ে ট্রান্সফার সিমুলেট করবেন।
D2D পরীক্ষার জন্য আপনার ডিভাইস প্রস্তুত করুন
একটি একক ডিভাইসে D2D ট্রান্সফার পরীক্ষা করতে, এটি নিম্নরূপ প্রস্তুত করুন:
- আপনার ডিভাইসে অবশ্যই Android 12 (API লেভেল 31) বা তার বেশি ভার্সন থাকতে হবে।
- D2D এর সর্বশেষ সংস্করণ পরীক্ষা করতে, আপনার অ্যাপে Android 12 (API লেভেল 31) বা তার উচ্চতর সংস্করণ লক্ষ্য করুন।
- পরীক্ষার পুনরাবৃত্তি সমর্থন করার জন্য নিম্নলিখিত স্ক্রিপ্ট,
test_d2d.shতৈরি করুন:
#!/bin/bash -eu
: "${1?"Usage: $0 package name"}"
# Initialize and create a backup
adb shell bmgr enable true
adb shell settings put secure backup_enable_d2d_test_mode 1
adb shell bmgr transport com.google.android.gms/.backup.migrate.service.D2dTransport
adb shell bmgr init com.google.android.gms/.backup.migrate.service.D2dTransport
adb shell bmgr list transports | grep -q -F " * com.google.android.gms/.backup.migrate.service.D2dTransport" || (echo "Failed to select and initialize backup transport"; exit 1)
adb shell bmgr backupnow "$1" | grep -F "Package $1 with result: Success" || (echo "Backup failed"; exit 1)
# Uninstall and reinstall the app to clear the data and trigger a restore
apk_path_list=$(adb shell pm path "$1")
OIFS=$IFS
IFS=$'\n'
apk_number=0
for apk_line in $apk_path_list
do
(( ++apk_number ))
apk_path=${apk_line:8:1000}
adb pull "$apk_path" "myapk${apk_number}.apk"
done
IFS=$OIFS
adb shell pm uninstall --user 0 "$1"
adb shell bmgr transport com.google.android.gms/.backup.BackupTransportService
apks=$(seq -f 'myapk%.f.apk' 1 $apk_number)
adb install-multiple -t --user 0 $apks
# Clean up
adb shell bmgr init com.google.android.gms/.backup.migrate.service.D2dTransport
adb shell settings put secure backup_enable_d2d_test_mode 0
adb shell bmgr transport com.google.android.gms/.backup.BackupTransportService
rm $apks
echo "Done"
পরীক্ষার ধাপ
- আপনি যে অ্যাপটি পরীক্ষা করতে চান সেটি ডিভাইসে ইনস্টল করুন।
- আপনার অ্যাপটি খুলুন, সাইন ইন করুন এবং আপনার অ্যাপের সেটিংস পরিবর্তন করুন।
- আপনার ডিভাইসে স্ক্রিপ্টটি চালান, আপনার প্যাকেজের নাম, যেমন
test_d2d.sh com.example.myapp, লিখে। - স্ক্রিপ্টটি সম্পূর্ণ হয়ে গেলে, ডিভাইসে অ্যাপটি খুলুন এবং যাচাই করুন যে এটি সঠিকভাবে কাজ করছে, সমস্ত ডেটা ধরে রাখা হয়েছে।
আপনি চাইবেন না যে আপনার ব্যবহারকারীদের সাইন ইন করতে হবে, এবং স্ক্রিপ্টটি চালানোর আগে তাদের সমস্ত সেটিংস, অগ্রগতি এবং অ্যাপ ডেটা যেমন দেখাচ্ছিল তেমনই প্রদর্শিত হবে। যদি আপনার পরীক্ষার ফলাফল এই মানদণ্ডগুলি পূরণ না করে, তাহলে নিশ্চিত করুন যে আপনি গুরুত্বপূর্ণ ডেটা বাদ না দিয়ে সঠিকভাবে ট্রান্সফার কনফিগার করেছেন এবং ট্রান্সফার থেকে বাদ দেওয়া যেকোনো ক্যাশেড ডেটার পুনর্গঠনও পরিচালনা করছেন। প্রতিটি পরীক্ষার পুনরাবৃত্তির জন্য ধাপ 2-4 পুনরাবৃত্তি করুন।
ব্যাকআপ এবং পুনরুদ্ধারের সমস্যা সমাধান করুন
এই বিভাগটি আপনাকে কিছু সাধারণ সমস্যা সমাধানে সাহায্য করবে।
পরিবহন কোটা অতিক্রম করেছে
Logcat-এ নিম্নলিখিত বার্তাগুলি নির্দেশ করে যে আপনার অ্যাপটি পরিবহন কোটা অতিক্রম করেছে:
I/PFTBT: Transport rejected backup of <PACKAGE>, skipping
--- or ---
I/PFTBT: Transport quota exceeded for package: <PACKAGE>
ব্যাকআপ ডেটার পরিমাণ কমিয়ে আবার চেষ্টা করুন। উদাহরণস্বরূপ, যাচাই করুন যে আপনি কেবল আপনার অ্যাপের ক্যাশে ডিরেক্টরিতে ডেটা ক্যাশে করছেন। ক্যাশে ডিরেক্টরি ব্যাকআপের মধ্যে অন্তর্ভুক্ত নয়।
সম্পূর্ণ ব্যাকআপ সম্ভব নয়
Logcat-এ নিম্নলিখিত বার্তাটি নির্দেশ করে যে সম্পূর্ণ ব্যাকআপ অপারেশন ব্যর্থ হয়েছে কারণ ডিভাইসে এখনও কোনও কী-মান ব্যাকআপ অপারেশন ঘটেনি:
I/BackupManagerService: Full backup not currently possible -- key/value backup
not yet run?
bmgr run কমান্ডটি ব্যবহার করে একটি কী-মান ব্যাকআপ ট্রিগার করুন এবং তারপর আবার চেষ্টা করুন।
এজেন্টের জন্য অপেক্ষা করার সময়সীমা শেষ
Logcat-এ নিম্নলিখিত বার্তাটি নির্দেশ করে যে আপনার অ্যাপটি ব্যাকআপের জন্য চালু হতে ১০ সেকেন্ডের বেশি সময় নিচ্ছে:
12-05 18:59:02.033 1910 2251 D BackupManagerService:
awaiting agent for ApplicationInfo{5c7cde0 com.your.app.package}
12-05 18:59:12.117 1910 2251 W BackupManagerService:
Timeout waiting for agent ApplicationInfo{5c7cde0 com.your.app.package}
12-05 18:59:12.117 1910 2251 W BackupManagerService:
Can't find backup agent for com.your.app.package
লগ আউটপুটে টাইমস্ট্যাম্পের পার্থক্য লক্ষ্য করুন। এই ত্রুটিটি সাধারণত তখন ঘটে যখন আপনার অ্যাপটি ProGuard ছাড়াই মাল্টিডেক্স কনফিগারেশন ব্যবহার করে।
অপ্রবর্তিত ব্যাকআপ অ্যাকাউন্ট
Logcat-এ নিম্নলিখিত বার্তাগুলি নির্দেশ করে যে ব্যাকআপ ডেটাসেটটি শুরু না হওয়ার কারণে ব্যাকআপ বন্ধ করা হয়েছে:
01-31 14:32:45.698 17280 17292 I Backup: [GmsBackupTransport] Try to backup for
an uninitialized backup account.
01-31 14:32:45.699 1043 18255 W PFTBT: Transport failed; aborting backup: -1001
01-31 14:32:45.699 1043 18255 I PFTBT: Full backup completed with status: -1000
adb shell bmgr run কমান্ড দিয়ে ব্যাকআপ ম্যানেজারটি চালান, এবং তারপর আবার ব্যাকআপ নেওয়ার চেষ্টা করুন।
অ্যাপ পদ্ধতিগুলি বলা হয়নি
যেহেতু অটো ব্যাকআপ আপনার অ্যাপটি Application এর বেস ক্লাস দিয়ে চালু করে, তাই আপনার অ্যাপের সেটআপ পদ্ধতিগুলিকে কল নাও করা যেতে পারে। অটো ব্যাকআপ আপনার অ্যাপের কোনও কার্যকলাপও চালু করে না, তাই আপনার অ্যাপটি কোনও কার্যকলাপে সেটআপ করলে আপনি ত্রুটি দেখতে পেতে পারেন। আরও জানতে, Implement BackupAgent পড়ুন।
বিপরীতে, কী-ভ্যালু ব্যাকআপ আপনার অ্যাপ ম্যানিফেস্ট ফাইলে ঘোষিত যেকোনো Application সাবক্লাসের সাথে আপনার অ্যাপ চালু করে।
ব্যাকআপ নেওয়ার জন্য কোনও ডেটা নেই
Logcat-এ নিম্নলিখিত বার্তাগুলি নির্দেশ করে যে আপনার অ্যাপে ব্যাকআপ নেওয়ার জন্য কোনও ডেটা নেই:
I Backup : [FullBackupSession] Package com.your.app.package doesn't have any backup data.
--- or ---
I Backup : [D2dTransport] Package com.your.app.package doesn't have any backup data.
যদি আপনি নিজের BackupAgent প্রয়োগ করে থাকেন , তাহলে সম্ভবত এর অর্থ হল আপনি ব্যাকআপে কোনও ডেটা বা ফাইল যোগ করেননি।