SDV স্ট্যান্ডার্ড অ্যান্ড্রয়েডের A/B (নির্বিঘ্ন) সিস্টেম আপডেট পদ্ধতি অনুসরণ করে। AOSP ডকুমেন্টেশন মূলত SDV-এর জন্য প্রযোজ্য। এই পৃষ্ঠায় SDV-এর নির্দিষ্ট ব্যবহার এবং আপডেট প্যাকেজ তৈরি ও প্রয়োগ করার জন্য পরিচিত নির্ভরযোগ্য পদ্ধতিগুলো বিস্তারিতভাবে বর্ণনা করা হয়েছে।
বর্তমানে SDV নন-ভার্চুয়াল A/B আপডেট ব্যবহার করার জন্য কনফিগার করা আছে।
বুট কন্ট্রোল HAL বাস্তবায়ন করুন
কাটলফিশের জন্য এসডিভি কোর ইমেজ ( sdv_core_cf ) hardware/interfaces/boot/aidl/default/ এর উপর ভিত্তি করে বুট কন্ট্রোল এইচএএল-এর একটি স্ট্যান্ডার্ড ইমপ্লিমেন্টেশন প্রদান করে। এ/বি আপডেট সমর্থন করার জন্য অন্যান্য বুটলোডারকে অবশ্যই এইচএএল ইমপ্লিমেন্ট করতে হবে।
বিস্তারিত জানার জন্য AOSP ডকুমেন্টেশনের "Implement the boot control HAL" অংশটি দেখুন। এই বাস্তবায়ন পরীক্ষা করার জন্য আপনি ডিবাগ ( eng এবং userdebug ) SDV ইমেজে অন্তর্ভুক্ত bootctl ব্যবহার করতে পারেন।
একটি OTA প্যাকেজ তৈরি করুন
আরও জানতে, দেখুন: OTA প্যাকেজ তৈরি করুন । এই পৃষ্ঠার নির্দেশাবলী সামান্য কিছু ব্যতিক্রম ছাড়া AOSP ডকুমেন্টেশন অনুসরণ করে।
সম্পূর্ণ আপডেট
রিপোজিটরি রুট থেকে:
source build/envsetup.sh && lunch sdv_core_cf-trunk_staging-userdebug
mkdir dist_output
m dist DIST_DIR=dist_output
এই কমান্ডগুলো dist_output ডিরেক্টরিতে টার্গেট ফাইল তৈরি করে। sdv_core_cf এর লোকাল বিল্ডের ক্ষেত্রে এটি সাধারণত sdv_core_cf-target_files-$USER.zip হয়ে থাকে।
একটি OTA প্যাকেজ তৈরি করতে, আপনাকে ota_from_target_files ব্যবহার করতে হবে। AOSP-এর মতো নয়, এই প্যাকেজটি m dist এর অংশ হিসেবে বিল্ড করা হয় না।
m ota_from_target_files
ota_from_target_files \
dist_output/sdv_core_cf-target_files-$USER.zip \
ota_update.zip
ক্রমবর্ধমান আপডেট
AOSP- এর মতোই ota_from_target_files আহ্বান:
ota_from_target_files \
-i PREVIOUS-sdv_core_cf-target_files.zip \
dist_new/sdv_core_cf-target_files-$USER.zip \
incremental_ota_update.zip
একটি OTA প্যাকেজ ইনস্টল করুন
`update_engine` সার্ভিস ব্যবহার করে আপডেটগুলো ইনস্টল করা হয়। ডিবাগ এসডিভি বিল্ডগুলোতে update_engine_client অন্তর্ভুক্ত থাকে, যা আপডেট প্রক্রিয়াটি ডিবাগ ও পরীক্ষা করার জন্য ব্যবহার করা যেতে পারে।
একটি OTA প্যাকেজ ইনস্টল করতে চালান:
system/update_engine/scripts/update_device.py ota_update.zip
যদি আপডেটটি সঠিকভাবে ইনস্টল হয় (চূড়ান্ত স্ট্যাটাস UPDATE_STATUS_UPDATED_NEED_REBOOT এবং ফলাফল ErrorCode::kSuccess হলে), তাহলে পরবর্তী রিবুটে আপডেটটি সক্রিয় হবে।
সংস্করণ
সিস্টেম আপডেটের ক্ষেত্রে, কোনো OTA প্যাকেজ প্রয়োজনীয়তা পূরণ করে কিনা এবং ইনস্টল করা যাবে কিনা, তা নির্ধারণ করতে SDV অ্যান্ড্রয়েডের OTA প্যাকেজের মেটাডেটা ব্যবহার করে।
এছাড়াও APEX-এর ক্ষেত্রে, SDV আপডেটেবিলিটি সংক্রান্ত অ্যান্ড্রয়েডের ধারণা অনুসরণ করে। তাই, একটি APEX আপডেট করা যায়, যদি সেটি বুটস্ট্র্যাপ APEX না হয়। বুটস্ট্র্যাপ APEX অবশ্যই সিস্টেম আপডেটের মাধ্যমে আপডেট করতে হয়, এবং হয়:
- ঘোষিত সংস্করণটি পূর্ব-ইনস্টল করা সংস্করণের চেয়ে বেশি, এবং উভয়ই ১-এর সমান বা তার চেয়ে বড়।
অথবা,
- ঘোষিত সংস্করণটি একটি নন-প্রি-ইনস্টলড APEX এবং সংস্করণটি ডিনাইলিস্টে তালিকাভুক্ত সংস্করণের চেয়ে উচ্চতর।
এসডিভি সাধারণত একটি নেটওয়ার্কের একাধিক সিস্টেমে স্থাপন করা হয়। তাই, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে একটিমাত্র সিস্টেমে করা আপডেটগুলো সঠিকভাবে কার্যকর হচ্ছে। তথাপি, এই সতর্কতা সব সিস্টেমের যথাযথ যোগাযোগের নিশ্চয়তা দেয় না।
সম্পূর্ণ নেটওয়ার্ক আপডেট করাও সমানভাবে গুরুত্বপূর্ণ, যার জন্য সার্ভিস বান্ডেলের আপডেটগুলো হয় একই সময়ে সমস্ত মেশিনে প্রয়োগ করতে হবে, অথবা আপডেটগুলোতে কোনো ব্রেকিং চেঞ্জ থাকা চলবে না। উদাহরণস্বরূপ, ইন্টারফেসে কোনো অসঙ্গত পরিবর্তন।
যদিও SDV অসঙ্গত পরিবর্তন শনাক্ত করার জন্য কোনো টুল সরবরাহ করে না, আমাদের নির্দেশিকাগুলোতে ইন্টারফেসে করা পরিবর্তনগুলোর মধ্যে কীভাবে সামঞ্জস্য বিধান করতে হয় এবং সেই পরিবর্তনগুলো স্থাপন করার জন্য প্রয়োজনীয় সর্বোত্তম পদ্ধতিগুলো বর্ণনা করা হয়েছে।
এছাড়াও, SDV সিস্টেম এবং APEX আপডেটের জন্য রোলব্যাক প্রক্রিয়া সমর্থন করে। যদি সিস্টেম অনিচ্ছাকৃতভাবে কোনো অসন্তোষজনক অবস্থায় প্রবেশ করে, তবে আমরা সর্বশেষ জ্ঞাত সন্তোষজনক অবস্থাটি পুনরুদ্ধার করতে পারি।