Как успешно повысить целевой уровень API - PullRequest
0 голосов
/ 05 ноября 2019

Я хочу повысить целевой уровень API моего приложения, не затрагивая другие библиотеки, от которых зависит приложение, например, Firebase и другие. Я попытался изменить его в структуре проекта в модуле приложения, но это не сработало. Ничего не изменилось в файле Gradle. Мой следующий вариант - увеличить его, отредактировав сам файл Gradle и увеличив его до уровня API 28. Однако я боюсь влияния, которое это может оказать на другие библиотеки. Ниже приведен мой файл сборки, пожалуйста, помогите мне.

android {

    compileSdkVersion 26
    defaultConfig {
        applicationId "com.chomba.haroldking.kuta"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:26.1.0'

    testImplementation 'junit:junit:4.12'

    androidTestImplementation ' com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.volley:volley:1.1.0'
    implementation 'com.jakewharton.threetenabp:threetenabp:1.2.1'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'com.android.support:cardview-v7:26.1.0'
    implementation 'com.firebaseui:firebase-ui-database:3.1.0'
    implementation 'com.android.support:palette-v7:26.1.0'
    implementation 'com.wdullaer:materialdatetimepicker:3.1.3'
    implementation 'com.google.firebase:firebase-auth:16.0.1'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-core:16.0.0'
    implementation 'com.android.support:support-annotations:28.0.0'
    implementation 'com.google.firebase:firebase-storage:16.0.1'
}
apply plugin: 'com.google.gms.google-services'

Нужно ли вносить изменения в другие библиотеки

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Я пытался изменить его в структуре проекта в модуле приложения, но это не сработало. Ничего не изменилось в файле Gradle. Мой следующий вариант - увеличить его, отредактировав сам файл Gradle и увеличив его до уровня API 28.

Изменение его в структуре проекта не сделает для вас никакой магии, вы все равноЯ должен следовать тому же процессу, что и вы, изменив файл Gradle.

Я, однако, боюсь влияния, которое это может оказать на другие библиотеки

Сохранить 3-йПартийные библиотеки также актуальны, использование более новых версий библиотек в старых sdks, скорее всего, вызовет проблемы, так как более новые Android SDK имеют изменения в поведении.

Вот несколько личных советов по миграции, не отвлекаясь на то, что можетперерыв:

1. Увеличивайте целевой API каждый раз на 1, а затем полностью проверяйте его
Например, обновитесь до API 27 с 26, протестируйте егоа затем обновить его до 28 и так далее. Причина этого заключается в том, чтобы сузить и учесть изменения поведения в каждом API, начиная с предыдущего целевого API. Мало того, что это будет менее подавляющим, было бы легче найти решения проблем, которые могут возникнуть впоследствии. Если вы перейдете на 29 из 26 напрямую, выявить проблему будет очень сложно.

2. Прочитайте руководства по миграции для каждого Android SDK
Этистраницы действительно помогли определить устаревшие классы / функции, используемые даже сторонними библиотеками:
Руководство по миграции на Android 8.0
Руководство по миграции на Android 9.0

3. Если после обновления возникла проблема в сторонней библиотеке, скорее всего, на странице Github Issues. Если его там нет, создайте новую проблему (следуя указанным там инструкциям) . Нет лучшего места для получения конкретных ответов библиотеки, чем на сайте репозитория, где сами разработчики могут дать вам хорошие предложения.

4. Прочитайте журнал изменений, начиная с предыдущей версии библиотек, в которых возникли проблемы.
Некоторые библиотеки имеют устаревшую документацию, и более новые версии могут вызывать проблемы. Например, когда я переносил Dagger, некоторые классы были устаревшими в более новых версиях, но не были задокументированы, и я узнал об этом только после прочтения журнала изменений.

1 голос
/ 05 ноября 2019

Чтобы обновить targetSdkVersion, вы должны обновить его в build.gradle вместе с compileSdkVersion (вы также получите ошибку, если не обновите его).

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28
    }
}

Один развы обновляете targetSdkVersion и compileSdkVersion, вам также необходимо обновить версии библиотеки поддержки до 28.0.0, поскольку основная версия библиотеки поддержки должна соответствовать targetSdkVersion. Например:

implementation 'com.android.support:appcompat-v7:28.0.0' // instead of 26.1.0

Версия 28.0.0 является окончательной версией библиотеки поддержки . Для продолжения использования библиотек поддержки после обновления до API 29 необходимо выполнить миграцию на AndroidX .

. При обновлении также следует проверить, были ли соответствующие изменения в Android 9 * 1022. * что вы должны учитывать.

В вашем случае вы не можете обновить targetSdkVersion без обновления зависимостей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...