כדי לקמפל ולנפות באגים בקוד מקורי של האפליקציה, צריך את הרכיבים הבאים:
- ערכת הכלים לפיתוח מקורי (NDK) ל-Android: ערכת כלים שמאפשרת להשתמש בקוד C ו-C++ עם Android.
- CMake: כלי חיצוני לבנייה שפועל לצד Gradle כדי לבנות את הספרייה המקורית. הרכיב הזה לא נחוץ אם אתם מתכננים להשתמש רק ב-ndk-build.
- LLDB: כלי לניפוי באגים ש-Android Studio משתמש בו כדי לנפות באגים בקוד מקורי. כברירת מחדל, LLDB מותקן לצד Android Studio.
בדף הזה מוסבר איך להתקין את הרכיבים האלה באופן אוטומטי, או באמצעות Android Studio או הכלי sdkmanager
כדי להוריד ולהתקין אותם באופן ידני.
התקנה אוטומטית של NDK ו-CMake
אם הרישיונות של NDK ו-CMake אושרו מראש, אפשר להשתמש ב-Android Gradle Plugin בגרסה 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 ואת גרסה 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
, תוצג שגיאת בנייה.# 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 שרוצים להתקין. ב-Android Studio, כל הגרסאות של NDK מותקנות בספרייה
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 plugin (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.