תמיכה ב-Rust ב-ASfP

סקירה כללית

‫Rust היא שפת תכנות מודרנית למערכות שמתמקדת בביצועים ובבטיחות, במיוחד בבטיחות הזיכרון. השימוש ב-Rust הופך לחשוב יותר ויותר במערכת האקולוגית של Android כחלופה בטוחה יותר ל-C או ל-C++‎ לפיתוח רכיבי מערכת קריטיים, ומציע אבטחה ויציבות משופרות.

בדף הזה מוסבר איך להגדיר את Android Studio for Platform ‏ (ASfP) כדי לתמוך בפיתוח Rust בפרויקטים של פרויקט קוד פתוח של Android ‏ (AOSP).

דרישות מוקדמות

  • התקנת ASfP: מוודאים ש-ASfP מותקן ופועל.
  • תשלום בפלטפורמה: צריך שיהיה במחשב שלכם תשלום תקין בפלטפורמת AOSP.

הפעלת התמיכה ב-Rust

כך מבצעים את התהליך שלב אחר שלב כדי להפעיל תמיכה ב-Rust בפרויקט ASfP:

  1. הפעלת Rust

    • כשיוצרים פרויקט חדש באשף ההגדרה, מסמנים את תיבת הסימון של Rust:
    תיבת הסימון Rust באשף להגדרת פרויקט חדש.
    תיבת הסימון Rust באשף להגדרת פרויקט חדש.
    • בפרויקטים קיימים, פותחים את קובץ התצורה .asfp-project ומוסיפים את rust אל other_languages:
        other_languages:
          -   cpp
          -   rust
        ```
    
    <figure>
          <img src="/studio/platform/images/1-modify_asfp_project_languages.png" alt="Modifying the .asfp-project file to add rust to other_languages" class="screenshot">
          <figcaption>Adding Rust support in the <code>.asfp-project</code> file.</figcaption>
        </figure>
    
  1. סנכרון הפרויקט

    מפעילים סנכרון של הפרויקט כדי שה-IDE ייצור ויאנדקס את חבילות ה-Rust: בוחרים באפשרות ASfP > Sync > Sync Project.

אימות ההגדרה

אחרי שמבצעים את השלבים האלה, צריך לאמת את התוצאות הבאות:

  • הסמל rust-project.json מופיע בתצוגת הפרויקט מתחת לקובץ המקור .iml. הקובץ הזה נוצר על ידי Soong במהלך הניתוח ומקושר באמצעות קישור סמלי לשורש המאגר, וזה נחוץ כדי ש-Language Server Protocol‏ (LSP) יוכל לספק שירותי שפה. אל תערכו את הקובץ הזה ישירות. במקום זאת, סנכרנו מחדש כדי ש-Soong יטפל בו.

    מוודאים שהערך rust מופיע בקטע other_languages בהגדרות של .asfp-project.

    מוודאים שנוצר הקובץ rust-project.json.
    מוודאים שנוצר rust-project.json.
  • סביבת הפיתוח המשולבת (IDE) מאפשרת את התכונות הבאות שספציפיות ל-Rust.

תכונות מרכזיות של סביבת פיתוח משולבת (IDE) של Rust

  • ניפוי באגים מובנה ב-LLDB והמחשות חזותיות של משתנים: ניפוי באגים בשירותי מכשיר של Rust פועלים מתוך Run > Attach to Android Process. אפשר גם להפעיל יעדים של rust_test או rust_test_host ישירות מסמלי השוליים Android.bp באמצעות מאתר הבאגים המובנה LLDB של ASfP‏ (lldb-dap), עם מדפיסים אוטומטיים של String,‏ Vec,‏ HashMap ו-Option. מידע נוסף זמין במאמר ניפוי באגים בקוד Rust.
  • השלמת קוד: קבלת הצעות חכמות לקוד Rust, כולל פריטים ממודולים אחרים.

    דוגמה להשלמת קוד בין מודולים ב-Rust
    השלמת קוד שמציעה פריטים ממודול Rust אחר.

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

    דוגמה לניווט בקוד Rust
    איך עוברים להגדרה של סמל Rust.
    דוגמה לשימוש ב-Rust find usages
    חיפוש כל השימושים בסמל Rust.

  • הסברים קצרים: מעבירים את הסמן מעל סמלים כדי לראות מידע על הסוג ועל התיעוד.

    דוגמה להסבר קצר ב-Rust
    הסבר קצר שמציג מידע על סוג של סמל Rust ממודול אחר.

  • הצעות מוטבעות: אפשר לראות מידע על סוגים והצעות הקשריות אחרות ישירות בעורך.

    דוגמה לרמזים מוטבעים ב-Rust
    רמזים מוטבעים שמציגים מידע על סוג בתוך הקוד.

  • תצוגת מבנה: אפשר לנווט במבנה של קובצי Rust באמצעות חלון של הכלי Structure (מבנה) (View > Tool Windows > Structure (תצוגה > חלונות כלים > מבנה)).

    דוגמה לתצוגת המבנה של Rust
    חלון של הכלי מבנה שבו מוצג המתאר של קובץ Rust.

  • Refactoring: שינוי שם של סמלים ועדכון כל השימושים בהם בצורה בטוחה.

    דוגמה לשינוי שם של סמל ב-Rust
    שינוי השם של סמל Rust ועדכון כל ההפניות שלו.

  • ניתוח בזמן אמת: קבלת משוב מיידי על שגיאות ואזהרות בקוד Rust.

    דוגמה לניתוח קוד בזמן אמת ב-Rust
    סביבת פיתוח משולבת (IDE) שמציגה שגיאות ואזהרות בזמן אמת בקוד Rust.