כדי לקמפל ולנפות באגים בקוד 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. כל הגרסאות של NDK מותקנות ב-Android Studio בספרייה 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 ואת גרסה 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.