<uses-feature>

מערכת Google Play משתמשת באלמנטים <uses-feature> שמוצהרים במניפסט של האפליקציה כדי לסנן את האפליקציה ממכשירים שלא עומדים בדרישות החומרה והתוכנה שלה.

כשמציינים את התכונות הנדרשות לאפליקציה, מאפשרים ל-Google Play להציג את האפליקציה רק למשתמשים שהמכשירים שלהם עומדים בדרישות התכונות של האפליקציה, במקום להציג אותה לכל המשתמשים.

מידע חשוב על האופן שבו Google Play משתמשת בתכונות כבסיס לסינון זמין בקטע Google Play וסינון מבוסס-תכונות.

תחביר:
<uses-feature
  android:name="string"
  android:required=["true" | "false"]
  android:glEsVersion="integer" />
נכללים ב:
<manifest>
description:

הכרזה על תכונה אחת של חומרה או תוכנה שבה האפליקציה משתמשת.

מטרת ההצהרה <uses-feature> היא להודיע לכל ישות חיצונית על קבוצת תכונות החומרה והתוכנה שהאפליקציה שלכם תלויה בהן. האלמנט כולל את המאפיין required שמאפשר לציין אם האפליקציה שלכם דורשת את התכונה הזו ולא יכולה לפעול בלעדיה, או שהיא מעדיפה שתהיה לה התכונה אבל היא יכולה לפעול גם בלעדיה.

תמיכה בתכונות עשויה להשתנות בין מכשירי Android, ולכן הרכיב <uses-feature> ממלא תפקיד חשוב ומאפשר לאפליקציה לתאר את התכונות המשתנות בהתאם למכשיר שבהן היא משתמשת.

קבוצת התכונות הזמינות שהאפליקציה מצהירה עליהן תואמת לקבוצת קבועי התכונות שזמינים ב-PackageManager של Android. קבועי התכונות מפורטים בקטע חומר עזר בנושא תכונות במסמך הזה.

צריך לציין כל תכונה ברכיב <uses-feature> נפרד, כך שאם האפליקציה דורשת כמה תכונות, צריך להצהיר על כמה רכיבי <uses-feature>. לדוגמה, אפליקציה שנדרשות לה תכונות של Bluetooth ומצלמה במכשיר מגדירה את שני הרכיבים הבאים:

<uses-feature android:name="android.hardware.bluetooth" android:required="true" />
<uses-feature android:name="android.hardware.camera.any" android:required="true" />

באופן כללי, תמיד צריך להצהיר על רכיבי <uses-feature> לכל התכונות שנדרשות לאפליקציה.

רכיבי <uses-feature> שמוצגים בקוד הם למידע בלבד. כלומר, מערכת Android עצמה לא בודקת אם יש תמיכה בתכונות תואמות במכשיר לפני התקנת אפליקציה.

עם זאת, שירותים אחרים, כמו Google Play, ואפליקציות יכולים לבדוק את ההצהרות של האפליקציה על <uses-feature> כחלק מהטיפול באפליקציה או מהאינטראקציה איתה. לכן חשוב מאוד להצהיר על כל התכונות שבהן האפליקציה משתמשת.

לתכונות מסוימות יכול להיות מאפיין ספציפי שמאפשר להגדיר גרסה של התכונה, כמו הגרסה של Open GL שבה נעשה שימוש (מוצהרת באמצעות glEsVersion). תכונות אחרות, כמו מצלמה, שקיימות או לא קיימות במכשיר, מוצהרות באמצעות המאפיין name.

אמנם הרכיב <uses-feature> מופעל רק במכשירים עם רמת API 4 ומעלה, אבל צריך לכלול את הרכיבים האלה בכל האפליקציות, גם אם הערך של minSdkVersion הוא 3 או פחות. במכשירים עם גרסאות ישנות יותר של הפלטפורמה, הרכיב מתעלם מהרכיב.

הערה: כשמגדירים תכונה, חשוב לזכור שצריך גם לבקש הרשאות בהתאם. לדוגמה, צריך לבקש את ההרשאה CAMERA כדי שהאפליקציה תהיה מסוגלת לגשת ל-Camera API. שליחת הבקשה להרשאה מעניקה לאפליקציה גישה לחומרה ולתוכנה המתאימים. הצהרת התכונות שבהן האפליקציה שלכם משתמשת עוזרת להבטיח תאימות למכשירים.

מאפיינים:
android:name
מציין תכונה יחידה של חומרה או תוכנה שבה האפליקציה משתמשת כמחרוזת מתאר. הערכים החוקיים של המאפיינים מפורטים בקטעים תכונות חומרה ותכונות תוכנה. הערכים של המאפיינים האלה הם תלויי אותיות רישיות.
android:required
ערך בוליאני שקובע אם האפליקציה דורשת את התכונה שצוינה ב-android:name.
  • הצהרה על android:required="true" לגבי תכונה מסוימת מציינת שהאפליקציה לא יכולה לפעול או לא תוכננה לפעול כשהתכונה שצוינה לא קיימת במכשיר.
  • הצהרה על android:required="false" לגבי תכונה מסוימת מציינת שהאפליקציה משתמשת בתכונה אם היא קיימת במכשיר, אבל היא תוכננה לפעול גם בלי התכונה שצוינה במקרה הצורך.

ערך ברירת המחדל של android:required הוא "true".

android:glEsVersion
גרסת OpenGL ES שנדרשת לאפליקציה. 16 הביטים העליונים מייצגים את המספר הראשי, ו-16 הביטים התחתונים מייצגים את המספר המשני. לדוגמה, כדי לציין את גרסת OpenGL ES 2.0, מגדירים את הערך בתור '0x00020000'. כדי לציין את גרסת OpenGL ES 3.2, מגדירים את הערך בתור '0x00030002'.

אפליקציה יכולה לציין עד מאפיין android:glEsVersion אחד במניפסט שלה. אם מצוין יותר מערך אחד, המערכת משתמשת ב-android:glEsVersion עם הערך הגבוה ביותר מבחינה מספרית, ומתעלם מכל הערכים האחרים.

אם לא צוין מאפיין android:glEsVersion באפליקציה, המערכת מניחה שהאפליקציה דורשת רק OpenGL ES 1.0, שיש תמיכה בו בכל המכשירים עם Android.

אפליקציה יכולה להניח שאם פלטפורמה תומכת בגרסה מסוימת של OpenGL ES, היא תומכת גם בכל הגרסאות של OpenGL ES שמספרן נמוך יותר. לכן, לאפליקציה שדורשת גם OpenGL ES 1.0 וגם OpenGL ES 2.0, צריך לציין שהיא דורשת OpenGL ES 2.0.

באפליקציה שיכולה לפעול עם כמה גרסאות של OpenGL ES, צריך לציין רק את גרסת OpenGL ES הנמוכה ביותר מבחינה מספרית שנדרשת לה. הוא יכול לבדוק בזמן הריצה אם יש גרסת OpenGL ES ברמה גבוהה יותר.

למידע נוסף על השימוש ב-OpenGL ES, כולל איך לבדוק את גרסת OpenGL ES הנתמכת בסביבת זמן הריצה, אפשר לעיין במדריך ל-OpenGL ES API.

הופיע לראשונה:
רמת API 4
מידע נוסף:

Google Play וסינון מבוסס-תכונות

Google Play מסנן את האפליקציות שגלויות למשתמשים, כדי שהמשתמשים יוכלו לראות ולהוריד רק אפליקציות שתואמות למכשיר שלהם. אחת הדרכים שבהן הוא מסנן אפליקציות היא לפי תאימות התכונות.

כדי לקבוע את תאימות התכונות של אפליקציה למכשיר של משתמש נתון, מערכת Google Play משווה בין:

  • תכונות שנדרשות לאפליקציה, כפי שהוצהרו באלמנטי <uses-feature> במניפסט של האפליקציה.
  • תכונות שזמינות במכשיר, בחומרה או בתוכנה, כפי שדווחו באמצעות מאפייני מערכת לקריאה בלבד.

כדי להשוות בין תכונות בצורה מדויקת, מנהל החבילות של Android מספק קבוצה משותפת של קבועי תכונות שגם אפליקציות וגם מכשירים משתמשים בהם כדי להצהיר על דרישות ותמיכה בתכונות. המשתנים הקבועים של התכונות הזמינות מפורטים בקטע מאמרי עזרה בנושא תכונות במסמך הזה ובמסמכי העזרה של הכיתה PackageManager.

כשהמשתמש מפעיל את Google Play, האפליקציה שולחת שאילתה למנהל החבילות כדי לקבל את רשימת התכונות הזמינות במכשיר, באמצעות קריאה ל-getSystemAvailableFeatures(). לאחר מכן, אפליקציית Store מעבירה את רשימת התכונות אל Google Play כשהיא יוצרת את הסשן של המשתמש.

בכל פעם שאתם מעלים אפליקציה ל-Google Play Console, מערכת Google Play סורקת את קובץ המניפסט של האפליקציה. הוא מחפש רכיבי <uses-feature> ומעריך אותם בשילוב עם רכיבים אחרים, במקרים מסוימים, כמו רכיבי <uses-sdk> ו-<uses-permission>. אחרי שמגדירים את קבוצת התכונות הנדרשות של האפליקציה, המערכת שומרת את הרשימה הזו באופן פנימי כמטא-נתונים שמשויכים לקובץ ה-APK של האפליקציה ולגרסת האפליקציה.

כשמשתמש מחפש או מדפדף באפליקציות באמצעות אפליקציית Google Play, השירות משווה בין התכונות הנדרשות לכל אפליקציה לבין התכונות הזמינות במכשיר של המשתמש. אם כל התכונות הנדרשות של האפליקציה קיימות במכשיר, Google Play מאפשרת למשתמש לראות את האפליקציה ואולי להוריד אותה.

אם המכשיר לא תומך בתכונה נדרשת כלשהי, Google Play מסנן את האפליקציה כך שהיא לא תהיה גלויה למשתמש או זמינה להורדה.

התכונות שאתם מגדירים ברכיבי <uses-feature> משפיעות ישירות על האופן שבו Google Play מסננת את האפליקציה, לכן חשוב להבין איך Google Play מעריכה את המניפסט של האפליקציה ומגדירה את קבוצת התכונות הנדרשות. בקטעים הבאים מפורט מידע נוסף.

סינון על סמך תכונות שהוגדרו במפורש

תכונה שהוצהרה במפורש היא תכונה שהאפליקציה שלכם מגדירה באלמנט <uses-feature>. הצהרת התכונה יכולה לכלול מאפיין android:required=["true" | "false"] אם אתם מבצעים הידור כנגד API ברמה 5 ומעלה.

כך תוכלו לציין אם האפליקציה זקוקה לתכונה הזו ולא יכולה לפעול כראוי בלעדיה ("true"), או אם היא משתמשת בתכונה אם היא זמינה, אבל תוכננה לפעול גם בלעדיה ("false").

כך Google Play מטפלת בתכונות שהוגדרו במפורש:

  • אם תכונה מוצהרת באופן מפורש כחובה, כפי שמתואר בדוגמה הבאה, Google Play מוסיפה את התכונה לרשימת התכונות הנדרשות של האפליקציה. לאחר מכן, המערכת מסננת את האפליקציה ממשתמשים במכשירים שלא תומכים בתכונה הזו.
    <uses-feature android:name="android.hardware.camera.any" android:required="true" />
  • אם תכונה מוצהרת באופן מפורש כלא נדרשת, כפי שמוצג בדוגמה הבאה, מערכת Google Play לא מוסיפה את התכונה לרשימת התכונות הנדרשות. לכן, תכונה לא נדרשת שהוגדרה במפורש אף פעם לא נלקחת בחשבון במסנן של האפליקציה. גם אם המכשיר לא מספק את התכונה הזו, Google Play עדיין מתייחסת לאפליקציה כאל תואמת למכשיר ומציגה אותה למשתמש, אלא אם חלות כללי סינון אחרים.
    <uses-feature android:name="android.hardware.camera" android:required="false" />
  • אם תכונה מוצהרת באופן מפורש, אבל ללא המאפיין android:required, מערכת Google Play מניחה שהתכונה נדרשת ומגדירה סינון שלה.

באופן כללי, אם האפליקציה שלכם מיועדת לפעול ב-Android מגרסה 1.6 ואילך, המאפיין android:required לא זמין ב-API, ומערכת Google Play מניחה שכל ההצהרות על <uses-feature> הן חובה.

הערה: אם תצהירו על תכונה באופן מפורש ותכללו את המאפיין android:required="false", תוכלו להשבית בפועל את כל הסינון ב-Google Play לגבי התכונה שציינתם.

סינון לפי תכונות משתמעות

תכונה משתמעת היא תכונה שנדרשת לאפליקציה כדי לפעול כראוי, אבל לא מוצהרת באלמנט <uses-feature> בקובץ המניפסט. באופן תיאורטי, מומלץ לכל אפליקציה להצהיר תמיד על כל התכונות שבהן היא משתמשת או שדרושות לה, והיעדר הצהרה על תכונה שבה האפליקציה משתמשת יכול להיחשב כשגיאה.

עם זאת, כהגנה על המשתמשים והמפתחים, מערכת Google Play מחפשת תכונות משתמעות בכל אפליקציה ומגדירה מסננים לתכונות האלה, כמו שהיא עושה לגבי תכונות שמוצהרות באופן מפורש.

יכול להיות שאפליקציה תצטרך תכונה מסוימת אבל לא תצהיר עליה מסיבות כמו:

  • האפליקציה נוצרה בגרסה ישנה יותר של ספריית Android (Android 1.5 ואילך), שבה הרכיב <uses-feature> לא זמין.
  • המפתח מניח בטעות שהתכונה קיימת בכל המכשירים ושאין צורך בהצהרה.
  • המפתח השמיט בטעות את הצהרת התכונה.
  • המפתח מצהיר על התכונה באופן מפורש, אבל ההצהרה לא תקפה. לדוגמה, טעות איות בשם האלמנט <uses-feature> או ערך מחרוזת לא מזוהה למאפיין android:name יגרמו לפסילה של הצהרת התכונה.

כדי להתמודד עם המקרים האלה, מערכת Google Play מנסה לגלות את דרישות התכונות המשתמעות של האפליקציה על ידי בדיקת רכיבים אחרים שמוצהרים בקובץ המניפסט, ובמיוחד רכיבי <uses-permission>.

אם אפליקציה מבקשת הרשאות שקשורות לחומרה, Google Play יוצא מנקודת הנחה שהאפליקציה משתמשת בתכונות החומרה הבסיסיות, ולכן נדרשות לה התכונות האלה, גם אם לא קיימות הצהרות <uses-feature> תואמות. עבור הרשאות כאלה, Google Play מוסיף את תכונות החומרה הבסיסיות למטא-נתונים שהוא מאחסן עבור האפליקציה ומגדיר להן מסננים.

לדוגמה, אם אפליקציה מבקשת את ההרשאה CAMERA, Google Play מניחה שהאפליקציה דורשת מצלמה אחורית (שמצלמת את העולם) גם אם האפליקציה לא מצהירה על רכיב <uses-feature> עבור android.hardware.camera. כתוצאה מכך, Google Play מסנן מכשירים שאין להם מצלמה אחורית.

אם אתם לא רוצים שמערכת Google Play תבצע סינון על סמך תכונה משתמעת ספציפית, צריך להצהיר על התכונה באופן מפורש ברכיב <uses-feature> ולכלול את המאפיין android:required="false". לדוגמה, כדי להשבית את הסינון שמשתמע מההרשאה CAMERA, צריך להצהיר על התכונות הבאות:

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

זהירות: ההרשאות שאתם מבקשים ברכיבי <uses-permission> יכולות להשפיע ישירות על האופן שבו Google Play מסננת את האפליקציה שלכם. בקטע הרשאות שמציינות דרישות לתכונות מפורטת הקבוצה המלאה של ההרשאות שמציינות דרישות לתכונות, ולכן גורמות לסינון.

טיפול מיוחד בתכונה Bluetooth

כשמערכת Google Play קובעת איזה סינון יתבצע ב-Bluetooth, היא מחילה כללים שונים במקצת מהכללים שמפורטים בדוגמה הקודמת.

אם אפליקציה מצהירה על הרשאת Bluetooth ברכיב <uses-permission> אבל לא מצהירה באופן מפורש על תכונת ה-Bluetooth ברכיב <uses-feature>, מערכת Google Play בודקת את הגרסאות של פלטפורמת Android שבהן האפליקציה אמורה לפעול, כפי שצוין ברכיב <uses-sdk>.

כפי שמוצג בטבלה הבאה, Google Play מפעילה סינון של התכונה Bluetooth רק אם האפליקציה מצהירה שהפלטפורמה הנמוכה ביותר או הפלטפורמה המטורגטת שלה היא Android 2.0 (רמת API‏ 5) ואילך. עם זאת, חשוב לזכור שמערכת Google Play מחילה את הכללים הרגילים לסינון כשהאפליקציה מצהירה באופן מפורש על תכונת ה-Bluetooth ברכיב <uses-feature>.

טבלה 1. איך Google Play קובעת את הדרישה לתכונה Bluetooth באפליקציה שמבקשת הרשאת Bluetooth אבל לא מצהירה על התכונה Bluetooth ברכיב <uses-feature>.

אם minSdkVersion הוא… ו-targetSdkVersion הוא התוצאה
‎<=4, או ש-<uses-sdk> לא הוצהר <=4 לא מתבצע סינון של האפליקציה ב-Google Play לפי מכשירים שמתועדת להם תמיכה בתכונה android.hardware.bluetooth.
<=4 ‎>=5 Google Play מסנן את האפליקציה מכל המכשירים שלא תומכים בתכונה android.hardware.bluetooth (כולל גרסאות ישנות יותר).
‎>=5 ‎>=5

הדוגמאות הבאות ממחישות את ההשפעות השונות של הסינון על סמך האופן שבו Google Play מטפל בתכונה Bluetooth.

בדוגמה הראשונה, אפליקציה שמיועדת לפעול ברמות API ישנות יותר מצהירה על הרשאת Bluetooth אבל לא מצהירה על תכונת Bluetooth באלמנט <uses-feature>.
תוצאה: Google Play לא מסנן את האפליקציה מאף מכשיר.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" />
    ...
</manifest>
בדוגמה השנייה, אותה אפליקציה מצהירה גם על רמת API יעד של '5'.
התוצאה: Google Play מתייחס עכשיו לתכונת ה-Bluetooth כחובה, ומסנן את האפליקציה מכל המכשירים שלא מדווחים על תמיכה ב-Bluetooth, כולל מכשירים עם גרסאות ישנות יותר של הפלטפורמה.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
כאן, אותה אפליקציה מצהירה באופן ספציפי על תכונת ה-Bluetooth.
תוצאה: זהה לדוגמה הקודמת: מתבצעת סינון.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
לבסוף, בתרחיש הבא, אותה אפליקציה מוסיפה מאפיין android:required="false".
תוצאה: Google Play משבית את הסינון על סמך תמיכה בתכונות Bluetooth בכל המכשירים.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" android:required="false" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>

בדיקת התכונות הנדרשות לאפליקציה

אפשר להשתמש בכלי aapt2, שמצורף ל-Android SDK, כדי לקבוע איך Google Play מסננת את האפליקציה שלכם על סמך התכונות וההרשאות שהוצהרו בה. כדי לעשות זאת, מריצים את aapt2 עם הפקודה dump badging. הפעולה הזו גורמת ל-aapt2 לנתח את המניפסט של האפליקציה ולהחיל את אותם הכללים שבהם Google Play משתמשת כדי לקבוע את התכונות הנדרשות לאפליקציה.

כדי להשתמש בכלי:

  1. יוצרים ומיצאים את האפליקציה כקובץ APK לא חתום. אם אתם מפתחים ב-Android Studio, אתם יכולים ליצור את האפליקציה באמצעות Gradle באופן הבא:
    1. פותחים את הפרויקט ובוחרים באפשרות הפעלה > עריכת הגדרות.
    2. לוחצים על סימן הפלוס ליד הפינה הימנית העליונה של החלון Run/Debug Configurations.
    3. בוחרים באפשרות Gradle.
    4. בשדה Name, מזינים 'APK לא חתום'.
    5. בוחרים את המודול בקטע Gradle project.
    6. מזינים 'הרכבה' בקטע משימות.
    7. בוחרים באפשרות OK כדי להשלים את ההגדרה החדשה.
    8. מוודאים שהגדרת ההרצה Unsigned APK מסומנת בסרגל הכלים, ובוחרים באפשרות Run > Run 'Unsigned APK'.
    חבילת ה-APK הלא חתומה נמצאת בתיקייה <ProjectName>/app/build/outputs/apk/.
  2. מאתרים את הכלי aapt2, אם הוא עדיין לא נמצא ב-PATH. אם אתם משתמשים ב-SDK Tools r8 ואילך, תוכלו למצוא את aapt2 בתיקייה <SDK>/build-tools/<tools version number>.

    הערה: עליכם להשתמש בגרסה של aapt2 שסופקה לרכיב Build-Tools העדכני ביותר שזמין. אם אתם לא משתמשים ברכיב Build-Tools העדכני ביותר, תוכלו להוריד אותו באמצעות Android SDK Manager.

  3. מריצים את aapt2 באמצעות התחביר הזה:
$ aapt2 dump badging <path_to_exported_.apk>

דוגמה לפלט של הפקודה לדוגמה השנייה של Bluetooth שצוינה למעלה:

$ ./aapt2 dump badging BTExample.apk
package: name='com.example.android.btexample' versionCode='' versionName=''
uses-permission:'android.permission.BLUETOOTH_ADMIN'
uses-feature:'android.hardware.bluetooth'
sdkVersion:'3'
targetSdkVersion:'5'
application: label='BT Example' icon='res/drawable/app_bt_ex.png'
launchable activity name='com.example.android.btexample.MyActivity'label='' icon=''
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'small' 'normal' 'large'
locales: '--_--'
densities: '160'

מסמך עזר בנושא תכונות

בקטעים הבאים מפורט מידע על מאפייני חומרה, מאפייני תוכנה וקבוצות של הרשאות שמציינים דרישות ספציפיות לתכונות.

תכונות חומרה

בקטע הזה מוצגות תכונות החומרה שנתמכות בגרסה העדכנית ביותר של הפלטפורמה. כדי לציין שהאפליקציה משתמשת בתכונה חומרה או דורשת אותה, מגדירים את הערך המתאים, שמתחיל ב-"android.hardware", במאפיין android:name. בכל פעם שמצהירים על תכונת חומרה, צריך להשתמש ברכיב <uses-feature> נפרד.

תכונות של חומרת אודיו

android.hardware.audio.low_latency
המערכת משתמשת בצינור עיבוד הנתונים של האודיו במכשיר עם זמן אחזור קצר, כדי לצמצם את העיכובים בזמן העיבוד של קלט או פלט אודיו.
android.hardware.audio.output
האפליקציה מעבירה קול באמצעות הרמקולים של המכשיר, שקע האודיו, יכולות הסטרימינג של Bluetooth או מנגנון דומה.
android.hardware.audio.pro
האפליקציה משתמשת ביכולות הביצועים והפונקציונליות המתקדמות של האודיו במכשיר.
android.hardware.microphone
המערכת מתעדת אודיו באמצעות המיקרופון של המכשיר.

תכונות חומרה של Bluetooth

android.hardware.bluetooth
האפליקציה משתמשת בתכונות ה-Bluetooth של המכשיר, בדרך כלל כדי לתקשר עם מכשירי Bluetooth אחרים.
android.hardware.bluetooth_le
האפשרות הזו מאפשרת לאפליקציה להשתמש בתכונות הרדיו של Bluetooth עם צריכת אנרגיה נמוכה (BLE) במכשיר.

תכונות חומרה של המצלמה

הערה: כדי למנוע סינון מיותר של האפליקציה על ידי Google Play, מוסיפים את הערך android:required="false" לכל תכונת מצלמה שהאפליקציה יכולה לפעול בלעדיה. אחרת, Google Play תתייחס לתכונה כחובה ותימנע ממכשירים שלא תומכים בה לגשת לאפליקציה.

תמיכה במסך גדול

חלק מהמכשירים עם מסך גדול לא תומכים בכל התכונות של המצלמה. בדרך כלל, מחשבי Chromebook לא כוללים מצלמה אחורית (שמכוונת אל העולם), פוקוס אוטומטי או פלאש. אבל ל-Chromebooks יש מצלמות קדמיות (מול המשתמש), והם מחוברים לעיתים קרובות למצלמות חיצוניות.

כדי לספק תמיכה בסיסית במצלמה ולהפוך את האפליקציה לזמינה למכשירים רבים ככל האפשר, מוסיפים למניפסט של האפליקציה את הגדרות התכונות הבאות של המצלמה:

<uses-feature android:name="android.hardware.camera.any" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />

משנים את הגדרות התכונה כך שתתאים לתרחישי השימוש של האפליקציה. עם זאת, כדי שהאפליקציה תהיה זמינה למספר המכשירים הגדול ביותר, תמיד צריך לכלול את המאפיין required כדי לציין באופן מפורש אם תכונה מסוימת היא חובה.

רשימת התכונות
android.hardware.camera.any

האפליקציה משתמשת באחת מהמצלמות של המכשיר או במצלמה חיצונית שמחוברת למכשיר. משתמשים בתכונה הזו במקום ב-android.hardware.camera או ב-android.hardware.camera.front אם האפליקציה לא דורשת שהמצלמה תהיה מופנית לאחור (לעולם) או קדימה (למשתמש), בהתאמה.

ההרשאה CAMERA מובילה למסקנה שהאפליקציה שלכם משתמשת גם ב-android.hardware.camera. מצלמה אחורית היא תכונה חובה, אלא אם android.hardware.camera מוצהרת עם android:required="false".

android.hardware.camera

האפליקציה משתמשת במצלמה האחורית (הצופה החוצה) של המכשיר.

זהירות: במכשירים כמו Chromebooks שיש להם רק מצלמה קדמית (מול המשתמש), התכונה הזו לא נתמכת. משתמשים ב-android.hardware.camera.any אם האפליקציה יכולה להשתמש בכל מצלמה, ללא קשר לכיוון שאליו המצלמה פונה.

הערה: ההרשאה CAMERA מתייחסת למצלמה אחורית כתכונה נדרשת. כדי לוודא שנעשה סינון תקין ב-Google Play כשהמניפסט של האפליקציה כולל את ההרשאה CAMERA, צריך לציין בבירור שהאפליקציה משתמשת בתכונה camera ולציין אם היא נדרשת, למשל:
<uses-feature android:name="android.hardware.camera" android:required="false" />

android.hardware.camera.front

האפליקציה משתמשת במצלמה הקדמית (הפונה למשתמש) של המכשיר.

ההרשאה CAMERA מתייחסת גם לשימוש של האפליקציה ב-android.hardware.camera. מצלמה אחורית היא תכונה חובה, אלא אם android.hardware.camera מוצהרת עם android:required="false".

זהירות: אם האפליקציה שלכם משתמשת ב-android.hardware.camera.front אבל לא מצהירה באופן מפורש על android.hardware.camera באמצעות android.required="false", Google Play מסנן מכשירים שאין להם מצלמה אחורית (כמו Chromebooks). אם האפליקציה תומכת במכשירים עם מצלמות קדמית בלבד, צריך להצהיר על android.hardware.camera עם android.required="false" כדי למנוע סינון מיותר.

android.hardware.camera.external

האפליקציה מתקשרת עם מצלמה חיצונית שהמשתמש מחבר למכשיר. התכונה הזו לא מבטיחה שמצלמה חיצונית תהיה זמינה לאפליקציה.

ההרשאה CAMERA מובילה למסקנה שהאפליקציה שלכם משתמשת גם ב-android.hardware.camera. מצלמה אחורית היא תכונה חובה, אלא אם android.hardware.camera מוצהרת עם android:required="false".

android.hardware.camera.autofocus

האפליקציה משתמשת בתכונה של התמקדות אוטומטית שנתמכת במצלמה של המכשיר.

הערה: ההרשאה CAMERA מתייחסת לכך שהתכונת 'מיקוד אוטומטי' היא חובה. כדי לוודא שמתבצע סינון תקין ב-Google Play כשהמניפסט של האפליקציה כולל את ההרשאה CAMERA, צריך לציין במפורש שהאפליקציה משתמשת בתכונה של התמקדות אוטומטית, ולציין אם היא נדרשת או לא, למשל:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />.

android.hardware.camera.flash

האפליקציה משתמשת בתכונת הפלאש שנתמכת במצלמה של המכשיר.

android.hardware.camera.capability.manual_post_processing

האפליקציה משתמשת בתכונה MANUAL_POST_PROCESSING שנתמכת במצלמה של המכשיר.

התכונה הזו מאפשרת לאפליקציה לשנות את פונקציונליות איזון הלבן האוטומטי של המצלמה. משתמשים ב-android.colorCorrection.transform, ב-android.colorCorrection.gains וב-android.colorCorrection.mode של TRANSFORM_MATRIX.

android.hardware.camera.capability.manual_sensor

האפליקציה משתמשת בתכונה MANUAL_SENSOR שנתמכת במצלמה של המכשיר.

התכונה הזו כוללת תמיכה בנעילה אוטומטית של החשיפה (android.control.aeLock), שמאפשרת לזמן החשיפה ולרגישות של המצלמה להישאר קבועים בערכים ספציפיים.

android.hardware.camera.capability.raw

האפליקציה משתמשת בתכונה RAW שנתמכת במצלמה של המכשיר.

התכונה הזו מאפשרת לשמור קובצי DNG (קובצי RAW) במכשיר. המצלמה של המכשיר מספקת את המטא-נתונים הקשורים ל-DNG שנדרשים כדי שהאפליקציה תוכל לעבד את התמונות הגולמיות ישירות.

android.hardware.camera.level.full
האפליקציה משתמשת ברמת התמיכה FULL בצילום תמונות שמספקת לפחות אחת מהמצלמות של המכשיר. התמיכה ב-FULL כוללת יכולות של צילום רצף, בקרה לפי פריים ובקרה ידנית של עיבוד לאחר הצילום. מידע נוסף זמין במאמר INFO_SUPPORTED_HARDWARE_LEVEL_FULL.

תכונות חומרה של ממשק המשתמש של המכשיר

android.hardware.type.automotive

האפליקציה תוכננה להציג את ממשק המשתמש שלה במספר מסכים ברכב. המשתמש יוצר אינטראקציה עם האפליקציה באמצעות לחצנים פיזיים, מסך מגע, פקדים רוטורים וממשקים שדומים לעכבר. המסכים של הרכב מופיעים בדרך כלל במסוף המרכזי או בלוח המחוונים של הרכב.

הערה: מידע נוסף על השימוש בתכונה הזו והנחיות ליצירת אפליקציות לרכב זמין במאמר הפצה לרכבים.

android.hardware.type.television

(האפשרות הזו הוצאה משימוש. במקום זאת, צריך להשתמש ב- android.software.leanback).

האפליקציה תוכננה כך שממשק המשתמש שלה יוצג בטלוויזיה. התכונה הזו מגדירה את 'טלוויזיה' כחוויית צפייה רגילה בסלון: האפליקציה מוצגת במסך גדול, המשתמש יושב רחוק והקלט העיקרי הוא משהו כמו מקש D, ולא עכבר, סמן או מכשיר מגע.

android.hardware.type.watch
המערכת של האפליקציה תוכננה כך שממשק המשתמש שלה יוצג בשעון. שעון נתון על הגוף, למשל על פרק כף היד. המשתמש קרוב מאוד למכשיר בזמן האינטראקציה איתו.
android.hardware.type.pc

האפליקציה תוכננה כך שממשק המשתמש שלה יוצג במכשירי Chromebook. התכונה הזו משביתה את הדמיית הקלט של העכבר ולוח המגע, כי במכשירי Chromebook נעשה שימוש בחומרה של עכבר ולוח מגע. קלט עכבר

הערה: צריך להגדיר את הערך required="false" לרכיב הזה. אחרת, האפליקציה לא תהיה זמינה במכשירים אחרים מלבד Chromebooks בחנות Google Play.

תכונות של חומרה לזיהוי טביעות אצבע

android.hardware.fingerprint
המערכת קוראת את טביעות האצבע באמצעות החומרה הביומטרית של המכשיר.

מאפייני החומרה של גיימפאד

android.hardware.gamepad
המערכת מתעדת את הקלט של שלט הגיימינג, מהמכשיר עצמו או מגיימפאד מחובר.

מאפייני חומרה של אינפרה-אדום

android.hardware.consumerir
הרשאה שמאפשרת לאפליקציה להשתמש ביכולות האינפרה-אדום (IR) של המכשיר, בדרך כלל כדי לתקשר עם מכשירי IR אחרים של צרכנים.

תכונות חומרה למיקום

android.hardware.location
המערכת משתמשת בתכונה אחת או יותר במכשיר כדי לקבוע את המיקום, כמו מיקום GPS, מיקום ברשת או מיקום תא.
android.hardware.location.gps

האפליקציה משתמשת בקואורדינטות מיקום מדויקות שמתקבלות ממקלט של מערכת מיקום גלובלית (GPS) במכשיר.

שימוש בתכונה הזו מעיד על כך שהאפליקציה משתמשת גם בתכונה android.hardware.location, אלא אם תכונה ההורה הזו מוצהרת באמצעות המאפיין android:required="false".

android.hardware.location.network

האפליקציה משתמשת בקואורדינטות מיקום משוערות שהתקבלו ממערכת למיקום גיאוגרפי מבוססת-רשת שנתמכת במכשיר.

שימוש בתכונה הזו מעיד על כך שהאפליקציה משתמשת גם בתכונה android.hardware.location, אלא אם תכונה ההורה הזו מוצהרת באמצעות המאפיין android:required="false".

תכונות חומרה של NFC

android.hardware.nfc
האפשרות הזו מאפשרת לאפליקציה להשתמש בתכונות הרדיו של תקשורת מטווח קצר (NFC) במכשיר.
android.hardware.nfc.hce

האפליקציה משתמשת בתוכנה שמאפשרת להשתמש בכרטיס NFC שמתארח במכשיר.

תכונות חומרה של OpenGL ES

android.hardware.opengles.aep
האפליקציה משתמשת בחבילת התוספים של OpenGL ES ל-Android שמותקנת במכשיר.

תכונות חומרה של חיישנים

android.hardware.sensor.accelerometer
התנועה מזוהה על ידי האפליקציה באמצעות נתוני תנועה מהתאוצה של המכשיר. לדוגמה, אפליקציה עשויה להשתמש במדדי תאוצה כדי לקבוע מתי לעבור בין כיוון לאורך לכיוון לרוחב.
android.hardware.sensor.ambient_temperature
המערכת משתמשת בחיישן הטמפרטורה הסביבתית (האטמוספרית) של המכשיר. לדוגמה, אפליקציית מזג אוויר יכולה לדווח על טמפרטורה בתוך הבית או בחוץ.
android.hardware.sensor.barometer
הנתונים באפליקציה מתקבלים מהברומטר של המכשיר. לדוגמה, אפליקציית מזג האוויר עשויה לדווח על לחץ האוויר.
android.hardware.sensor.compass
המערכת משתמשת במגנטומטר (מצפן) של המכשיר. לדוגמה, באפליקציית ניווט יכול להופיע הכיוון הנוכחי שאליו פונה המשתמש.
android.hardware.sensor.gyroscope
המערכת משתמשת בג'ירוסקופ של המכשיר כדי לזהות סיבוב וסיבוב קל, וכך יוצרת מערכת כיוון עם שישה צירים. בעזרת החיישן הזה, האפליקציה יכולה לזהות בצורה חלקה יותר מתי צריך לעבור בין המצבים 'לאורך' ו'לרוחב'.
android.hardware.sensor.hifi_sensors
המערכת משתמשת בחיישנים של המכשיר ברזולוציה גבוהה (Hi-Fi). לדוגמה, אפליקציית גיימינג עשויה לזהות את התנועות המדויקות של המשתמש.
android.hardware.sensor.heartrate
המערכת משתמשת במוניטור הדופק של המכשיר. לדוגמה, אפליקציית כושר עשויה לדווח על מגמות בדופק של משתמש לאורך זמן.
android.hardware.sensor.heartrate.ecg
הבדיקה מתבצעת באמצעות חיישן קצב הלב של מכשיר האק"ג (ECG). לדוגמה, אפליקציית כושר עשויה לדווח על מידע מפורט יותר לגבי קצב הלב של המשתמש.
android.hardware.sensor.light
המערכת משתמשת בחיישני האור של המכשיר. לדוגמה, אפליקציה עשויה להציג אחת משתי ערכות צבעים על סמך תנאי התאורה הסביבתית.
android.hardware.sensor.proximity
המערכת משתמשת בחיישן הקרבה של המכשיר. לדוגמה, אפליקציית טלפוניה עשויה להשבית את המסך של המכשיר כשהיא מזהה שהמשתמש מחזיק את המכשיר קרוב לגוף.
android.hardware.sensor.relative_humidity
הנתונים באפליקציה מתקבלים בחיישן הלחות היחסית של המכשיר. לדוגמה, אפליקציית מזג האוויר עשויה להשתמש ברמת הלחות כדי לחשב את נקודת הטל הנוכחית ולדווח עליה.
android.hardware.sensor.stepcounter
המערכת משתמשת בספירת הצעדים של המכשיר. לדוגמה, אפליקציית כושר עשויה לדווח על מספר הצעדים שהמשתמש צריך לעשות כדי להשיג את יעד מספר הצעדים היומי שלו.
android.hardware.sensor.stepdetector
המערכת משתמשת בגלאי הצעדים של המכשיר. לדוגמה, אפליקציית כושר עשויה להשתמש במרווח הזמן בין השלבים כדי להסיק מהו סוג הפעילות הגופנית שהמשתמש מבצע.

תכונות של חומרת המסך

android.hardware.screen.landscape
android.hardware.screen.portrait

האפליקציה דורשת שהמכשיר יהיה בכיוון לאורך או לרוחב. אם האפליקציה תומכת בשני הכיוונים, אין צורך להצהיר על אף אחת מהתכונות.

לדוגמה, אם האפליקציה שלכם דורשת כיוון לאורך, תוכלו להצהיר על התכונה הבאה כדי שרק במכשירים שתומכים בכיוון לאורך, תמיד או לפי בחירת המשתמש, ניתן יהיה להריץ את האפליקציה:

<uses-feature android:name="android.hardware.screen.portrait" />

ההנחה היא ששתי כיווני התצוגה לא נדרשים כברירת מחדל, כך שהאפליקציה יכולה להתאים למכשירים שתומכים באחד משני כיווני התצוגה או בשניהם. עם זאת, אם אחת מהפעילויות מבקשת לפעול בכיוון ספציפי באמצעות המאפיין android:screenOrientation, ההצהרה הזו מרמזת שהאפליקציה שלכם דורשת את הכיוון הזה.

לדוגמה, אם מגדירים את android:screenOrientation עם "landscape", "reverseLandscape" או "sensorLandscape", האפליקציה תהיה זמינה רק במכשירים שתומכים בכיוון לרוחב.

מומלץ להצהיר על הדרישה לכיוון הזה באמצעות רכיב <uses-feature>. אם מגדירים את הכיוון של הפעילות באמצעות android:screenOrientation אבל לא דורשים אותו בפועל, אפשר להשבית את הדרישה על ידי הצהרה על הכיוון באמצעות אלמנט <uses-feature> והכללת android:required="false".

כדי לשמור על תאימות לאחור, כל מכשיר עם Android מגרסה 3.1 (רמת API‏ 12) ומטה תומך גם בכיוון לרוחב וגם בכיוון לאורך.

תכונות של חומרה טלפונית

android.hardware.telephony
השירות משתמש בתכונות הטלפוניה של המכשיר, כמו רדיו טלפוניה עם שירותי תקשורת נתונים.
android.hardware.telephony.cdma

האפליקציה משתמשת במערכת הרדיו של הטלפון Code Division Multiple Access‏ (CDMA).

כשמשתמשים בתכונה הזו, האפליקציה מרמזת שהיא משתמשת גם בתכונה android.hardware.telephony, אלא אם תכונה ההורה הזו מוצהרת באמצעות android:required="false".

android.hardware.telephony.gsm

האפליקציה משתמשת במערכת הרדיו של טלפוניה מסוג Global System for Mobile Communications‏ (GSM).

כשמשתמשים בתכונה הזו, האפליקציה מניחה שהיא משתמשת גם בתכונה android.hardware.telephony, אלא אם תכונה ההורה הזו מוצהרת באמצעות android:required="false".

תכונות החומרה של מסך המגע

android.hardware.faketouch

האפליקציה משתמשת באירועי אינטראקציה בסיסיים של מגע, כמו הקשה וגרירה.

כשהתכונה הזו מוצהרת כחובה, היא מציינת שהאפליקציה תואמת למכשיר רק אם למכשיר יש מסך מגע "מגע מזויף" או מסך מגע אמיתי.

מכשיר עם ממשק מגע מזויף מספק מערכת קלט של משתמש שמחקה קבוצת משנה של היכולות של מסך מגע. לדוגמה, עכבר או שלט רחוק יכולים להזיז סמן במסך.

אם האפליקציה שלכם דורשת אינטראקציה בסיסית של הצבעה ולחיצה, והיא לא פועלת רק עם שלט עם לחצני חיצים, צריך להצהיר על התכונה הזו. מכיוון שזו רמת האינטראקציה המינימלית עם מגע, אפשר להשתמש באפליקציה שמצהירה על התכונה הזו גם במכשירים עם ממשקי מגע מורכבים יותר.

כברירת מחדל, האפליקציות דורשות את התכונה android.hardware.faketouch. אם אתם רוצים להגביל את האפליקציה למכשירים שיש בהם רק מסך מגע, עליכם להצהיר באופן מפורש על הדרישה למסך מגע באופן הבא:

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

כל האפליקציות שלא דורשות באופן מפורש את android.hardware.touchscreen, כפי שמתואר בדוגמה הבאה, פועלות גם במכשירים עם android.hardware.faketouch.

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
android.hardware.faketouch.multitouch.distinct

האפליקציה עוקבת אחרי שתי "אצבעות" נפרדות או יותר בממשק מגע מזויף. זוהי קבוצה גדולה יותר של התכונה android.hardware.faketouch. כשהתכונה הזו מוצהרת כחובה, היא מציינת שהאפליקציה תואמת למכשיר רק אם המכשיר מעתיק מעקב נפרד של שני אצבעות או יותר, או אם יש לו מסך מגע בפועל.

בניגוד למגע מרובה נפרדים שמוגדר על ידי android.hardware.touchscreen.multitouch.distinct, מכשירי קלט שתומכים במגע מרובה נפרדים עם ממשק מגע מזויף לא תומכים בכל התנועות עם שתי אצבעות, כי הקלט מומר לתנועת הסמן במסך. כלומר, במכשירים כאלה, תנועות באצבע אחת גורמות להזזת הסמן, החלקות בשתי אצבעות גורמות לאירועי מגע באצבע אחת, ותנועות אחרות בשתי אצבעות גורמות לאירועי מגע בשתי אצבעות.

מכשיר עם משטח מגע שניתן להזיז באמצעות שני אצבעות כדי להזיז את הסמן יכול לתמוך בתכונה הזו.

android.hardware.faketouch.multitouch.jazzhand

האפליקציה עוקבת אחרי חמישה 'אצבעות' נפרדות או יותר בממשק מגע מזויף. זוהי קבוצה גדולה יותר של התכונה android.hardware.faketouch. כשהתכונה הזו מוצהרת כחובה, היא מציינת שהאפליקציה תואמת למכשיר רק אם המכשיר מעתיק מעקב נפרד של חמישה אצבעות או יותר, או אם יש לו מסך מגע בפועל.

בניגוד למגע מרובה ייחודי שמוגדר על ידי android.hardware.touchscreen.multitouch.jazzhand, מכשירי קלט שתומכים במגע מרובה עם תנועת יד משושה עם ממשק מגע מזויף לא תומכים בכל התנועות עם חמש אצבעות, כי הקלט מומר לתנועת הסמן במסך. כלומר, תנועות עם אצבע אחת במכשיר כזה מזיזות את הסמן, תנועות עם כמה אצבעות גורמות לאירועי מגע עם אצבע אחת להתרחש, ותנועות אחרות עם כמה אצבעות מפעילות את אירועי המגע המתאימים עם כמה אצבעות.

מכשיר עם משטח מגע משושה לתנועת הסמן יכול לתמוך בתכונה הזו.

android.hardware.touchscreen

האפליקציה משתמשת ביכולות של מסך המגע של המכשיר כדי לבצע תנועות אינטראקטיביות יותר מאירועי מגע בסיסיים, כמו תנועת משיכה. זוהי קבוצה גדולה יותר של התכונה android.hardware.faketouch.

כברירת מחדל, כל האפליקציות דורשות את התכונה הזו, ולכן הן לא זמינות במכשירים שמספקים רק ממשק "מגע מזויף" ממוּעַל. כדי להפוך את האפליקציה לזמינה במכשירים עם ממשק מגע מזויף, או אפילו במכשירים עם לחצני חיצים בלבד, אפשר להצהיר במפורש שלא נדרש מסך מגע באמצעות android.hardware.touchscreen עם android:required="false". מוסיפים את ההצהרה הזו אם האפליקציה משתמשת בממשק מסך מגע אמיתי, אבל לא דורשת אותו. כל האפליקציות שלא דורשות באופן מפורש את android.hardware.touchscreen פועלות גם במכשירים עם android.hardware.faketouch.

אם האפליקציה שלכם אכן דורשת ממשק מגע, למשל כדי לבצע תנועות מגע מתקדמות יותר כמו תנועות זריקה, אין צורך להצהיר על תכונות של ממשק מגע כי הן נדרשות כברירת מחדל. עם זאת, מומלץ להצהיר באופן מפורש על כל התכונות שבהן האפליקציה משתמשת.

אם אתם צריכים אינטראקציה מורכבת יותר עם המגע, כמו תנועות של כמה אצבעות, עליכם להצהיר שהאפליקציה משתמשת בתכונות מתקדמות של מסך מגע.

android.hardware.touchscreen.multitouch

האפליקציה משתמשת ביכולות הבסיסיות של המכשיר למגע בכמה נקודות, כמו תנועות צביטה, אבל האפליקציה לא צריכה לעקוב אחרי המגעים בנפרד. זוהי קבוצה גדולה יותר של התכונה android.hardware.touchscreen.

כשמשתמשים בתכונה הזו, האפליקציה מרמזת שהיא משתמשת גם בתכונה android.hardware.touchscreen, אלא אם תכונה ההורה הזו מוצהרת באמצעות android:required="false".

android.hardware.touchscreen.multitouch.distinct

האפליקציה משתמשת ביכולות המתקדמות של המכשיר למעקב בכמה נקודות מגע בו-זמנית, כדי לעקוב אחרי שתי נקודות או יותר בנפרד. התכונה הזו היא קבוצת-על של התכונה android.hardware.touchscreen.multitouch.

כשמשתמשים בתכונה הזו, האפליקציה מתיימרת שהיא משתמשת גם בתכונה android.hardware.touchscreen.multitouch, אלא אם התכונה ההורה הזו מוצהרת באמצעות android:required="false".

android.hardware.touchscreen.multitouch.jazzhand

האפליקציה משתמשת ביכולות המתקדמות של המכשיר למעקב אחר כמה נקודות מגע בו-זמנית, כדי לעקוב אחרי חמש נקודות או יותר בנפרד. התכונה הזו היא קבוצת-על של התכונה android.hardware.touchscreen.multitouch.

כשמשתמשים בתכונה הזו, האפליקציה מתיימרת שהיא משתמשת גם בתכונה android.hardware.touchscreen.multitouch, אלא אם התכונה ההורה הזו מוצהרת באמצעות android:required="false".

תכונות חומרה של USB

android.hardware.usb.accessory
ההתנהגות של האפליקציה היא כמו של התקן USB, והיא מתחברת למארחי USB.
android.hardware.usb.host
המערכת משתמשת באביזרי ה-USB שמחוברים למכשיר. המכשיר משמש כמארח USB.

מאפייני החומרה של Vulkan

android.hardware.vulkan.compute
האפליקציה משתמשת בתכונות המחשוב של Vulkan. התכונה הזו מציינת שהאפליקציה דורשת הטמעה של Vulkan עם האצת חומרה. גרסת התכונה מציינת את רמת התכונות האופציונליות של המחשוב הנדרשות באפליקציה מעבר לדרישות של Vulkan 1.0. לדוגמה, אם האפליקציה שלכם דורשת תמיכה ברמת 0 של Vulkan compute, צריך להצהיר על התכונה הבאה:
<uses-feature
    android:name="android.hardware.vulkan.compute"
    android:version="0"
    android:required="true" />
פרטים נוספים על גרסת התכונה זמינים במאמר FEATURE_VULKAN_HARDWARE_COMPUTE.
android.hardware.vulkan.level
האפליקציה משתמשת בתכונות ברמת Vulkan. התכונה הזו מציינת שהאפליקציה דורשת את ההטמעה של Vulkan עם האצת חומרה. גרסת התכונה מציינת את רמת התכונות האופציונליות של החומרה שנדרשות לאפליקציה. לדוגמה, אם האפליקציה שלכם דורשת תמיכה ב-Vulkan ברמת החומרה 0, צריך להצהיר על התכונה הבאה:
<uses-feature
    android:name="android.hardware.vulkan.level"
    android:version="0"
    android:required="true" />
מידע נוסף על גרסת התכונה זמין במאמר FEATURE_VULKAN_HARDWARE_LEVEL.
android.hardware.vulkan.version
האפליקציה משתמשת ב-Vulkan. התכונה הזו מציינת שהאפליקציה דורשת הטמעה של Vulkan עם האצת חומרה. גרסת התכונה מציינת את הגרסה המינימלית של תמיכת Vulkan API שנדרשת לאפליקציה. לדוגמה, אם האפליקציה שלכם דורשת תמיכה ב-Vulkan 1.0, צריך להצהיר על התכונה הבאה:
<uses-feature
    android:name="android.hardware.vulkan.version"
    android:version="0x400003"
    android:required="true" />
פרטים נוספים על גרסת התכונה זמינים במאמר FEATURE_VULKAN_HARDWARE_VERSION.

תכונות חומרה של Wi-Fi

android.hardware.wifi
הרשאה שמאפשרת לאפליקציה להשתמש בתכונות הרשת 802.11 (Wi-Fi) במכשיר.
android.hardware.wifi.direct
האפליקציה משתמשת בתכונות הרשת של Wi-Fi Direct במכשיר.

תכונות התוכנה

בקטע הזה מפורטות תכונות התוכנה הנתמכות בגרסה העדכנית ביותר של הפלטפורמה. כדי לציין שהאפליקציה משתמשת בתכונה מסוימת של תוכנה או שדרושה לה תכונה כזו, צריך להצהיר על הערך המתאים, שמתחיל ב-"android.software", במאפיין android:name. בכל פעם שמצהירים על תכונה של תוכנה, צריך להשתמש ברכיב <uses-feature> נפרד.

תכונות של תוכנות תקשורת

android.software.sip
השירותים של פרוטוקול ההתחלה של סשן (SIP) משמשים את האפליקציה. באמצעות SIP, האפליקציה יכולה לתמוך בפעולות של טלפוניה באינטרנט, כמו שיתוף מסך ושיחות וידאו.
android.software.sip.voip

האפליקציה משתמשת בשירותי VoIP (שיחות באינטרנט) מבוססי SIP. באמצעות VoIP, האפליקציה יכולה לתמוך בפעולות של טלפוניה באינטרנט בזמן אמת, כמו שיחות ועידה דו-כיווניות בווידאו.

כשמשתמשים בתכונה הזו, האפליקציה מרמזת שהיא משתמשת גם בתכונה android.software.sip, אלא אם תכונה ההורה הזו מוצהרת באמצעות android:required="false".

android.software.webview
האפליקציה מציגה תוכן מהאינטרנט.

תכונות של תוכנות קלט בהתאמה אישית

android.software.input_methods
המערכת משתמשת בשיטת קלט חדשה שהמפתח מגדיר ב-InputMethodService.

התכונות של תוכנת ניהול המכשירים

android.software.backup
האפליקציה כוללת לוגיקה לטיפול בפעולות גיבוי ושחזור.
android.software.device_admin
האפליקציה משתמשת במנהלי מכשירים כדי לאכוף מדיניות של מכשיר.
android.software.managed_users
האפליקציה תומכת במשתמשים משניים ובפרופילים מנוהלים.
android.software.securely_removes_users
המערכת יכולה להסיר לתמיד משתמשים ונתונים שמשויכים אליהם.
android.software.verified_boot
האפליקציה כוללת לוגיקה לטיפול בתוצאות מתכונה של אתחול מאומת במכשיר, שמזהה אם ההגדרות של המכשיר משתנות במהלך הפעלה מחדש.

תכונות של תוכנות מדיה

android.software.midi
האתר מתחבר לכלים מוזיקליים או מפיק צלילים באמצעות פרוטוקול Musical Instrument Digital Interface‏ (MIDI).
android.software.print
האפשרות הזו כוללת פקודות להדפסת מסמכים שמוצגים במכשיר.
android.software.leanback
המערכת מיועדת לפעול במכשירי Android TV.
android.software.live_tv
האפליקציה משדרת תוכניות טלוויזיה בשידור חי.

תכונות תוכנה של ממשק המסך

android.software.app_widgets
האפליקציה משתמשת בווידג'טים של אפליקציות או מספקת אותם, והיא מיועדת רק למכשירים שכוללים מסך בית או מיקום דומה שבו משתמשים יכולים להטמיע ווידג'טים של אפליקציות.
android.software.home_screen
האפליקציה מחליפה את מסך הבית של המכשיר.
android.software.live_wallpaper
הרקעים באפליקציה כוללים אנימציה או שהאפליקציה מספקת רקעים כאלה.

הרשאות שמציינות דרישות לתכונות

חלק מהקבועים של תכונות החומרה והתוכנה זמינים לאפליקציות אחרי ה-API התואם. לכן, יכול להיות שאפליקציות מסוימות ישתמשו ב-API לפני שהן יוכלו להצהיר שהן זקוקות ל-API באמצעות המערכת <uses-feature>.

כדי למנוע הפעלה לא מכוונת של האפליקציות האלה, Google Play מתייחסת להרשאות מסוימות שקשורות לחומרה כסימן לכך שתכונות החומרה הבסיסיות נדרשות כברירת מחדל. לדוגמה, אפליקציות שמשתמשות ב-Bluetooth צריכות לבקש את ההרשאה BLUETOOTH ברכיב <uses-permission>.

באפליקציות מדור קודם, Google Play מניחה שהצהרת ההרשאה מסמנת שהאפליקציה זקוקה לתכונה הבסיסית android.hardware.bluetooth, ומגדירה סינון על סמך התכונה הזו. בטבלה 2 מפורטות הרשאות שמציינות דרישות תכונות שדומות לאלה שמוצהרות ברכיבי <uses-feature>.

הצהרות <uses-feature>, כולל כל מאפיין android:required שהוצהר, תמיד מקבלות קדימות על פני תכונות שמשתמעות מההרשאות בטבלה 2. בכל אחת מההרשאות האלה, אפשר להשבית את הסינון על סמך התכונה המשתמעת על ידי הצהרה מפורשת על התכונה ברכיב <uses-feature> עם המאפיין required שמוגדר כ-false.

לדוגמה, כדי להשבית את הסינון על סמך ההרשאה CAMERA, מוסיפים את ההצהרות הבאות של <uses-feature> לקובץ המניפסט:

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

זהירות: אם האפליקציה שלכם מטרגטת את Android מגרסה 5.0 (רמת API‏ 21) ואילך, ומשתמשת בהרשאה ACCESS_COARSE_LOCATION או ACCESS_FINE_LOCATION כדי לקבל עדכוני מיקום מהרשת או מ-GPS, בהתאמה, עליכם גם להצהיר במפורש שהאפליקציה משתמשת בתכונות החומרה android.hardware.location.network או android.hardware.location.gps.

טבלה 2. הרשאות למכשיר שמציינות שימוש בחומרה של המכשיר.

קטגוריה הרשאה דרישת תכונה משתמעת
Bluetooth BLUETOOTH android.hardware.bluetooth

פרטים נוספים זמינים במאמר טיפול מיוחד בתכונה Bluetooth.

BLUETOOTH_ADMIN android.hardware.bluetooth
מצלמה CAMERA android.hardware.camera
android.hardware.camera.autofocus
מיקום ACCESS_MOCK_LOCATION android.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDS android.hardware.location
INSTALL_LOCATION_PROVIDER android.hardware.location
ACCESS_COARSE_LOCATION

android.hardware.location

android.hardware.location.network (רק כשרמת ה-API לטירגוט היא 20 ומטה).

ACCESS_FINE_LOCATION

android.hardware.location

android.hardware.location.gps (רק כשרמת ה-API לטירגוט היא 20 ומטה).

מיקרופון RECORD_AUDIO android.hardware.microphone
טלפוניה CALL_PHONE android.hardware.telephony
CALL_PRIVILEGED android.hardware.telephony
MODIFY_PHONE_STATE android.hardware.telephony
PROCESS_OUTGOING_CALLS android.hardware.telephony
READ_SMS android.hardware.telephony
RECEIVE_SMS android.hardware.telephony
RECEIVE_MMS android.hardware.telephony
RECEIVE_WAP_PUSH android.hardware.telephony
SEND_SMS android.hardware.telephony
WRITE_APN_SETTINGS android.hardware.telephony
WRITE_SMS android.hardware.telephony
Wi-Fi ACCESS_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_MULTICAST_STATE android.hardware.wifi