כדי לקמפל ולנפות באגים בקוד 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:
בפרויקט פתוח, לוחצים על Tools > SDK Manager.
לוחצים על הכרטיסייה SDK Tools (כלי SDK).
מסמנים את תיבות הסימון NDK (Side by side) ו-CMake.
איור 1. חלון SDK Tools עם האפשרות NDK (Side by side)לוחצים על אישור.
בתיבת דו-שיח מוצג נפח האחסון שהחבילה של NDK תופסת בדיסק.
לוחצים על אישור.
בסיום ההתקנה, לוחצים על סיום.
הפרויקט מסנכרן אוטומטית את קובץ ה-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, אתם צריכים לבצע את השלבים הבאים:
- מורידים ומתקינים את CMake מהאתר הרשמי של CMake.
- מציינים את גרסת ה-CMake שבה רוצים ש-Gradle ישתמש בקובץ
build.gradleשל המודול. אפשר להוסיף את הנתיב להתקנת 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>אם מערכת ה-build של Ninja עדיין לא מותקנת בתחנת העבודה, אפשר להיכנס אל האתר הרשמי של Ninja, להוריד את הגרסה האחרונה של Ninja שזמינה למערכת ההפעלה שלכם ולהתקין אותה. חשוב להוסיף את הנתיב להתקנת Ninja גם למשתנה הסביבה
PATH.
התקנה של גרסה ספציפית של NDK
כדי להתקין גרסה ספציפית של NDK:
בפרויקט פתוח, לוחצים על Tools > SDK Manager.
לוחצים על הכרטיסייה SDK Tools (כלי SDK).
מסמנים את תיבת הסימון הצגת פרטי החבילה.
מסמנים את התיבה NDK (Side by side) ואת התיבות שמתחתיה שמתאימות לגרסאות ה-NDK שרוצים להתקין. כל הגרסאות של NDK מותקנות ב-Android Studio בספרייה
android-sdk/ndk/.
איור 2. חלון SDK Tools עם האפשרויות של NDK (Side by side)לוחצים על אישור.
בתיבת דו-שיח מוצג כמה מקום תופסות חבילות ה-NDK.
לוחצים על אישור.
בסיום ההתקנה, לוחצים על סיום.
הפרויקט מסנכרן אוטומטית את קובץ ה-build ומבצע build. פותרים את השגיאות שמופיעות.
מגדירים כל מודול עם גרסת ה-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.