Ошибка манифеста после миграции на androidX - PullRequest
0 голосов
/ 30 сентября 2018

Недавно я погрузился в изучение новых артефактов andoirdX, включая компоненты архитектуры Android.

После прочтения официальных документов и примеров кода Google я успешно добавил необходимые зависимости в файлы Gradle моего проекта и уровня приложения.Они выглядят следующим образом:

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:$navigationVersion"

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

и

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'kotlin-kapt'

apply plugin: 'androidx.navigation.safeargs'

android {
compileSdkVersion 28
defaultConfig {
    applicationId "_ _ _ _ _ _"
    minSdkVersion 15
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    vectorDrawables.useSupportLibrary = true
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
implementation 'com.google.android.material:material:1.0.0-rc01'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'


def lifecycle_version = "2.0.0-beta01"
def room_version = "2.0.0-beta01"
def navigationVersion = '1.0.0-alpha06'
kapt "androidx.room:room-compiler:$room_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

implementation 'androidx.core:core-ktx:1.0.0-alpha1'
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"
implementation "android.arch.navigation:navigation-fragment-ktx:$navigationVersion"
implementation "android.arch.navigation:navigation-ui-ktx:$navigationVersion"

implementation "androidx.room:room-runtime:$room_version"
 }

после синхронизации Gradle все работало нормально, однако, было показано сообщение об ошибке "Ошибка слияния манифеста"info "

Я дважды проверил приложение из репозитория Google , и все кажется нормальным.

Пожалуйста, примите мою скромную благодарность заранее

1 Ответ

0 голосов
/ 30 сентября 2018

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

Возьмите в качестве примера джетпак, который является частью AndroidX , и добавление его в ваши проекты требует некоторых необходимых шагов.Более того, если вы похожи на меня, который использует диалоги студии Android для создания приложения, у вас, скорее всего, будут проблемы такого рода, в том числе и те, о которых вы упоминали.

Причиной этого является то, что android studio по-прежнему использует Appcompat-v7, а androidX, с другой стороны, использует

androidx.appcompat:appcompat:1.0.0

см. Полный список артефактов

Прежде всего, после добавления ответственных зависимостей вам нужно добавить эти две строки в ваш gradle.properties файл

android.useAndroidX=true
android.enableJetifier=true

К сожалению, если бы вы зашли так далеко, вы все равно, вероятно, столкнулись бы с

Ошибка поля манифеста

это потому, что в ваших файлах автоматизированного макета все еще есть старые пути к классам, такие как

android.support.design.widget.CoordinatorLayout

, которые должны быть такими: androidx.constraintlayout.widget.ConstraintLayout

этот android.support.design.widget.AppBarLayout должен быть com.google.android.material.appbar.AppBarLayout и так далее.

После повторной проверки каждый путь к классам перестраивает ваш проект, и все должно быть в порядке.

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