העברה ל-Android Consumer SDK גרסה 2.0.0

עדכונים של Gradle ו-Android Gradle

שדרוג גרסאות Gradle ו-Android Gradle Plugin

תחילה, עליך לשדרג את גרסאות הפלאגין של Gradle ו-Android Gradle. השדרוג הזה כולל תאימות טובה יותר ליחסי תלות מסוימים ב-SDK (כולל Kotlin 1.9), וגם כמה תיקוני באגים קריטיים.

הגרסה הראשית של ה-SDK מחייבת את יחסי התלות של הגרסאות הבאות בפרויקט של אפליקציית Android שלכם:

  • גרסת Gradle מגרסה 7.5.0 ואילך, אבל לא גבוהה מ-7.6.0.
  • גרסת Android Gradle Plugin (AGP) בטווח של v7.4.x.

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

כדי לשנות את גרסת Gradle, צריך לשנות את השורה בקובץ /gradle/wrapper/gradle-wrapper.properties של הפרויקט

distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip

כדי לשנות את גרסת הפלאגין של Android Gradle, צריך לשנות את הקובץ build.gradle שמכיל את הבלוק buildscript. למשל:

buildscript {
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.1'
    }
}

העברת תמיכה בספריית Java 7 ל-Java 8

שלב 1 - הפעלת התמיכה בספריית Java 8

מקור

רמת ה-API המינימלית של ה-SDK היא 23 וגרסת ה-AGP הנדרשת היא 7.4 ואילך, ולכן ההגדרה שונה מעט ממסמכי התיעוד של המקור שצוין.

buildscript {

    repositories {
        google()
        mavenCentral()
        jcenter()
        maven {
            url = uri("https://storage.googleapis.com/r8-releases/raw")
        }
    }
    dependencies {
        classpath 'com.android.tools:r8:8.0.46'
        classpath 'com.android.tools.build:gradle:7.4.1'
    }
}

android {
    compileOptions {
        // Flag to enable support for the new language APIs
        coreLibraryDesugaringEnabled true
        // Sets Java compatibility to Java 8
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.3'
}

שלב 2 – מעבר מ-ProGuard או DexGuard ל-R8

R8, מקור

AGP v7.4+ משתמש ב-R8 ככלי ברירת המחדל לכיווץ, לערפול קוד (obfuscation) ולאופטימיזציה של הקובץ הבינארי, לכן לא נדרשת פעולה מיוחדת בשלב זה.

אם הפרויקט מועבר מ-AGP 4.0 ואילך, AGP עשוי להציג את האזהרות הבאות לגבי הסרות קבצים:

  • שימוש ב-useProguard true בקובץ build.gradle
  • שימוש ב-android.enableR8=false בקובץ gradle.properties

הסרת השורות האלה בדרך כלל פותרת את הבעיות האלה.

מעבר מגרסאות 1.6 עד 1.9 ל-Kotlin

שלב 1 – מעבר לפלאגין של Kotlin Gradle בגרסה 1.9.0

מקור

מעדכנים את גרסת הפלאגין Kotlin Gradle בקובץ build.gradle של המודול ברמה העליונה של האפליקציה. חשוב להוסיף org.jetbrains.kotlin:kotlin-gradle-plugin ליחסי התלות מבלוק ה-buildscript למקרה שהוא חסר.

buildscript {
  dependencies {
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
  }
}

אם אתם משתמשים בפלאגין Kotlin Gradle מגרסה 1.6.X או מ-1.7.X, צריך להעביר את האפליקציה מ-Kotlin-{3}. מידע נוסף זמין במדריך הרשמי להעברת נתונים.

שלב 2 – שדרוג kotlin-stdlib ל-1.9.0

מקור

צריך לשדרג את kotlin-stblib לגרסה 1.9.0 בקובץ build.gradle של האפליקציה.

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
}

חשוב להסיר את כל ההפניות אל kotlin-stdlib-jdk7 או אל kotlin-stdlib-jdk8. שתי יחסי התלות אוחדו ל-kotlin-stdlib החל מ-Kotlin 1.8.0.