إضافة إمكانية استخدام نظام التشغيل Android Automotive إلى تطبيقك المستنِد إلى نموذج

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

لتشغيل تطبيق السيارة الذي يعمل بنظام التشغيل Android Automotive، يجب تثبيت أحدث إصدار منه. "مضيف النماذج"، والذي يأتي كتطبيق نظام.

نظرة عامة على التطوير

لا تتطلّب إضافة التطبيق المتوافق مع نظام التشغيل Android Automotive سوى بضع خطوات، مثل: الموضحة في الأقسام على هذه الصفحة:

  1. إنشاء وحدة للسيارات
  2. الإفصاح عن توفّر التطبيق لنظام التشغيل Android Automotive
  3. الإفصاح عن CarAppService وCarAppActivity
  4. تعديل تبعيات Gradle

يمكنك استخدام Android Studio Bumblebee أو إصدار أحدث لضمان أنّه تم تفعيل جميع ميزات نظام التشغيل Automotive.

إنشاء وحدة للسيارات

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

بالنسبة لمشروع موجود، اتبع هذه الخطوات لإضافة وحدة سيارة إلى المشروع:

  1. في "استوديو Android"، انقر على ملف > جديد > وحدة جديدة:
  2. اختَر وحدة سيارات، ثم انقر على التالي.
  3. أدخِل اسم التطبيق/المكتبة. هذا هو الاسم الذي يراه المستخدمون تطبيقك على نظام التشغيل Android Automotive.
  4. أدخِل اسم الوحدة.
  5. عدِّل اسم الحزمة ليتطابق مع تطبيقك الحالي.
  6. اختَر واجهة برمجة التطبيقات 29: Android 10 (Q) للحصول على الحد الأدنى من حزمة تطوير البرامج (SDK)، ثم انقر على التالي. تعمل جميع السيارات المتوافقة مع Car App Library (مكتبة تطبيقات السيارات) على نظام التشغيل Android Automotive على الإصدار 29 من واجهة برمجة التطبيقات لنظام التشغيل Android 10 أو الإصدارات الأحدث، لذا فإنّ اختيار هذه القيمة يستهدف الكل للسيارات المتوافقة.

  7. انقر على عدم إضافة أي نشاط، ثم على إنهاء.

إذا كنت تبدأ مشروعًا جديدًا:

  1. في "استوديو Android"، انقر على ملف > جديد > مشروع جديد:
  2. اختَر سيارات من أجل نوع المشروع.
  3. اختر ما مِن نشاط، ثم انقر على التالي.
  4. أدخِل اسمًا لمشروعك. هذا هو الاسم الذي يراه المستخدمون التطبيق على نظام التشغيل Android Automotive.
  5. أدخِل اسم الحزمة. الاطّلاع على قسم أسماء الحِزم لمزيد من التفاصيل حول اختيار اسم الحزمة.
  6. اختَر واجهة برمجة التطبيقات 29: Android 10 (Q) للحصول على الحد الأدنى من حزمة تطوير البرامج (SDK)، ثم انقر على التالي.

    تعمل جميع السيارات المتوافقة مع Car App Library (مكتبة تطبيقات السيارات) على نظام التشغيل Android Automotive على الإصدار 29 من واجهة برمجة التطبيقات لنظام التشغيل Android 10 أو الإصدارات الأحدث، لذا فإنّ اختيار هذه القيمة يستهدف الكل للسيارات المتوافقة.

بعد إنشاء الوحدة في "استوديو Android"، افتح AndroidManifest.xml. ملف في وحدة السيارات الجديدة:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.car.app">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

</manifest>

يحتوي العنصر application على بعض معلومات التطبيق العادية بالإضافة إلى uses-feature الذي يشير إلى توافقه مع نظام التشغيل Android Automotive. لاحظ أنه ليست أنشطة تم تعريفها في البيان.

بعد ذلك، أضِف عناصر uses-feature التالية إلى البيان:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.car.app">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />
    <uses-feature
        android:name="android.software.car.templates_host"
        android:required="true" />

    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.portrait"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.landscape"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera"
        android:required="false" />

</manifest>

يشير عنصر uses-feature الأول إلى أنّ تطبيقك يستخدم "مضيف النماذج". لتشغيله. ضبط عناصر uses-feature الأربعة المتبقية بوضوح على يضمن required="false" عدم تعارض تطبيقك مع ميزات الأجهزة المتاحة. في الأجهزة التي تعمل بنظام التشغيل Android Automotive.

تعديل تبعيات Gradle

داخل وحدة السيارات، يجب إضافة تبعية على عنصر واحد (androidx.car.app:app-automotive)، الذي يتضمّن تنفيذ CarAppActivity المطلوب لتشغيل تطبيقك على نظام التشغيل Android Automotive.

إذا كنت تطوّر تطبيقك للتوافق مع كل من Android Auto وAndroid نظام التشغيل Automotive، ننصحك بإبقاء CarAppService في وحدة منفصلة. التي تشاركها بين وحدات الهاتف المحمول والوحدات الخاصة بالسيارات. إذا كنت باستخدام هذا النهج، تحتاج إلى تحديث وحدة السيارة لتضمين باستخدام تبعيات المشروع التي توفّرها Gradle ، كما هو موضح في المقتطف التالي:

Groovy

buildscript {
    ...
    dependencies {
        ...
        implementation "androidx.car.app:app-automotive:car_app_library_version"
        implementation project(':shared_module_name')
    }
}

Kotlin

buildscript {
    ...
    dependencies {
        ...
        implementation("androidx.car.app:app-automotive:car_app_library_version")
        implementation(project(":shared_module_name"))
    }
}

إعلان الدعم لنظام التشغيل Android Automotive

يُرجى استخدام الإدخال التالي في البيان للإقرار بأنّ تطبيقك متوافق مع التطبيق. نظام التشغيل Android Automotive:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

يشير إدخال البيان هذا إلى ملف XML الذي يعرّف عن السيارة والإمكانيات التي يدعمها تطبيقك.

للإشارة إلى أن لديك تطبيق Car App Library، أضِف ملف XML باسم automotive_app_desc.xml إلى دليل res/xml/ في وحدة نظام التشغيل Android Automotive. يجب أن يتضمّن هذا الملف المحتوى التالي:

<automotiveApp>
    <uses name="template"/>
</automotiveApp>

يُرجى الإفصاح عن CarAppService وCarAppActivity.

كما هو الحال في Android Auto، يستخدم نظام التشغيل Android Automotive CarAppService. التنفيذ لتشغيل تطبيقك. ارجع إلى إنشاء CarAppService والجلسة والإفصاح عن CarAppService في تعليمات بشأن تنفيذ CarAppService وتعريفها.

على عكس Android Auto، عليك تضمين مكوّن تطبيق إضافي، CarAppActivity ليكون بمثابة نقطة دخول إلى نظام التشغيل Android Automotive. التطبيق. يتم تضمين تنفيذ هذا النشاط في عنصر androidx.car.app:app-automotive وهو مسؤول عن التواصل مع تطبيق مضيف النموذج لعرض واجهة المستخدم الخاصة بالتطبيق. يجب أن يكون لديك فقط مثيل واحد لهذا النشاط في البيان الخاص بك، ويجب تعريفه بأنه التالي:

<activity
    android:exported="true"
    android:theme="@android:style/Theme.DeviceDefault.NoActionBar"
    android:name="androidx.car.app.activity.CarAppActivity"
    android:launchMode="singleTask"
    android:label="Your app name">

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <meta-data android:name="distractionOptimized" android:value="true" />

</activity>
  • تم ضبط android:name على اسم الفئة المؤهّلة بالكامل في CarAppActivity. الفئة من العنصر app-automotive.
  • تم ضبط android:exported على true حيث يجب أن يكون النشاط قابلاً للتشغيل من خلال تطبيقًا آخر بخلاف نفسه (أي مُشغِّل التطبيقات)
  • تم تعيين android:launchMode على singleTask بحيث يمكن للمستخدم العودة إلى نفس النشاط من مشغّل التطبيقات في حال إبعادهم عن التطبيق.
  • تم ضبط android:theme على @android:style/Theme.DeviceDefault.NoActionBar، لذا أن التطبيق يشغل مساحة ملء الشاشة المتاحة له.
  • يشير فلتر الأهداف إلى أنّ هذا هو نشاط مشغّل التطبيقات للتطبيق.
  • هناك عنصر <meta-data> يشير إلى نظام التشغيل بأنّ التطبيق يمكنه أن يتم استخدامها أثناء وجود قيود تجربة المستخدم، مثل وقت وجود المركبة الحركة.

بالنسبة إلى تطبيقات التنقّل، هناك بعض التطبيقات الأخرى الإدخالات المطلوبة في البيان لـ CarAppActivity كما هو موضح في ما يلي snippet:

<activity
    android:exported="true"
    android:theme="@android:style/Theme.DeviceDefault.NoActionBar"
    android:name="androidx.car.app.activity.CarAppActivity"
    android:launchMode="singleTask"
    android:label="Your app name">

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <!-- Include the category below ONLY for navigation apps -->
        <category android:name="android.intent.category.APP_MAPS" />
    </intent-filter>

    <!-- Include the intent-filter below ONLY for navigation apps -->
    <intent-filter>
        <action android:name="androidx.car.app.action.NAVIGATE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="geo" />
    </intent-filter>

    <meta-data android:name="distractionOptimized" android:value="true" />

</activity>
  • رمز android.intent.category.APP_MAPS الإضافي الفئة تُعلم النظام بتمكّن تطبيقك من عرض الموقع الجغرافي للمستخدم.
  • يضمن فلتر الأهداف androidx.car.app.action.NAVIGATE أن يحصل المستخدمون على خيار استخدام التطبيق عند التعامل مع نية تنقل ضمنية من لتطبيق سيارة آخر.

اعتبارات أخرى

يجب أخذ هذه الاعتبارات الأخرى في الاعتبار عند تطوير نظام Android Automotive. تطبيق نظام التشغيل:

أسماء الحِزم

بما أنّك توزِّع حزمة APK منفصلة لنظام التشغيل Android Automotive، يمكنك تنفيذ ما يلي: إعادة استخدام اسم الحزمة من تطبيقك على الأجهزة الجوّالة أو إنشاء حزمة جديدة الاسم. إذا كنت تستخدم اسم حزمة مختلفًا، سيكون لتطبيقك إصداران منفصلان من "متجر Play". البيانات. إذا أعدت استخدام اسم الحزمة الحالي، سيتضمّن تطبيقك بطاقة بيانات واحدة عبر كلا المنصتين.

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

يلخص الجدول التالي بعض الاختلافات الرئيسية الأخرى بين الاحتفاظ بحزمتك الحالية أو استخدام اسم حزمة جديد:

الميزة اسم الحزمة نفسه اسم الحزمة الجديدة
بطاقة بيانات المتجر فردية عدة تعليقات
تثبيت على الجهاز وفي السحابة الإلكترونية نعم: إعادة تثبيت التطبيق سريعًا أثناء معالج الإعداد لا
عملية مراجعة متجر Play حظر المراجعات: في حال تعذّر إكمال المراجعة لحِزمة APK واحدة أو حِزم APK أخرى يتم حظر إرسالها في الإصدار نفسه مراجعات فردية
الإحصاءات والمقاييس والمؤشرات الحيوية مجتمعة: يمكنك الفلترة حسب اسم الجهاز حسب طراز السيارات البيانات. فصل
الفهرسة وترتيب نتائج البحث طوِّر مستواك الحالي لا يتم نقل الاشتراكات
الدمج مع التطبيقات الأخرى ليس مطلوبًا على الأرجح إجراء أي تغييرات، وذلك بافتراض مشاركة رمز الوسائط بين حِزمتَي APK قد يتم تحديث التطبيق المعني، مثلاً لتشغيل معرّف الموارد المنتظم (URI) باستخدام "مساعد Google"

محتوى بلا إنترنت

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

في ما يلي بعض النقاط التي يجب وضعها في الاعتبار عند محاولة الحصول على الدعم في وضع عدم الاتصال الإستراتيجية:

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

الأسئلة الشائعة

يمكنك الاطّلاع على الأقسام التالية للحصول على إجابات عن بعض الأسئلة الشائعة حول نظام التشغيل Android Automotive.

هل هناك أي قيود أو اقتراحات لاستخدام حِزم SDK والمكتبات التابعة لجهات خارجية؟

ما مِن إرشادات محدّدة حول استخدام حِزم SDK والمكتبات التابعة لجهات خارجية. إذا اخترت استخدام حِزم تطوير برامج (SDK) ومكتبات تابعة لجهات خارجية، لا تزال مسؤولاً عن صناعة المحتوى. عن الالتزام بجميع متطلبات جودة تطبيقات السيارات

كيف يمكنني نشر تطبيقي الذي يعمل بنظام التشغيل Android Automotive باستخدام Google Play Console؟

وعملية نشر التطبيق تشبه عملية نشر تطبيق هاتف، إلا أنك تستخدم عامل شكل مختلف. لتفعيل نظام التشغيل Android Automotive في تطبيقك. نوع إصدار نظام التشغيل، اتّبِع الخطوات التالية:

  1. فتح Play Console
  2. اختيار تطبيقك
  3. في القائمة اليمنى، انقر على الإصدار > الإعداد > الإعدادات المتقدمة > النموذج .
  4. اختَر إضافة شكل الجهاز >. Android Automotive، ثم اتّبِع التعليمات الواردة في Play Console.

تحديد المشاكل وحلّها

يمكنك الاطّلاع على ما يلي للحصول على مساعدة بشأن بعض السيناريوهات الشائعة لتحديد المشاكل وحلّها. على نظام التشغيل Android Automotive.

  • حتى بعد إلغاء تثبيت تطبيق مكتبة تطبيق السيارة من إعدادات النظام، تظهر لي رسالة خطأ عند محاولة تثبيت إصدار جديد.

    للتأكُّد من إلغاء تثبيت التطبيق، استخدِم الأمر adb uninstall app.package.name