הוספת קוד C ו-C++ לפרויקט

כדי להוסיף קוד C ו-C++ לפרויקט Android, צריך להוסיף את הקוד לקטע הספרייה cpp במודול הפרויקט. במהלך יצירת הפרויקט, הקוד מורכב בספריית נייטיב ש-Gradle יכול לארוז עם האפליקציה שלכם. לאחר מכן, קוד Java או Kotlin יכולים לקרוא לפונקציות בספרייה המקורית דרך ממשק Java Native Interface (JNI). מידע נוסף על השימוש ב-JNI framework, לקרוא טיפים של JNI ל- ב-Android.

Android Studio תומך ב-CMake, שהוא שימושי לפרויקטים בפלטפורמות שונות. Android Studio תומך גם ב-ndk-build, יכולים להיות מהירים יותר מ-CMake, אבל הם תומכים רק ב-Android. שימוש ב-CMake וגם בשלב הזה אין תמיכה ב-ndk-build באותו מודול.

כדי לייבא ספריית ndk-build קיימת ל-Android Studio פרויקט, ללמוד איך מקשרים את Gradle לפרויקט הספרייה המקורית.

בדף הזה מוסבר איך להגדיר את Android Studio עם את כלי ה-build הנחוצים, יוצרים פרויקט חדש באמצעות C/C++ ומוסיפים קובצי C/C++ חדשים לפרויקט.

כדי להוסיף קוד נייטיב לפרויקט קיים, יש לבצע את השלבים הבאים:

  1. ליצור קובצי מקור נייטיב חדשים ולהוסיף את הקוד קבצים לפרויקט Android Studio.
    • אפשר לדלג על השלב הזה אם כבר יש לכם קוד Native או אם אתם רוצים לייבא ספרייה מותאמת שנוצרה מראש.
  2. מגדירים את CMake ל- לפתח את קוד המקור המקורי בספרייה. יש צורך בסקריפט ה-build הזה אם אתם מייבאים ומקשרים לפלטפורמה או לפלטפורמה שנוצרו מראש. של הספריות.
    • אם יש לכם ספרייה מותאמת שכבר כוללת סקריפט build מסוג CMakeLists.txt או משתמש ב-ndk-build וכולל Android.mk build של סקריפט, דילוג על השלב הזה.
  3. הגדרה Gradle על ידי מתן נתיב ל-CMake או ndk-build סקריפט. Gradle משתמשת בסקריפט ה-build כדי לייבא את קוד המקור פרויקט Android Studio ואריזתם את ספריית הנייטיב שלכם באפליקציה.

אחרי שמגדירים את הפרויקט, ניגשים לפונקציות המקוריות מ: בקוד Java או Kotlin באמצעות framework של JNI. כדי ליצור ולהפעיל את האפליקציה, לוחצים על Run לאחר מכן, מריצים את האפליקציה מסרגל התפריטים.

הערה: אם בפרויקט הקיים שלכם נעשה שימוש במודלים של ndkCompile, מעבר לשימוש ב-CMake או ndk-build

הורדת ה-NDK וכלי פיתוח

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

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

למידע על התקנת הרכיבים האלה, ראו התקנה והגדרה של NDK ו-CMake.

יצירת פרויקט חדש עם תמיכה ב-C/C++

כדי ליצור פרויקט חדש עם תמיכה בקוד Native, התהליך דומה לתהליך הבא: יצירת מערכת Android אחרת פרויקט של Studio, אבל באמצעות שלב נוסף:

  1. בקטע Choose your project באשף, בוחרים את סוג הפרויקט Native C++.
  2. לוחצים על הבא.
  3. ממלאים את כל שאר השדות בקטע הבא של האשף.
  4. לוחצים על הבא.
  5. בקטע התאמה אישית של תמיכת C++ באשף, אפשר להתאים אישית בפרויקט בעזרת השדה C++ Standard.
    • משתמשים ברשימה הנפתחת כדי בוחרים באיזו סטנדרטיזציה של C++ רוצים להשתמש. בוחרים באפשרות Toolchain ברירת המחדל משתמשת בהגדרת ברירת המחדל של CMake.
  6. לוחצים על סיום.

לאחר שיצירת הפרויקט החדש ב-Android Studio מסתיימת, פותחים את בחלונית פרויקט מצד שמאל של סביבת הפיתוח המשולבת (IDE) ובוחרים את תצוגת Android מהתפריט. כפי שמוצג באיור 1, מערכת Android מערכת Studio מוסיפה את הקבוצה cpp:

איור 1. קבוצות צפייה ב-Android עבור מקורות הנתונים שלך וסקריפטים חיצוניים של build.

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

בקבוצה cpp ניתן למצוא את כל קובצי מקור, כותרות, סקריפטים לבנות עבור CMake או ndk-build, ספריות שהן חלק מהפרויקט. לפרויקטים חדשים, Android Studio יוצר קובץ מקור לדוגמה C++ , native-lib.cpp ומציב אותו בספרייה src/main/cpp/ של מודול האפליקציה. הדוגמה הזו מספק פונקציית C++ פשוטה, stringFromJNI(), מחזירה את המחרוזת "Hello from C++". הוראות להוספה קובצי מקור לפרויקט שלכם בסעיף כיצד ליצור קובצי מקור מותאמים חדשים.

בדומה לאופן שבו קבצים מ-build.gradle מסבירים ל-Gradle איך ליצור לאפליקציה שלך, ל-CMake ול-ndk-build נדרש סקריפט build כדי לדעת איך ליצור בספרייה המקורית. בשביל פרויקטים חדשים, Android Studio יוצר גרסת CMake CMakeLists.txt, ולמקם אותו בתיקיית השורש של המודול. למידע נוסף על התוכן של סקריפט build זה, ניתן לקרוא הגדרת CMake.

יצירה והפעלה של אפליקציה לדוגמה

כשלוחצים על הפעלה לאחר מכן, מריצים את האפליקציה מסרגל התפריטים, Android Studio בונה ומפעילים אפליקציה שמציגה את הטקסט "שלום מ-C++ " ב אמולטור או מכשיר Android. בסקירה הכללית הבאה מתוארים האירועים בתהליך היצירה וההפעלה של האפליקציה לדוגמה:

  1. קריאות Gradle בסקריפט build חיצוני CMakeLists.txt
  2. CMake עוקב אחר פקודות בסקריפט ה-build כדי להדר מקור C++ קובץ, native-lib.cpp, בספריית אובייקטים משותפים ובשמות אותו libnative-lib.so. Gradle, ולאחר מכן אורזת אותו באפליקציה.
  3. במהלך זמן הריצה, MainActivity של האפליקציה טוענת את המודעות המותאמות ספרייה באמצעות System.loadLibrary(). הפונקציה המקורית של הספרייה, stringFromJNI() זמינה עכשיו לאפליקציה.
  4. MainActivity.onCreate() מתקשרת אל stringFromJNI(), שמחזיר את הערך "Hello from C++" ומשתמש בו כדי לעדכן את TextView.

כדי לוודא ש-Gradle חבילה שכוללת את ספריית הנייטיב באפליקציה, צריך להשתמש ב כלי הניתוח ל-APK:

  1. בוחרים באפשרות Build > (בנייה >) חבילות Build / חבילות APK > בניית חבילות APK.
  2. בוחרים באפשרות Build > (בנייה >) ניתוח APK.
  3. בוחרים את ה-APK או את ה-AAB מספריית app/build/outputs/ ולוחצים על OK.
  4. כפי שמוצג באיור 2, ניתן לראות את libnative-lib.so החלון של כלי הניתוח של APK בקטע lib/<ABI>/.

    איור 2. איתור ספרייה מותאמת באמצעות ה-APK מכשיר לניתוח.

טיפ: אם אתם רוצים להתנסות באפליקציות אחרות ל-Android להשתמש בקוד נייטיב, לוחצים על קובץ > חדש > ייבוא דוגמה וגם בוחרים פרויקט לדוגמה מהרשימה Ndk.

יצירת קובצי מקור חדשים מסוג C/C++

כדי להוסיף קובצי מקור חדשים מסוג C/C++ לפרויקט קיים, מבצעים את הפעולות הבאות:

  1. אם עדיין אין לכם ספריית cpp/ במקור הראשי של האפליקציה, צור אחת באופן הבא:
    1. פותחים את החלונית פרויקט בצד שמאל של סביבת הפיתוח המשולבת (IDE), בוחרים את התצוגה Project מהתפריט.
    2. ניווט אל your-module > מקור.
    3. לוחצים לחיצה ימנית על הספרייה הראשית ובוחרים באפשרות חדש > Google Directory.
    4. מזינים את cpp בתור שם הספרייה ולוחצים על OK.

  2. לוחצים לחיצה ימנית על הספרייה cpp/ ובוחרים באפשרות New > (חדש >) C/C++ קובץ מקור.
  3. נותנים שם לקובץ המקור, למשל native-lib.
  4. בתפריט סוג בוחרים את סיומת הקובץ. עבור קובץ המקור, למשל .cpp.
    • לוחצים על עריכת סוגי קבצים. כדי להוסיף לתפריט סוגי קבצים אחרים, כמו .cxx או .hxx. בקטע תוספי קבצים חדשים. בתיבת הדו-שיח שמופיעה, בוחרים סיומת קובץ אחרת התפריטים תוסף מקור ותוסף כותרת וגם לוחצים על OK (אישור).
  5. כדי ליצור קובץ כותרת, לוחצים על יצירת קובץ כותרת משויכת.
  6. לוחצים על אישור.

אחרי שמוסיפים לפרויקט קובצי C/C++ חדשים, עדיין צריך להגדיר את CMake להכללת הקבצים ב בספרייה המקורית.

מקורות מידע נוספים

למידע נוסף על תמיכה בקוד C/C++ באפליקציה שלך, כדאי לנסות את הפעולות הבאות משאב.

שיעורי Lab