SDV, A/B (সিমলেস) সিস্টেম আপডেটের স্ট্যান্ডার্ড Android পদ্ধতি অনুসরণ করে। AOSP ডকুমেন্টেশন মূলত SDV-এর ক্ষেত্রে প্রযোজ্য। এই পৃষ্ঠায় SDV-এর জন্য নির্দিষ্ট ব্যবহার এবং আপডেট প্যাকেজ তৈরি ও প্রয়োগ করার জন্য পরিচিত ভালো পাথ সম্পর্কে বিস্তারিত তথ্য দেওয়া হয়েছে।
SDV-কে নন-ভার্চুয়াল A/B আপডেট ব্যবহার করার জন্য কনফিগার করা হয়েছে। পরিষেবা বান্ডেল থেকে কাস্টম /oem_ab পার্টিশনের জন্য A/B
আপডেট কনফিগার ও ট্রিগার করতে,
OEM AB পার্টিশন আপডেট দেখুন।
বুট কন্ট্রোল HAL প্রয়োগ করুন
Cuttlefish (sdv_core_cf)-এর জন্য SDV Core ইমেজ,
hardware/interfaces/boot/aidl/default/-এর উপর ভিত্তি করে
বুট কন্ট্রোল HAL-এর স্ট্যান্ডার্ড ইমপ্লিমেন্টেশন প্রদান করে। অন্যান্য বুটলোডারকে অবশ্যই A/B আপডেট
সমর্থন করার জন্য HAL প্রয়োগ করতে হবে।
বিস্তারিত জানতে AOSP ডকুমেন্টেশনের বুট কন্ট্রোল HAL প্রয়োগ করুন বিভাগটি
দেখুন। ইমপ্লিমেন্টেশন পরীক্ষা করতে, আপনি ডিবাগ (eng
এবং userdebug) SDV ইমেজে অন্তর্ভুক্ত bootctl ব্যবহার করতে পারবেন।
OTA প্যাকেজ জেনারেট করুন
আরও জানতে, এটি দেখুন: OTA প্যাকেজ তৈরি করা। এই পৃষ্ঠার নির্দেশাবলী সামান্য বিচ্যুতি সহ AOSP ডকুমেন্টেশন অনুসরণ করে।
সম্পূর্ণ আপডেট
রিপোজিটরি রুট থেকে:
source build/envsetup.sh && lunch sdv_core_cf-aosp_current-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 পরিষেবা ব্যবহার করে আপডেট ইনস্টল করা হয়। SDV বিল্ড ডিবাগ করুন
এতে update_engine_client অন্তর্ভুক্ত থাকে যা আপডেট প্রসেস ডিবাগ ও পরীক্ষা করতে
ব্যবহার করা যেতে পারে।
OTA প্যাকেজ রান ইনস্টল করতে:
system/update_engine/scripts/update_device.py ota_update.zip
আপডেট সঠিকভাবে ইনস্টল করা হলে (চূড়ান্ত স্ট্যাটাস হল
UPDATE_STATUS_UPDATED_NEED_REBOOT এবং ফলাফল হল ErrorCode::kSuccess),
পরের বার রিবুট করার সময় আপডেট অ্যাক্টিভেট করা হবে।
ভার্সনিং
সিস্টেম আপডেটের জন্য, SDV Android-এর OTA প্যাকেজ মেটাডেটা ব্যবহার করে নির্ধারণ করে যে OTA প্যাকেজ প্রয়োজনীয়তা পূরণ করে কিনা এবং ইনস্টল করা যাবে কিনা।
এছাড়াও, APEX-এর জন্য, SDV আপডেট করার ক্ষেত্রে Android-এর ধারণা অনুসরণ করে। তাই, APEX-টি বুটস্ট্র্যাপ APEX না হলে, APEX আপডেট করা যেতে পারে। বুটস্ট্র্যাপ APEX অবশ্যই সিস্টেম আপডেটের মাধ্যমে আপডেট করতে হবে এবং:
- ঘোষিত ভার্সন আগে থেকে ইনস্টল করা ভার্সনের চেয়ে বেশি এবং দুটিই ১-এর চেয়ে বেশি বা সমান,
অথবা,
- ঘোষিত ভার্সন হল একটি প্রি-ইনস্টল না করা APEX এবং ভার্সনটি ব্লকলিস্টে থাকা ভার্সনের চেয়ে বেশি, যদি তালিকাভুক্ত করা হয়।
SDV সাধারণত নেটওয়ার্কের একাধিক সিস্টেমে ডেপ্লয় করা হয়। তাই, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে একটি সিস্টেমে করা আপডেটগুলি সঠিকভাবে কার্যকর করা হয়েছে। তবুও, এই যত্ন সব সিস্টেম সঠিকভাবে যোগাযোগ করতে পারে এমন গ্যারান্টি দেয় না।
একইভাবে, আপনাকে সম্পূর্ণ নেটওয়ার্ক আপডেট করতে হবে, যার জন্য পরিষেবা বান্ডেলের আপডেট একই সময়ে সব মেশিনে ডেপ্লয় করতে হবে অথবা আপডেটে কোনও ব্রেকিং পরিবর্তন থাকলে চলবে না। যেমন, ইন্টারফেসে অসামঞ্জস্যপূর্ণ পরিবর্তন।
যদিও SDV-তে বেমানান পরিবর্তন শনাক্ত করার জন্য কোনও টুলিং নেই, তবে আমাদের নির্দেশিকায় ইন্টারফেসে করা পরিবর্তনগুলি কীভাবে সামঞ্জস্যপূর্ণ করা যায় এবং পরিবর্তনগুলি প্রয়োগ করার জন্য প্রয়োজনীয় পেশাদার পদ্ধতিগুলি বর্ণনা করা হয়েছে।
এছাড়াও, SDV সিস্টেম ও APEX আপডেটের জন্য রোলব্যাক মেকানিজম সাপোর্ট করে। সিস্টেম অনিচ্ছাকৃতভাবে অসন্তোষজনক অবস্থায় চলে গেলে, আমরা শেষ জানা সন্তোষজনক অবস্থায় ফিরে যেতে পারি।