הגדרת פרויקט

הגדרת פרויקט לשימוש בתוסף פיתוח המשחקים של Android.

תוסף פיתוח המשחקים ל-Android מפעיל את MSBuild כדי לפתח את קוד המקור C/C++ במשותף ספריות (.so) וספריות סטטיות (.a). כחלק מתהליך ה-build, משימת MSBuild מותאמת אישית מפעילה את Gradle להדרת קוד המקור של Java ו-Kotlin נכסים וליצור קובץ APK לפריסה. כשקובעים את הגדרות התצורה צריך לוודא של-MSBuild יש את המידע שנדרש ליצירה בפלטפורמת Android.

פיתוח C/C++ באמצעות MSBuild

פרויקט Android טיפוסי נבנה באמצעות Gradle, שבו הקוד המקורי נוצר באמצעות מעבר Gradle שמריץ את CMake ndk-build. עם תוסף לפיתוח משחקים ל-Android לתוכן חזותי תהליך ה-build הפוך. עכשיו, MSBuild הוא נקודת ההתחלה של תהליך ה-build. כל קוד המקור מסוג C/C++ נבנה קודם על ידי MSBuild בשביל פלטפורמות של Android שמותקנות במערכת שלך כחלק מהתוסף (עבור לדוגמה, "Android-x86_64"). לאחר מכן, MSBuild מפעיל את Gradle כדי לארוז את קובצי ספרייה שכוללים את לוגיקת C/C++ שלכם ב-APK.

קודם צריך לשכפל את לוגיקת ה-build הקיימת של הפרויקט ב-CMake או ndk-build ב-MSBuild. מגדירים את פלטפורמות היעד כך:

  • x86 Android
  • Android-x86_64
  • Android-armeabi-v7a
  • Android-arm64-v8a

כל הפלטפורמות האלה מסופקות על ידי תוסף פיתוח המשחקים של Android.

הוספת פלטפורמת Android

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

  1. בוחרים באפשרות Build > (בנייה >) מנהל התצורה.
  2. בקטע Active Solutions Platform, בוחרים באפשרות <New> (חדש).
  3. מקלידים את אחת מהאפשרויות הבאות לפלטפורמה החדשה:

    • Android-armeabi-v7a
    • Android-arm64-v8a
    • Android-x86
    • Android-x86_64
  4. בתיבה העתקת ההגדרות מ:, בוחרים מכשיר Android קיים אחר. או <Empty> אם עדיין אין לך פלטפורמות Android. מוודאים שהאפשרות יצירת פלטפורמות חדשות לפרויקט מופעלת.

הוספת פריט APK של Android

בוחרים באפשרות הוספה > פריט חדש > Visual C++ > Android > APK של Android ולוחצים הוספה. מגדירים את אפליקציית Android בתיבת הדו-שיח הבאה.

  • שם האפליקציה: השם הקריא לאנשים של האפליקציה שלכם ל-Android.
  • Application ID (מזהה אפליקציה): המזהה הייחודי לאפליקציה ל-Android.
  • מיקום של סייר הפתרונות: המיקום של התיקייה הווירטואלית שמכילה קובצי התמיכה שנוספו באריזת Android. כברירת מחדל, הקבצים האלה גם נמצאים בפרויקט בתיקייה עם אותו שם. אפשר להתאים אישית את מיקום באמצעות בחירה באפשרות יש לשים קובצי תמיכה במיקום מותאם אישית תיבת הסימון ולציין מיקום מותאם אישית. התיקייה הווירטואלית עדיין תהיה בפרויקט הנוכחי ב-Solution Explorer.

הגדרת MSBuild להפעיל את Gradle כדי לבנות APK

MSBuild לא יכולה להפעיל את Gradle, אלא אם היא יודעת את המיקום של פרויקט Gradle. מגדירים את המיקום הזה באמצעות המאפיין Gradle Build Directory, כך: שמוצגת באיור 1.


איור 1. נכס של Gradle Build Directory

בנוסף, מגדירים את מודול האפליקציה, וריאנט האפליקציה ו-APK שם המאפיינים (כפי שמוצג בתמונה הקודמת) כדי ש-MSBuild יוכל לדעת מה לבנות.

  • Application Module: השם של פרויקט המשנה Gradle. זוהי מוגדר בקובץ settings.gradle. בדרך כלל קוראים לו app במשך פרויקטים שנוצרו ישירות באמצעות Android Studio.
  • וריאנט של האפליקציה: הווריאנט של Android שמיועד ל-build. הערך הזה צריך להיות יוגדרו בהתאם להגדרות של MSBuild. לדוגמה, גרסת build לניפוי באגים צריך להגדיר ערך לווריאנט של ניפוי הבאגים. אם ה-MSBuild של הפרויקט תואם לשמות הווריאנטים של Gradle, ואז פשוט משתמשים ערך ברירת המחדל של $(Configuration).
  • שם ה-APK: השם של קובץ ה-APK שנוצר המשמש לניפוי באגים פרופיילינג במחשב הפיתוח שלך. השם הזה מועבר ל-Gradle סקריפט ה-build של Gradle צריך להתאים לכך (עיינו במאפיין MSBUILD_ANDROID_OUTPUT_APK_NAME בקטע הבא).

שינוי הסקריפטים של Gradle לפיתוח גרסת build

במהלך ה-build, MSBuild מעביר את הפרטים הבאים כמאפייני פרויקט לסקריפט של Gradle. שינוי הסקריפטים הקיימים של ה-build של הפרויקט (בדרך כלל שנקרא build.gradle) כדי לקרוא את המאפיינים האלה.

  • MSBUILD_MIN_SDK_VERSION: גרסת ה-SDK המינימלית לפיתוח ה-APK. סיום הערך הזה בתיבה מינימום גרסת Android SDK בפרויקט דף הנכס שמוצג באיור 2.


    איור 2. מאפיין גרסת Android SDK מינימלית

    סקריפט ה-build של Gradle צריך להגדיר את minSdkVersion לערך הזה, כפי שמוצג שלמטה.

    מגניב

    android {
      // ...
    
      defaultConfig {
          applicationId "com.yourcompany.yourapp"
          minSdkVersion MSBUILD_MIN_SDK_VERSION
          // ...
      }
    
      // ...
    }
    

    Kotlin

    android {
      // ...
    
      defaultConfig {
          applicationId = "com.yourcompany.yourapp"
          minSdkVersion(MSBUILD_MIN_SDK_VERSION)
          // ...
      }
    
      // ...
    }
    
  • MSBUILD_ANDROID_OUTPUT_APK_NAME: השם הצפוי של ה-APK ש-Gradle לבנות. תוסף פיתוח המשחקים ל-Android יחפש APK שתואם לשם הזה ול לפרוס אותו במכשירים מחוברים (לניפוי באגים וליצירת פרופילים). הגדרה בתיבה שם ה-APK בדף של מאפיין הפרויקט, שמוצג באיור 3.


    איור 3. נכס שם APK

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

    מגניב

    android {
      // ...
    
      applicationVariants.all { variant ->
          variant.outputs.all {
              outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME
          }
      }
    
      // ...
    }
    

    Kotlin

    android {
      // ...
    
      applicationVariants.all { variant ->
          variant.outputs.all {
              outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME
          }
      }
    
      // ...
    }
    
  • MSBUILD_JNI_LIBS_SRC_DIR: הספרייה שמכילה את הספריות המשותפות (.so קבצים) שפותחו על ידי MSBuild. צריך להגדיר את הערך הזה ב-Output Directory בדף של מאפיין הפרויקט, שמוצג בהמשך. כברירת מחדל, הערך הזה הוא מאפיין ספריית פלט של פרויקט Visual Studio, כפי שמוצג באיור 4.


    איור 4. מאפיין ספריית פלט

    Gradle צריכה לארוז את קובצי הספרייה המשותפת בתיקייה הזו בתוך ה-APK כדי שהאפליקציה ל-Android תטען אותם בזמן הריצה.

    מגניב

    android {
      // ...
    
      sourceSets {
          main {
              jniLibs.srcDirs += [MSBUILD_JNI_LIBS_SRC_DIR]
          }
      }
    
      // ...
    }
    

    Kotlin

    android {
      // ...
    
      sourceSets.getByName("main") {
          jniLibs.srcDir(MSBUILD_JNI_LIBS_SRC_DIR)
      }
    
      // ...
    }
    

    בנוסף, מכיוון שכל קוד C/C++ נבנה עכשיו על ידי MSBuild, צריך להסיר את externalNativeBuild קטעים בסקריפטים של גרסת ה-build של Gradle. הקטעים האלה שימשו להפעלת CMake או ndk-build כדי להדר את קוד C/C++ שלך, אבל שאין בו יותר צורך.

  • MSBUILD_NDK_VERSION: גרסת ה-NDK שתשמש לפיתוח פרויקט. מגדירים את הערך הזה בתיבה גרסת Android NDK דף מאפיין הפרויקט מוצג באיור 5.


    איור 5. נכס גרסת Android NDK

    סקריפט ה-build של Gradle צריך להגדיר את ndkVersion לערך הזה, כפי שמוצג כאן:

    מגניב

    android {
      // ...
    
      ndkVersion MSBUILD_NDK_VERSION
    
      // ...
    }
    

    Kotlin

    android {
      // ...
    
      ndkVersion = MSBUILD_NDK_VERSION
    
      // ...
    }
    

    מידע נוסף זמין בנושא Android Studio מתקינים ומגדירים את ה-NDK ואת ה-CMake.