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

עדכונים של Gradle ושל הפלאגין של Android Gradle

שדרוג הגרסאות של Gradle ושל הפלאגין של Android Gradle

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

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

  • גרסת Gradle‏ 7.5.0 לפחות, אבל לא יותר מ-7.6.0.
  • גרסה של פלאגין של Android Gradle (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, מקור

בגרסה 7.4 ומעלה של AGP, הכלי R8 משמש כברירת המחדל לכיווץ, לערפול קוד ולאופטימיזציה של הקובץ הבינארי, כך שאין צורך בפעולה מיוחדת בשלב הזה.

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

  • שימוש ב-useProguard true בקובץ build.gradle
  • שימוש אחד (android.enableR8=false) בקובץ gradle.properties

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

העברה מ-Kotlin 1.6 ל-1.9

שלב 1 – מעבר ל-Kotlin Gradle Plugin 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-synthetics. מידע נוסף זמין במדריך הרשמי להעברת נתונים.

שלב 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.