דרישה של ARCore ב-64 ביט

באוגוסט 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:

כשיוצרים אפליקציה שתומכת ב-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 ביט:

  1. פותחים את Google Play Console.

  2. בוחרים אפליקציה שתומכת ב-ARCore.

  3. ניתן להרחיב את הגרסה הפעילה של האפליקציה כדי לוודא שהפלטפורמות המותאמות כוללות תמיכה ב-64 ביט (arm64-v8a).

עדכון האפליקציה שלך כך שתתמוך במכשירי 64 ביט

כדי לעדכן אפליקציה קיימת שתומכת ב-ARCore ב-32 ביט בלבד כך שתכלול ספריות מקוריות ב-64 ביט:

  1. צריך לעדכן את הפרויקט כך שישתמש ב-ARCore SDK העדכני ביותר.

  2. מפתחים את האפליקציה ומפרסמים אותה באמצעות Google Play Console.

Google Play תאמת שהאפליקציה שלכם עומדת בדרישה של 64 ביט בחנות Google Play, שנכנסה לתוקף ב-1 באוגוסט 2019. כדי להבטיח שהאפליקציה שתומכת ב-ARCore כוללת תמיכה ב-64 ביט (arm64-v8a) בכל מכשירי ה-64 ביט, בלי קשר לגרסת ה-Android או לרמת ה-API.