באוגוסט 2020, שירותי Google Play ל-AR (ARCore) הסירו את התמיכה באפליקציות ב-32 ביט בלבד בחלק ממכשירי ה-64 ביט. יכול להיות שבגרסת ARCore עתידית תוסר ללא הודעה מוקדמת באפליקציות שתומכות ב-ARCore ב-32 ביט בלבד בשאר מכשירי ה-64 ביט. אפליקציות עם תמיכה ב-ARCore ב-32 ביט בלבד שפועלות במכשירי 32 ביט לא מושפעות ונתמכות בהן.
אם פרסמתם גרסת 32 ביט בלבד (למשל, armeabi-v7a
) של האפליקציה שתומכת ב-ARCore בלי לפרסם גרסת 64 ביט (arm64-v8a
) תואמת למכשירים עם 64 ביט, עליך לעדכן את האפליקציה בגרסת 64 ביט תואמת למכשירים עם 64 ביט.
אפליקציות שתומכות ב-ARCore ב-32 ביט בלבד שלא מעודכנות לא ייצרו סשן של ARCore, והן עלולות לקרוס כשמנסים להתחיל סשן של מציאות רבודה (AR) במכשירי 64 ביט שהושפעו.
אם מגדירים את המאפיין android:use32bitAbi="true"
ב-AndroidManifest.xml
של האפליקציה, האפליקציה תשתמש רק בספריות של 32 ביט. כל חוויית AR באפליקציה שלכם תנסה להשתמש ב-ARCore במצב 32 ביט. עם זאת, ספריות 32 ביט לא יהיו זמינות בשירות Google Play Services ל-AR במכשירים מסוימים של 64 ביט. בלי הספריות האלה, האפליקציה לא תצליח
ליצור סשן ARCore, והיא עלולה לקרוס כשתנסו להתחיל סשן
מציאות רבודה (AR) במכשירים האלה עם 64 ביט. הדבר משפיע על חוויות AR מקוריות וגם על חוויות AR המבוססות על WebXR בתוך רכיב WebView.
דרישה לגרסת 64 ביט בחנות Google Play
דרישת 64 הסיביות של ARCore שמתוארת בקטע הקודם חלה על כל מכשירי 64 הסיביות, בלי קשר לגרסת Android ולרמת ה-API. הדרישה הזו נפרדת ואינה קשורה לדרישה של 64 ביט ב-Google Play שנכנסה לתוקף ב-1 באוגוסט 2019, שנבדקה ברמת גרסת האפליקציה וחלה רק על חבילות APK או App Bundle שמופצות למכשירים עם Android 9 Pie (API ברמה 28) ואילך.
הבנת התמיכה ב-ARCore ABI
באמצעות ARCore אפשר ליצור אפליקציות שתומכות בממשקי ה-ABI הבאים של Android:
32 ביט (למשל,
armeabi-v7a
) ואפליקציות ב-64 ביט (arm64-v8a
) שמטרגטות מכשירים פיזיים שנתמכים ב-ARCoreאפליקציות ב-32 ביט (
x86
) וב-64 ביט (x86_64
) שפועלות בתוך אמולטור Android
כשיוצרים אפליקציה שתומכת ב-ARCore, מערכת ה-build של Android כוללת ספרייה מקורית אחת או יותר של ARCore (lib/…/libarcore_sdk*.so
) עבור ממשקי ה-ABI של Android שהאפליקציה מטרגטת.
בעבר, אפליקציות שתומכות ב-ARCore ב-32 ביט בלבד יכלו לפעול גם במכשירים של 32 ביט וגם במכשירים של 64 ביט. באוגוסט 2020 הופסקו השימוש ב-Google Play Services ל-AR (ARCore) בספרייה המקורית של 32 ביט בחלק ממכשירי ה-64 ביט. באותו זמן, אפליקציות שתומכות ב-ARCore ב-32 ביט בלבד לא יכלו לפעול יותר במכשירי 64 ביט שהושפעו. בגרסאות עתידיות, יכול להיות שהתמיכה באפליקציות שתומכות ב-ARCore ב-32 ביט בלבד תוסר ללא הודעה משאר מכשירי ה-64 ביט.
אפליקציות שתומכות ב-32 ביט בלבד ב-ARCore שלא מעודכנות לא ייצרו סשן, והן עלולות לקרוס כשתנסו להתחיל סשן של מציאות רבודה (AR) במכשירי 64 ביט שמושפעים מהבעיה, באופן ספציפי:
SDK של ARCore | פרטים על הכשל ביצירת הסשן |
---|---|
ARCore SDK ל-Android (NDK) |
האפשרויות ArSession_create
ו-ArSession_createWithFeatures
יחזירו AR_ERROR_FATAL .
|
ARCore SDK ל-Android (Java) |
בוני הסשן,
Session(Context)
ו-Session(Context, Set<Session.Feature>) ,
יזמינו
FatalException .
|
ARCore SDK ל-Unity |
כשמפעילים את הרכיב
ARCoreSession ,
שבדרך כלל נמצא
בהזמנה מראש של מכשיר ARCore, ARCore
לא יצליח ליצור סשן ARCore, ו-Session.Status
יהיה SessionStatus.FatalError .
|
AR
Foundation (Unity) + פלאגין ARCore XR |
האפליקציה תפסיק את הרינדור (מסך שחור) כשהאפליקציה תנסה להתחיל סשן AR בגלל קריסה ב-thread הראשי במהלך ניסיון לטעון ספריות מקוריות של ARCore ב-32 ביט שלא קיימות. |
בדיקה אם חובה לעדכן את האפליקציה
כדי לבדוק אם האפליקציה שפורסמה כוללת את ספריות ARCore המקוריות הנדרשות לתמיכה במכשירי 64 ביט:
פותחים את Google Play Console.
בוחרים אפליקציה שתומכת ב-ARCore.
ניתן להרחיב את הגרסה הפעילה של האפליקציה כדי לוודא שהפלטפורמות המותאמות כוללות תמיכה ב-64 ביט (
arm64-v8a
).
עדכון האפליקציה שלך כך שתתמוך במכשירי 64 ביט
כדי לעדכן אפליקציה קיימת שתומכת ב-ARCore ב-32 ביט בלבד כך שתכלול ספריות מקוריות ב-64 ביט:
צריך לעדכן את הפרויקט כך שישתמש ב-ARCore SDK העדכני ביותר.
מפתחים את האפליקציה ומפרסמים אותה באמצעות Google Play Console.
Google Play תאמת שהאפליקציה שלכם עומדת בדרישה של 64 ביט בחנות Google Play, שנכנסה לתוקף ב-1 באוגוסט 2019. כדי להבטיח שהאפליקציה שתומכת ב-ARCore כוללת תמיכה ב-64 ביט (arm64-v8a
) בכל מכשירי ה-64 ביט, בלי קשר לגרסת ה-Android או לרמת ה-API.