Сбой манифеста после импорта модуля - PullRequest
3 голосов
/ 28 июня 2019

Привет, я разрабатываю SDK, и когда я добавляю эти SDK в проект приложения, я получаю следующую ошибку:

Ошибка слияния манифеста: Атрибут application @ appComponentFactory value = (android.support.v4.app.CoreComponentFactory) из [Com.android.support:support-compat:28.0.0] AndroidManifest.xml: 22: 18-91

    is also present at [androidx.core:core:1.0.1] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:22:5-125:19 to override.

build.gradle это следующие

Приложение build.gradle

dependencies {
    implementation project(':sdkA')
    implementation project(':sdkB')

    implementation 'org.webrtc:google-webrtc:1.0.28032'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:preference-v7:28.0.0'
    implementation 'com.android.support:preference-v14:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:gridlayout-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'io.michaelrocks:libphonenumber-android:8.4.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.android:flexbox:1.0.0'
    implementation 'com.github.woxthebox:draglistview:1.6.3'
    implementation 'com.balysv:material-ripple:1.0.2'
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16'

    implementation('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
        transitive = true
    }

    // Google Lifecycle Components
    implementation "android.arch.lifecycle:extensions:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
}

build.gradle of sdkA

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'org.webrtc:google-webrtc:1.0.28032'

    implementation('io.socket:socket.io-client:1.0.0') {
        exclude group: 'org.json', module: 'json'
    }

    implementation('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
        transitive = true
    }


    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.0.0'



    // Google Lifecycle Components
    implementation "android.arch.lifecycle:extensions:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

    implementation 'androidx.appcompat:appcompat:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

build.gradle of sdkB

dependencies {
    implementation "com.android.support:appcompat-v7:27.1.1"
    implementation "com.android.support:recyclerview-v7:27.1.1"
}

Как можно решить?

Спасибо

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Хорошо, я сам решал эту проблему последний день или около того.кошмар.

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

См. эту проблему, где Майк Харди имеетбыла большая помощь.https://github.com/mikehardy/jetifier/issues/27

Я бы рекомендовал избегать AndroidX до приземления 0.60.0.

ИСТОЧНИК ПРОБЛЕМЫ источник проблемы длябольшинство из нас - это селектор диапазона + в зависимостях gradle.

, как показано здесь в качестве примера в response-native-google-analytics-bridge:

    compile "com.google.android.gms:play-services-analytics:${safeExtGet('googlePlayServicesVersion', '+')}"
    compile "com.google.android.gms:play-services-tagmanager-v4-impl:${safeExtGet('googlePlayServicesVersion', '+')}"

для большинства из насмы не устанавливаем значение googlePlayServicesVersion на верхнем уровне android / build.gradle

, поэтому мы захотим указать googlePlayServicesVersion = "16.+" +, потому что есть различные другие доступные пакеты служб Google, и они не все натот же номер версии.это захватит 16.XX и не пойдет выше.17.XX вызывает дальнейшие проблемы.

И мы также хотим установить для supportLibVersion значение 28.0.0, которое используется библиотеками поддержки Android: com.android.support:appcompat-v7 наиболее распространенный.

РЕШЕНИЕ

android / build.gradle

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 21
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
        googlePlayServicesVersion = "16.+"
    }
...

AndroidManifest.xml Верхняя строка: <manifest xmlns:tools="http://schemas.android.com/tools"

тег приложения: tools:replace="android:appComponentFactory" android:appComponentFactory="android.support.v4.app.CoreComponentFactory"

убедитесь, что ваш gradle-wrapper.properties использует 4.10.1

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

и, наконец, убедитесь, что вы не используете Android X.

gradle.properties:

android.enableJetifier=false
android.useAndroidX=false

Дополнительный шаг (вам может понадобиться это)

, сбой, который не работает, попробуйте также добавить jetifier.Мы будем использовать это для запуска ваших модулей node_modules и обеспечения того, чтобы все использовали библиотеки не androidx.

npm i jetifier --save-dev или yarn add jetifier --dev

, а затем добавьте в сценарий postinstall

"scripts": {
   "postinstall": "jetify -r"
}
0 голосов
/ 28 июня 2019

Попробуйте применить предложение, добавив

tools:replace="android:appComponentFactory"

к тегу приложения

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