Я новичок в разработке приложений для Android. В настоящее время я планирую выполнить обновление версии API с API 25 до API 28. Необходимо ли это также для обновления версии Gladle? На мой взгляд, в этом нет необходимости.

Пожалуйста посоветуй.

Спасибо.

0
B David 23 Окт 2018 в 16:38

2 ответа

Лучший ответ

Это не обязательно. Обновлять или нет - это полностью ваш выбор. Обновление Gradle или обновление Sdk они не связаны друг с другом напрямую. Обновление SDK дает вам новые различные функции, обновление Gradle дает вам другие различные функции. Это разные. Но обновление - это всегда хорошо. Предлагаю вам обновить Gradle.

0
K M Rejowan Ahmmed 23 Окт 2018 в 13:45

Да, это необходимо. В некоторых случаях это не так. КОГДА СОВМЕСТИМО. При перемещении 3-х версий и ОСОБЕННО при переходе на новую поддержку AndroidX и API 28 это обязательно. Тот, кто говорит, что это не так, еще не сделал это обновление.

Плагины Gradle написаны специально для соответствия инструментам сборки, и хотя не каждое обновление является критическим изменением между ними. Рекомендуется использовать совместимые версии. Они должны быть совместимы. Например, если вы переходите на 28, вы, вероятно, будете использовать инструмент миграции для перехода на пространства имен androidx. Это нарушает большой объем кода и требует немного TLC для его восстановления и работы.

Затем вашему Gradle понадобится дополнительный файл свойств, чтобы знать, что дочерние пространства имен не будут совпадать и вызовут конфликты. Чтобы исправить это, мы добавляем файл gradle.properties в корень проекта.

< Сильный > gradle.properties

 android.enableJetifier=true
 android.useAndroidX=true
 org.gradle.jvmargs=-Xmx1536m <--OPTIONAL Up to you, memory management

AndroidX предназначен для новейших 28 API. Jetifier предназначен для включения транзитивных и прямых зависимостей, которые могут попытаться перевести их в последний режим компиляции совместимости с AndroidX.

Если вы не сделаете эти пункты, вы не получите правильную компиляцию 28.

Kotlin версии 1.2.70 - это то, что вам нужно. Поскольку .71 имеет проблемы с зависанием. Gradle . 3.3.0-alpha11 или вы можете сделать 3.4.0-alpha01. Никому не нравится использовать альфа-сборки, но если вы переходите на androidx и собираете инструменты 28, я рекомендую это, иначе вы будете бороться с проблемами компиляции. Просто следите за стабильным выпуском в ближайшие месяцы.

Убедитесь, что у вас есть последние репозитории всех проектов, а также, что они сейчас используют Jetpack. Итак, в родительский проект build.gradle включите.

УРОВЕНЬ ПРОЕКТА build.gradle

  buildscript {
    ext.kotlin_version = '1.2.70'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0-alpha11'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Уровень модуля приложения build.gradle

    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    apply plugin: 'kotlin-kapt'

        android {
           compileSdkVersion 28
           buildToolsVersion '28.0.3'
etc.....//////

     dependencies {
        //Kotlin Compiler Libraries
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
        implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.25.3'
        implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:0.25.3'

        //Android Google Libraries
        implementation 'androidx.appcompat:appcompat:1.0.0'
        implementation 'com.google.android.material:material:1.0.0'
        implementation 'androidx.appcompat:appcompat:1.0.0'
        implementation 'androidx.legacy:legacy-support-v4:1.0.0'
        implementation 'androidx.cardview:cardview:1.0.0'
        implementation 'androidx.recyclerview:recyclerview:1.0.0'
        implementation "androidx.constraintlayout:constraintlayout:2.0.0-alpha2"
        implementation "com.google.android.gms:play-services-location:16.0.0"

etc.....//////

Поверьте мне, когда я вам скажу. Я потратил дни на борьбу с обновлениями androidx, чтобы поскорее попасть в 28. Так что, если кто-то даст вам совместимые версии, которые подходят и хорошо работают вместе. Возьми и беги с этим. Я сделал это для вас выше.

Подробнее о переходе на версию 28 и поддержке новых пространств имен Android. https://developer.android.com/jetpack/androidx/migrate.

Одно из их самых болезненных обновлений, с которыми я когда-либо сталкивался, начиная с версии 1. Так что приготовьтесь к некоторым неприятностям;).

Удачного кодирования.

2
Sam 23 Окт 2018 в 14:42
52950542