התקנה והגדרה של ה-NDK ו-CMake

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

  • ‫Android Native Development Kit (NDK): ערכת כלים שמאפשרת להשתמש בקוד C ו-C++‎ עם Android.
  • ‫CMake: כלי חיצוני לבנייה שפועל לצד Gradle כדי לבנות את הספרייה המקורית. אם אתם מתכננים להשתמש רק ב-ndk-build, אתם לא צריכים את הרכיב הזה.
  • LLDB: כלי לניפוי באגים ש-Android Studio משתמש בו כדי לנפות באגים בקוד Native. כברירת מחדל, ‏ LLDB מותקן לצד Android Studio.

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

התקנה אוטומטית של NDK ו-CMake

אם רישיונות ה-NDK ו-CMake אושרו מראש, פלאגין של Android Gradle בגרסה 4.2.0 ואילך יכול להתקין אותם באופן אוטומטי בפעם הראשונה שיוצרים את הפרויקט. אם כבר קראתם את תנאי הרישיון ואתם מסכימים להם, אתם יכולים לאשר מראש את הרישיונות בסקריפטים באמצעות הפקודה הבאה:

   yes | ${sdk}/cmdline-tools/latest/bin/sdkmanager --licenses

התקנה של NDK ו-CMake

כשמתקינים את NDK, ‏ Android Studio בוחר את הגרסה האחרונה שזמינה של NDK. ברוב הפרויקטים, מספיק להתקין את גרסת ברירת המחדל הזו של NDK. אם אתם צריכים בפרויקט גרסה ספציפית אחת או יותר של NDK, תוכלו להוריד ולהגדיר גרסאות ספציפיות. כך תוכלו לוודא שתוכלו לשחזר את הבנייה בפרויקטים שכל אחד מהם תלוי בגרסה ספציפית של NDK. ‫Android Studio מתקין את כל הגרסאות של NDK בספרייה android-sdk/ndk/.

כדי להתקין את CMake ואת NDK שמוגדר כברירת מחדל ב-Android Studio:

  1. בפרויקט פתוח, לוחצים על Tools > SDK Manager.

  2. לוחצים על הכרטיסייה SDK Tools (כלי SDK).

  3. מסמנים את תיבות הסימון NDK (Side by side) ו-CMake.

    תמונה של SDK Manager איור 1. חלון SDK Tools עם האפשרות NDK (Side by side)

  4. לוחצים על אישור.

    בתיבת דו-שיח מוצג נפח האחסון שהחבילה של NDK תופסת בדיסק.

  5. לוחצים על אישור.

  6. בסיום ההתקנה, לוחצים על סיום.

  7. הפרויקט מסנכרן אוטומטית את קובץ ה-build ומבצע build. פותרים את השגיאות שמופיעות.

הגדרת גרסה ספציפית של CMake

‫SDK Manager כולל את גרסת 3.6.0 של CMake שהיא גרסת Fork, ואת גרסה 3.10.2. פרויקטים שלא מוגדרת בהם גרסה ספציפית של CMake נבנים באמצעות CMake 3.10.2. כדי להגדיר את גרסת CMake, מוסיפים את השורות הבאות לקובץ build.gradle של המודול:

מגניב

android {
    ...
    externalNativeBuild {
        cmake {
            ...
            version "cmake-version"
        }
    }
}

Kotlin

android {
    ...
    externalNativeBuild {
        cmake {
            ...
            version = "cmake-version"
        }
    }
}

אם אתם רוצים להשתמש בגרסת CMake שלא נכללת ב-SDK Manager, אתם צריכים לבצע את השלבים הבאים:

  1. מורידים ומתקינים את CMake מהאתר הרשמי של CMake.
  2. מציינים את גרסת ה-CMake שבה רוצים ש-Gradle ישתמש בקובץ build.gradle של המודול.
  3. אפשר להוסיף את הנתיב להתקנת CMake למשתנה הסביבה PATH או לכלול אותו בקובץ local.properties של הפרויקט, כמו שמוצג. אם Gradle לא מצליח למצוא את הגרסה של CMake שציינתם בקובץ build.gradle, תוצג שגיאת build.

    # If you set this property, Gradle no longer uses PATH to find CMake.
    cmake.dir = "path-to-cmake"</pre>
    
  4. אם מערכת ה-build של Ninja עדיין לא מותקנת בתחנת העבודה, אפשר להיכנס אל האתר הרשמי של Ninja, להוריד את הגרסה האחרונה של Ninja שזמינה למערכת ההפעלה שלכם ולהתקין אותה. חשוב להוסיף את הנתיב להתקנת Ninja גם למשתנה הסביבה PATH.

התקנה של גרסה ספציפית של NDK

כדי להתקין גרסה ספציפית של NDK:

  1. בפרויקט פתוח, לוחצים על Tools > SDK Manager.

  2. לוחצים על הכרטיסייה SDK Tools (כלי SDK).

  3. מסמנים את תיבת הסימון הצגת פרטי החבילה.

  4. מסמנים את התיבה NDK (Side by side) ואת התיבות שמתחתיה שמתאימות לגרסאות ה-NDK שרוצים להתקין. כל הגרסאות של NDK מותקנות ב-Android Studio בספרייה android-sdk/ndk/.

    תמונה של חלון SDK Tools איור 2. חלון SDK Tools עם האפשרויות של NDK (Side by side)

  5. לוחצים על אישור.

    בתיבת דו-שיח מוצג כמה מקום תופסות חבילות ה-NDK.

  6. לוחצים על אישור.

  7. בסיום ההתקנה, לוחצים על סיום.

  8. הפרויקט מסנכרן אוטומטית את קובץ ה-build ומבצע build. פותרים את השגיאות שמופיעות.

  9. מגדירים כל מודול עם גרסת ה-NDK שרוצים להשתמש בה. כשמשתמשים ב-Android Studio מגרסה 3.6 ואילך, אם לא מציינים את הגרסה, הפלאגין של Android Gradle בוחר גרסה שידוע שהיא תואמת.

הגדרת גרסאות ספציפיות של NDK בפרויקט

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

  • הפרויקט שלכם הוא פרויקט שעבר בירושה, ואתם צריכים להשתמש בגרסאות ספציפיות של NDK ושל פלאגין של Android Gradle‏ (AGP). מידע נוסף זמין במאמר בנושא הגדרת NDK לפלאגין של Android Gradle.
  • יש לכם כמה גרסאות של NDK מותקנות ואתם רוצים להשתמש בגרסה ספציפית. במקרה כזה, צריך לציין את הגרסה באמצעות המאפיין android.ndkVersion בקובץ build.gradle של המודול, כמו בדוגמת הקוד הבאה.

    מגניב

    android {
        ndkVersion "major.minor.build" // e.g.,  ndkVersion "21.3.6528147"
    }

    Kotlin

    android {
        ndkVersion = "major.minor.build" // e.g.,  ndkVersion "21.3.6528147"
    }

גרסת ברירת המחדל של NDK לכל גרסה של AGP

לפני ההפצה, כל גרסה של AGP נבדקת ביסודיות עם הגרסה היציבה האחרונה של NDK באותו זמן. גרסת ה-NDK הזו משמשת ליצירת הפרויקטים אם לא מציינים גרסת NDK בקובץ build.gradle. גרסת ה-NDK שמוגדרת כברירת מחדל בגרסאות שונות של AGP מתועדת בנתוני הגרסה של AGP ובנתוני הגרסה הקודמים של AGP.