إعداد إمكانية الوصول عن بُعد

يقدّم نظام التشغيل Android 14 ميزة الوصول عن بُعد الجديدة، التي تتيح للشركاء تنشيط Android عن بُعد في المركبة لتنفيذ مهام معيّنة. على سبيل المثال، لتنفيذ وضع المرآب طوال الليل لتطبيق التعديلات على البرامج. يجب استخدام مكوّنات متعددة غير تابعة لنظام التشغيل Android من أجل مسار سير العمل التام. لا يحدِّد نظام التشغيل Android مكونات غير المتوافقة معه أو يقدّم طريقة لتنفيذها (تقع هذه المسؤولية على عاتقك).

لمزيد من المعلومات، يُرجى الاطّلاع على الأقسام التالية:

هندسة معمارية

يفترض المحتوى التالي استخدام النموذج التالي للبنية، وهو نموذج افتراضي قد لا يعكس البنية الفعلية. على المصنّعين الأصليين للسيارات تعديل التنفيذ الفعلي وفقًا لبنية المركبات والخوادم.

الصورة

الشكل 1: نموذج البنية

تتألف بنية النموذج من مكوّنات الأجهزة التالية:

مكوّن الجهاز الوصف
معالج التطبيقات المعالج الذي يعمل بنظام التشغيل Android قد يعمل نظام Android على الذاكرة الافتراضية (VM) (وليس على الأجهزة الفعلية) على هذا المعالج.
معالِج المركبات المعالج المسؤول عن التحكّم في طاقة معالج التطبيق
وحدة التحكّم في أنظمة المعلومات عن بُعد (TCU) وحدة المعالجة في المركبة قادرة دائمًا على تلقّي الرسائل عن بُعد من السحابة الإلكترونية. من المفترض أن يكون وحدة التحكّم في النقل (TCU) مفعّلة دائمًا أو في وضع الطاقة المنخفضة. استخدِم الرسائل عن بُعد لإيقاظ وحدة التحكّم في النقل.
خادم الاستيقاظ خادم بعيد يتم تشغيله في السحابة الإلكترونية وهو مسؤول عن التواصل مع وحدة التحكّم في النقل (TCU) في السيارة لإصدار أوامر التفعيل
خادم المهام عن بُعد يعمل خادم المهام البعيدة في السحابة الإلكترونية ويتفاعل مع المستخدمين ويدير المهام البعيدة.

تتألف بنية النموذج من مكونات البرامج التالية، والتي تعمل جميعها على نظام التشغيل Android:

مكوّن البرنامج على Android الوصف
خدمة السيارة خدمة إطار عمل AAOS التي توفّر واجهات برمجة تطبيقات للوصول عن بُعد
برنامج تشغيل المهام عن بُعد فئة مكتوبة من قِبل المورّد Service تنفِّذ مهام عن بُعد يمكن لنظام Android واحد تشغيل عدة برامج عملاء مهام عن بُعد.
واجهة برمجة التطبيقات للوصول عن بُعد يجب تنفيذها للوصول عن بُعد.
طبقة تجريدية للتواصل بين نظام التشغيل AAOS ومكوّن غير مدعوم من Android مثل وحدة التحكّم في ناقل الحركة

في ما يلي وصف مكوّنات البرامج غير المتوافقة مع Android:

مكوّن برنامج غير متوافق مع Android الوصف
برنامج التنشيط برنامج يعمل على وحدة التحكّم في النقل (TCU) ويحافظ على اتصال دائم مع خادم الاستيقاظ ويحافظ أيضًا على اتصال مع HAL لإمكانية الوصول عن بُعد لإرسال المهام عن بُعد إلى "خدمة السيارة".
تنفيذ خادم الاستيقاظ الخادم الذي يتواصل مع برنامج التنشيط الذي يعمل على وحدة التحكّم في النقل يمكنه إرسال طلبات الاستيقاظ إلى برنامج الاستيقاظ.
تنفيذ خادم المهام عن بُعد الخادم الذي يدير المهام البعيدة يتفاعل المستخدمون مع هذا الخادم من أجل إصدار المهام البعيدة ومراقبتها.

سير العمل

يسرد هذا القسم الخطوات في نموذج سير عمل.

نموذج سير العمل

يمكن أن يشبه سير العمل التفصيلي ما يلي:

  1. يركن المستخدم المركبة في المرآب.

  2. يحاول الشريك تعديل بيانات المركبة أثناء الليل عندما يكون من غير المرجّح أن تحدث تفاعلات مع المركبة.

  3. يرسل خادم السحابة الإلكترونية الخاص بالشريك مهمة عن بُعد لنظام التحديث إلى المركبة. وعلى وجه التحديد، وحدة التحكّم في تكنولوجيات المعلومات والاتصال (TCU).

  4. تُوقِظ وحدة التحكّم في النقل (TCU) في المركبة وحدة التحكّم الإلكترونية (ECU) في Android، ويؤدي بدء خدمة من المصنّع الأصلي للجهاز إلى تفعيل وضع "المرآب".

  5. يشغِّل Android وضع Garage لتنزيل التحديثات وتثبيتها من خلال Google Play.

  6. بعد تطبيق التعديل، يضع Android علامة على المهمة على أنّها مكتملة، ثم إما يقطع الاتصال أو يصل إلى مهلة زمنية محدّدة.

سير العمل المفصّل

هناك خطوتان مهمتان مطلوبتان للوصول عن بُعد. الخطوة الأولى هي تسجيل العميل، أي ربط مستخدم معيّن ببرنامج عميل مهام عن بُعد معيّن يعمل على مركبة معيّنة. أما العملية الأخرى فهي تسليم مهمة، والتي تعني تسليم المهمة البعيدة لمستخدم معيّن إلى العميل المعني بالمهمة البعيدة والذي يعمل على المركبة المحدّدة.

تسجيل عميل

لاستخدام ميزة الوصول عن بُعد، على المستخدم فتح تطبيق العميل المعنيّ بالمهام عن بُعد مرة واحدة على الأقل وإكمال عملية تسجيل العميل (يشير النص بخط عريض إلى المهام التي تنفذها AAOS):

  1. عند بدء التشغيل، تحصل خدمة Car Service على معلومات المركبة من وحدة التحكّم في الوصول عن بُعد HAL.

  2. عند بدء التشغيل، يبدأ تطبيق Car Service جميع عملاء المهام البعيدة استنادًا إلى فلتر الغرض والإذن.

  3. عند بدء برنامج تشغيل المهام عن بُعد، يسجِّل نفسه في خدمة السيارة.

  4. تُعلم خدمة السيارات العميل المعنيّ بالمهمة البعيدة بمعلومات التسجيل ، بما في ذلك رقم تعريف المركبة ورقم تعريف العميل. معرّف العميل فريد وقد عيّنه "مركز صيانة السيارات" لهذا العميل. نضمن أنّه فريد بين جميع عملاء المهام البعيدة على المركبة نفسها.

  5. يسجِّل المستخدم الدخول إلى خادم المهام عن بُعد من خلال برنامج إدارة المهام عن بُعد ويفعِّل ميزة الوصول عن بُعد لهذه المركبة. تشمل هذه الخطوة عادةً المصادقة من خلال خادم المهام عن بُعد.

  6. يحمِّل برنامج "مهام عن بُعد" معلومات المستخدم مع رقم تعريف المركبة ومعرّف العميل إلى خادم "مهام عن بُعد" ويطلب منه ربط المستخدم بهذا العميل المحدّد وهذه المركبة المحدّدة.

    قد تتطلّب هذه الخطوة من المستخدم إجراء مصادقة ثنائية إضافية، إذا أردت ذلك.

    يجب أن يُثبت خادم المهام عن بُعد أنّ معرّف المركبة المقدَّم في الطلب يتطابق مع معرّف المركبة الخاص بالمُرسِل، ويمكن إجراء ذلك من خلال إثبات ملكية المركبة.

يجب إجراء عملية تسجيل العميل مرة واحدة لكل مستخدم لكل مركبة، ما لم يتم إجراء إعادة ضبط على الإعدادات الأصلية. يتم تخزين معرّف العميل محليًا في Car Service ويبقى كما هو للعميل نفسه.

الصورة

الشكل 2: سجِّل عميلًا.

إلغاء تسجيل عميل

يمكن للمستخدم إلغاء ربط المركبة بحسابه من المركبة أو من خادم المهام عن بُعد:

  • في المركبة، يمكن للمستخدمين فتح تطبيق برنامج العميل للمهام البعيدة وإصدار طلب إلغاء الربط لإلغاء ربط هذه المركبة بحسابات المستخدمين المرتبطة بها سابقًا.

  • في خادم المهام عن بُعد، يمكن للمستخدمين تسجيل الدخول إلى حساباتهم وإلغاء ربط مركبة سبق ربطها بهذا الحساب.

إذا ألغى المستخدم ربط المركبة بحسابه، يجب أن يزيل خادم المهام عن بُعد عملية الربط المخزّنة للمستخدم المحدّد.

إرسال المهام

في السحابة الإلكترونية:

  1. يستخدم أحد المستخدمين خادم المهام عن بُعد لإرسال مهمة عن بُعد إلى مركبة معيّنة.

  2. يربط خادم المهام عن بُعد رقم تعريف المستخدم برقم تعريف المركبة ورقم تعريف العميل. ويؤدي ذلك إلى إرسال بيانات المهمة ورقم تعريف المركبة ورقم تعريف العميل إلى خادم الاستيقاظ.

  3. يعثر خادم الاستيقاظ على وحدة التحكّم في النقل (TCU) المحدّدة لرقم تعريف المركبة (على افتراض أنّه سبق أن تم تسجيل وحدة التحكّم في النقل) ويرسل بيانات المهمة ومعرّف العميل إلى وحدة التحكّم في النقل.

على المركبة (يشير النص المغلّف إلى المهام التي يؤديها نظام AAOS):

  1. تتلقّى وحدة التحكّم في الترموستات (TCU) المهام عن بُعد من الخادم البعيد.

  2. إذا كان معالج التطبيقات (AP) الذي يشغّل نظام التشغيل AAOS غير مفعّل، يستخدم وحدة التحكّم في النقل (TCU) معالج المركبة (VP) لتفعيل معالج التطبيقات (AP).

  3. تتلقّى خدمة السيارة المهام من وحدة التحكّم في ناقل الحركة (TCU).

  4. توزّع خدمة السيارات المهام على عميل المهام عن بُعد المقابل.

  5. يتلقّى برنامج "عميل المهام البعيدة" المهمة وينفذها.

    (اختياري) يتواصل برنامج "عميل المهام عن بُعد" مع خادم المهام للحصول على مزيد من تفاصيل المهام وينفّذ المهمة.

  6. (اختياري) تُبلغ خدمة العميل للمهام البعيدة عن نتيجة المهمة لخادم المهام.

  7. يُرسِل عميل المهام البعيدة إشعارًا إلى "خدمة السيارات" عند اكتمال المهمة.

  8. إذا لزم الأمر، تعيد خدمة السيارة حالة الطاقة في المركبة.

الصورة

الشكل 3: إكمال المهام

كتابة برنامج تشغيل مهام عن بُعد

توفّر CarRemoteAccessManager واجهة برمجة التطبيقات لميزات الوصول عن بُعد. لمزيد من المعلومات، يُرجى الاطّلاع على CarRemoteAccessManager. عميل المهام البعيدة هو خدمة Android تنفِّذ المهام البعيدة وتستخدم CarRemoteAccessManager. يتطلب ذلك PERMISSION_USE_REMOTE_ACCESS و PERMISSION_CONTROL_REMOTE_ACCESS ويجب الإفصاح عن فلتر أهداف لأجل RemoteTaskClientService، مثل:

<service android:name=".remoteaccess.RemoteTaskClientService"
         android:directBootAware="true"
         android:exported="true">
    <intent-filter>
       <action android:name="android.car.remoteaccess.RemoteTaskClientService" />
    </intent-filter>
</service>

يجب أن يسجِّل عميل المهام البعيدة نفسه في خدمة Car Service أثناء الإنشاء:

public final class RemoteTaskClientService extends Service {
    @Override
    public void onCreate() {
        // mCar = Car.createCar()...
        mRemoteAccessManager = (CarRemoteAccessManager)
            mcar.getCarManager(Car.CAR_REMOTE_ACCESS_SERVICE);
        if (mRemoteAccessManager == null) {
            // Remote access feature is not supported.
            return;
        }
        mRemoteAccessManager.setRemoteTaskClient(executor, mRemoteTaskClient);
    }
}

يجب أن تلغي الدالة onBind لعرض القيمة null.

@Override
public IBinder onBind(Intent intent) {
    return null;
}

تدير خدمة السيارات دورة حياتها. يتم ربط Car Service بهذه الخدمة أثناء التشغيل وعند وصول مهمة عن بُعد. يتم إلغاء ربط "خدمة السيارات" بهذه الخدمة عند اكتمال المَهمّة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إدارة دورة حياة الخدمة.

يتم تشغيل برنامج تشغيل المهام عن بُعد بصفتها مستخدم النظام، لذا لا يمكنه الوصول إلى أي بيانات خاصة بالمستخدم.

يوضّح المثال التالي كيفية معالجة طلبات إعادة الاتصال المسجّلة:

private final class RemoteTaskClient
    implements CarRemoteAccessManager.RemoteTaskClientCallback {
    @Override
    public void onRegistrationUpdated(
        RemoteTaskClientRegistrationInfo info) {
        // Register to remote task server using info.
    }
    @Override
    public void onRemoteTaskRequested(String taskId,
        byte[] data, int remainingTimeSec) {
        // Parses the data and execute the task.
        // Report task result to remote task server.
        mRemoteAccessManager.reportRemoteTaskDone(taskId);
    }
    @Override
    public void onShutdownStarting(CompleteableRemoteTaskFuture future) {
        // Stop the executing task.
        // Clear the pending task queue.
        future.complete();
    }
}

تنفيذ المورّد

ميزة "الوصول عن بُعد" اختيارية ويتم إيقافها تلقائيًا. لتفعيل الميزة، أضِف عنصرًا قابلاً للإزالة والإضافة (RRO) مثل ما يلي:

// res/xml/overlays.xml
<?xml version="1.0" encoding="utf-8"?>
<overlay>
    <item target="array/config_allowed_optional_car_features" value="@array/config_allowed_optional_car_features" />
</overlay>

// res/values/config.xml
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string-array translatable="false" name="config_allowed_optional_car_features">
        <item>car_remote_access_service</item>
    </string-array>
</resources>

// Android.bp
runtime_resource_overlay {
    name: "RemoteAccessOverlay",
    resource_dirs: ["res"],
    manifest: "AndroidManifest.xml",
    sdk_version: "current",
    product_specific: true
}

أو استخدِم الأمر adb التالي على إصدار userdebug/eng:

adb shell cmd car_service enable-feature car_remote_access_service

متطلبات استخدام التطبيق على أجهزة Android

واجهة برمجة التطبيقات للوصول عن بُعد

طبقة HAL (المستوى التجريدي للأجهزة للوصول عن بُعد) هي طبقة تجريد ينفّذها المورّد للتواصل بين نظام التشغيل AAOS ووحدة تحكّم إلكترونية أخرى (مثل وحدة التحكّم في ناقل الحركة). هذه الميزة إلزامية لإتاحة ميزة "الوصول عن بُعد". ولا يلزم تنفيذه إذا لم يتم تنفيذ ميزة الوصول عن بُعد.

يتم تحديد الواجهة فيملف IRemoteAccess.aidl وتتضمّن الطرق التالية:

الفئة الوصف
String getVehicleId() الحصول على معرّف مركبة فريد يمكن أن يتعرّف عليه خادم التنشيط
String getWakeupServiceName() تحصل على اسم خادم الاستيقاظ عن بُعد.
String getProcessorId() تحصل على معرّف معالج فريد يمكن التعرّف عليه من خلال تنشيط العميل.
void setRemoteTaskCallback(IRemoteTaskCallback callback)

تُستخدَم لضبط دالة ردّ اتصال يتم استدعاؤها عند طلب مهمة عن بُعد.

void clearRemoteTaskCallback() تمحو هذه الوظيفة طلب إعادة الاتصال بمهمة عن بُعد تم ضبطه سابقًا.
void notifyApStateChange(in ApState state)

لرصد ما إذا كان معالج التطبيق جاهزًا لتلقّي المهام البعيدة.

يتم تحديد واجهة ردّ الاتصال في IRemoteTaskCallback.aid.

الفئة الوصف
oneway void onRemoteTaskRequested(String clientId, in byte[] data)

دالة ردّ اتصال يتمّ استدعاؤها عند طلب مهمة عن بُعد.

راجِع النموذج المرجعي للتنفيذ باستخدام وحدة تحكّم مركزي (TCU) خارجية. يستخدم التنفيذ بثًا للقراءة يستمر لفترة طويلة لتلقّي المهام البعيدة، وهو متوافق مع الأمر debug التالي:

dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default

Vehicle HAL

لتفعيل ميزة الوصول عن بُعد، يجب أن تتيح واجهة برمجة التطبيقات لخدمات إدارة الهوية (VHAL) السمات التالية:

الفئة الوصف
SHUTDOWN_REQUEST طلب إيقاف تشغيل وحدة التحكّم
VEHICLE_IN_USE
  • لرصد ما إذا كانت المركبة قيد الاستخدام
  • بعد أن يفتح المستخدم قفل المركبة أو عندما يقترب من المركبة يجب أن يكون true.
  • مدة محددة بعد أن يوقف المستخدم المركبة أو عندما يقفل المستخدم المركبة يجب أن يكون false.
  • عند true، لا يحاول نظام AAOS إيقاف المركبة عند اكتمال المهمة عن بُعد.

لمزيد من المعلومات، يُرجى الاطّلاع على خصائص النظام المتوافقة.

وضع صامت

يجب أن يكون وضع السكون متوافقًا مع ميزة الوصول عن بُعد لكي تتمكّن المركبة من بدء التشغيل في وضع السكون لتنفيذ المهام عن بُعد عندما لا يكون هناك مستخدم. في وضع السكون، يتم تشغيل جهاز AAOS مع إيقاف الشاشة والصوت.

يتم التحكّم في الوضع الصامت من خلال ملفَّين sysfs لنظام التشغيل Linux.

الفئة الوصف
/sys/kernel/silent_boot/pm_silentmode_kernel_state

يمثّل الوضع الصامت الحالي.

/sys/kernel/silent_boot/pm_silentmode_hw_state

يمثّل إشارة الجهاز لضبط وضع صامت جديد.

يرسل معالج المركبة إشارة الأجهزة إلى شريحة المعالجة في Android (SoC) لتفعيل/إيقاف الوضع الصامت. يتم كتابة الإشارة (0 أو 1) في ملف ‎ /sys/kernel/silent_boot/pm_silentmode_hw_state. بعد ذلك، يعدّل إطار عمل AAOS /sys/kernel/silent_boot/pm_silentmode_kernel_state وفقًا لذلك، وهو يمثّل الوضع الحالي "الصامت". تتحقّق وحدات AAOS من /sys/kernel/silent_boot/pm_silentmode_kernel_state لمعرفة ما إذا كان النظام في الوضع الصامت أم لا.

عند تلقّي مهمة عن بُعد وبدء تشغيل AAOS، يضبط معالج السيارة الوضع الصامت ويشغّل AAOS لكي يتم تشغيل النظام مع إيقاف الشاشة أو الصوت.

المكونات غير المتوافقة مع Android في المركبات

معالِج المركبات

معالج المركبة هو معالج في المركبة يمكنه التحكّم في الطاقة لمعالج التطبيق الذي يعمل بنظام التشغيل Android. في مثال البنية، تُوقِظ وحدة التحكّم في النقل (TCU) معالج التطبيق من خلال إرسال إشارة إلى معالج المركبة.

المكونات غير المتوافقة مع Android في المركبات

يمكن لوحدة التحكّم في النقل (TCU) في المركبة تلقّي الرسائل عن بُعد في أي وقت.

يتم تشغيل برنامج العميل المسؤول عن تنشيط الجهاز على وحدة التحكّم في السيارة لضمان اتصال دائم بأحد خوادم تنشيط الجهاز عن بُعد.

يمكن لنظام التشغيل AAOS الذي يعمل على نقطة الاتصال التواصل مع برنامج العميل الذي يعمل على وحدة التحكّم في الطاقة (TCU) من خلال HAL للوصول عن بُعد.

الصورة

الشكل 4: وحدة التحكّم في الطاقة (TCU) (برنامج تنشيط الجهاز)

المكونات على السحابة الإلكترونية

خادم الاستيقاظ

يتواصل خادم التنشيط مع برنامج التنشيط على وحدة التحكّم في النقل (TCU) لتنفيذ ما يلي:

  • الحفاظ على اتصال دائم بوحدة التحكّم في النقل (TCU) في المركبة
  • العثور على وحدة تحكّم مركزيّة معيّنة استنادًا إلى رقم تعريف المركبة
  • الإبلاغ عن حالة مركبة على سبيل المثال، الاتصال بالإنترنت أو عدم الاتصال به، أو وقت اتصاله بالإنترنت آخر مرة مع خادم المهام عن بُعد.

في عملية التنفيذ الفعلية، يمكن دمج خادم التفعيل مع خمادم مهمة عن بُعد.

خادم المهام عن بُعد

يدير خادم المهام عن بُعد هذه المهام البعيدة.

  • يتفاعل المستخدم مع الخادم لبدء مهام عن بُعد جديدة ومراقبة المهام عن بُعد.

  • يستخدم خادم الاستيقاظ عن بُعد لإيقاظ معالج التطبيق في المركبات.

  • يتفاعل مع برنامج تشغيل المهام عن بُعد الذي يعمل على المركبة.

  • تخزِّن معلومات تسجيل العميل. يؤدي ذلك إلى ربط مستخدم معيّن ببرنامج عملاء مهام عن بُعد معيّن على مركبة معيّنة.

عادةً ما تكون بيانات المهام التي يتم إرسالها عبر خادم المهام عن بُعد إلى خادم الاستيقاظ، ثم إلى وحدة التحكّم في النقل (TCU) في المركبة، وفي النهاية إلى العميل المعني بالمهام عن بُعد هي معرّف المهمة. يستخدم برنامج "عميل المهام البعيدة" رقم تعريف المهمة لاسترداد المعلومات المفصّلة من خادم المهام البعيدة.

متطلبات الخصوصية والأمان

المهمة الشرط المتطلب
وحدة التحكّم في الطاقة (عميل الاستيقاظ) يجب
  • مصادقة خادم الاستيقاظ
  • ثق بالرمز.
خادم الاستيقاظ يجب
  • لا تسمح إلا بخوادم المهام البعيدة المُدرَجة في القائمة المسموح بها بالاتصال.
  • مصادقة العميل الذي يطلب تنشيط الخدمة
  • أرسِل رسالة التنبيه إلى المركبة المستهدَفة فقط.
برنامج تشغيل المهام عن بُعد يجب
  • مصادقة المستخدم أثناء التسجيل
  • مصادقة خادم المهام عن بُعد
  • استيفاء جميع متطلبات الأمان لخدمة Android على سبيل المثال، الأذونات المحدودة
خادم المهام عن بُعد يجب
  • يجب مصادقة خادم الاستيقاظ.
  • تقديم شهادات المركبات وهذا يعني أنّه يجب مصادقة معرّف المركبة المقدَّم في الطلب للتأكّد من أنّه يتطابق مع معرّف المركبة الخاص بالمُرسِل. إذا لم يكن بالإمكان إثبات ملكية المركبة، يجب استخدام وسائل أخرى للتحقّق من أنّه يملك المركبة حاليًا.
  • مصادقة هوية المستخدم
  • استيفاء جميع متطلبات الأمان لخادم يعالج معلومات المستخدمين

إعادة الضبط على الإعدادات الأصلية ونقل الملكية

إذا أجرى المستخدم عملية إعادة ضبط على الإعدادات الأصلية، تتم امحاة معرّف العميل المخزّن في خدمة السيارة. ومع ذلك، لا يتم إعلام الخوادم (خادم المهام البعيدة وخادم الاستيقاظ عن بُعد). تحتفظ الخوادم بربط بين معرّف العميل الذي انتهت صلاحيته الآن والمركبة. نتيجةً لذلك، إذا بدأ المستخدم مهمة جديدة عن بُعد للمركبة، ستستخدِم المَعلمة رقم تعريف العميل المنتهي الصلاحية. يتم تنشيط المركبة، ولكن لا يمكن تنفيذ المهمة البعيدة لأنّ برنامج تشغيل المهام البعيدة لديه رقم تعريف عميل مختلف لا يتطابق.

في ما يلي وصف لأحد طرق تنفيذ إعادة الضبط على الإعدادات الأصلية.

عندما يُجري المستخدم عملية إعادة ضبط على الإعدادات الأصلية، يطلب منه المورّد تسجيل الدخول إلى خادم المهام عن بُعد وإلغاء ربط المركبة بحسابه إذا سبق للمستخدم ربط المركبة. لا يمكن ضمان إمكانية اتصال الجهاز بالشبكة أثناء عملية إعادة الضبط على الإعدادات الأصلية. لذلك، قد لا يكون من الممكن إصدار طلب إلغاء الربط في وقت إعادة الضبط على الإعدادات الأصلية من الجهاز.

عند نقل ملكية مركبة، يجب تنفيذ بعض العمليات لضمان عدم تمكّن المالك السابق من إصدار مهام عن بُعد للمركبة. على سبيل المثال، قد يُطلب من المالك الجديد إجراء ما يلي:

  • إعادة الضبط على الإعدادات الأصلية يضمن ذلك إعادة إنشاء معرّف العميل. بعد تنفيذ هذه الخطوة، سيظل بإمكان المالك السابق تنشيط المركبة، ولكن لن يعود بإمكانه تنفيذ المهام عن بُعد.

  • افتح تطبيق "عميل المهام البعيدة" واتّبِع عملية إلغاء تسجيل عميل لإلغاء ربط المركبة بحساب المالك السابق. يمكن للمالك الجديد اتّباع عملية تسجيل العميل لربط المركبة بحسابه واستبدال الحساب المرتبط سابقًا.

  • يمكن للمالك الجديد استخدام عملية تسجيل عميل لربط المركبة بحسابه واستبدال الحساب المرتبط سابقًا.

اختبار برنامج "عميل المهام عن بُعد"

نوفّر دليل HAL default المرجعي للوصول عن بُعد لاختبار عملاء المهام البعيدة. يمكنك استخدام الأمر debug التالي لإدخال مهمة عن بُعد زائفة إلى HAL، والتي يتم إعادة توجيهها إلى العميل المهمات عن بُعد إذا قدّمت رقم تعريف العميل الصحيح. يمكنك الحصول على رقم تعريف العميل من خلال تسجيل معلومات التسجيل في عملية تنفيذ العميل المرتبطة بالمهمة البعيدة.

adb root && adb shell dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default --inject-task [clientID] [taskData]