מערכת 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 הוא |
התוצאה |
---|---|---|
<uses-sdk> לא הוצהר |
<=4 | לא מתבצע סינון של האפליקציה ב-Google Play לפי מכשירים שמתועדת להם תמיכה בתכונה android.hardware.bluetooth . |
<=4 | >=5 | Google Play מסנן את האפליקציה מכל המכשירים שלא תומכים בתכונה android.hardware.bluetooth (כולל גרסאות ישנות יותר). |
>=5 | >=5 |
הדוגמאות הבאות ממחישות את ההשפעות השונות של הסינון על סמך האופן שבו Google Play מטפל בתכונה Bluetooth.
-
בדוגמה הראשונה, אפליקציה שמיועדת לפעול ברמות API ישנות יותר מצהירה על הרשאת Bluetooth אבל לא מצהירה על תכונת Bluetooth באלמנט
- תוצאה: Google Play לא מסנן את האפליקציה מאף מכשיר.
<uses-feature>
.
<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>
-
לבסוף, בתרחיש הבא, אותה אפליקציה מוסיפה מאפיין
- תוצאה: Google Play משבית את הסינון על סמך תמיכה בתכונות Bluetooth בכל המכשירים.
android:required="false"
.
<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 משתמשת כדי לקבוע את התכונות הנדרשות לאפליקציה.
כדי להשתמש בכלי:
- יוצרים ומיצאים את האפליקציה כקובץ APK לא חתום.
אם אתם מפתחים ב-Android Studio, אתם יכולים ליצור את האפליקציה באמצעות Gradle באופן הבא:
- פותחים את הפרויקט ובוחרים באפשרות הפעלה > עריכת הגדרות.
- לוחצים על סימן הפלוס ליד הפינה הימנית העליונה של החלון Run/Debug Configurations.
- בוחרים באפשרות Gradle.
- בשדה Name, מזינים 'APK לא חתום'.
- בוחרים את המודול בקטע Gradle project.
- מזינים 'הרכבה' בקטע משימות.
- בוחרים באפשרות OK כדי להשלים את ההגדרה החדשה.
- מוודאים שהגדרת ההרצה Unsigned APK מסומנת בסרגל הכלים, ובוחרים באפשרות Run > Run 'Unsigned APK'.
<ProjectName>/app/build/outputs/apk/
. - מאתרים את הכלי
aapt2
, אם הוא עדיין לא נמצא ב-PATH. אם אתם משתמשים ב-SDK Tools r8 ואילך, תוכלו למצוא אתaapt2
בתיקייה<SDK>/build-tools/<tools version number>
.הערה: עליכם להשתמש בגרסה של
aapt2
שסופקה לרכיב Build-Tools העדכני ביותר שזמין. אם אתם לא משתמשים ברכיב Build-Tools העדכני ביותר, תוכלו להוריד אותו באמצעות Android SDK Manager. - מריצים את
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 |
|
|
ACCESS_FINE_LOCATION |
|
|
מיקרופון | 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 |