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

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

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

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

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

الصورة

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

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

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

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

مكوّن البرنامج على Android الوصف
خدمة السيارة خدمة إطار عمل AAOS التي توفّر واجهات برمجة تطبيقات للوصول عن بُعد
برنامج تشغيل المهام عن بُعد فئة مكتوبة من قِبل المورّد Service تنفِّذ مهام عن بُعد يمكن لنظام Android واحد تشغيل عدة برامج مهام عن بُعد.
طبقة تجريد الأجهزة (HAL) للوصول عن بُعد يجب تنفيذ هذا الإجراء للوصول عن بُعد.
طبقة تجريدية للتواصل بين نظام التشغيل 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) المحدّدة لرقم تعريف المركبة (على افتراض أنّه سبق أن تم تسجيل وحدة التحكّم في النقل) ويرسل بيانات المهمة ومعرّف العميل إلى وحدة التحكّم في النقل.

في المركبة (يشير النص الغامق إلى المهام التي يتم تنفيذها من خلال نظام التشغيل Android Automotive):

  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>

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

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 لعرض قيمة فارغة.

@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 للوصول عن بُعد

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

يتم تحديد الواجهة فيملف 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

طبقة تجريد الأجهزة (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 محددة استنادًا إلى رقم تعريف المركبة
  • الإبلاغ عن حالة مركبة على سبيل المثال، الاتصال بالإنترنت أو عدم الاتصال به، أو وقت اتصاله بالإنترنت آخر مرة بالخادم البعيد للمهام.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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