Как исправить конфликт модуля OKHttp в Android проекте ReactNative со сторонним SDK? - PullRequest
0 голосов
/ 01 марта 2020

Я работаю над проектом ReactNative, чтобы у него было несколько нативных зависимостей. Когда мы разрабатывали программное обеспечение, мы заметили, что приложение имеет sh. Итак, мы выпустили проект и запустили на реальном устройстве (XIAOMI Redmi Note 4x) и начали отлаживать cra sh, и единственное полученное нами сообщение было: https://i.stack.imgur.com/8n3Zq.jpg

И наши собственные зависимости были:

implementation project(':@metrixorg_react-native-metrix')
implementation project(':lottie-react-native')
implementation project(':react-native-firebase')
implementation project(':react-native-vector-icons')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+"  // From node_modules
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation "com.google.android.gms:play-services-base:16.1.0"
implementation "com.google.firebase:firebase-core:16.0.9"
implementation "com.google.firebase:firebase-messaging:18.0.0"
implementation 'com.android.support:multidex:1.0.3'
implementation('com.crashlytics.sdk.android:crashlytics:2.9.9@aar') {
    transitive = true
}

Когда вы увидели журнал cra sh, мы обнаружили, что он определенно был из этого пакета: :@metrixorg_react-native-metrix.

Первым решением было удалить пакет, поэтому мы сделали это, и cra sh был полностью решен.

Когда мы убедились, что с пакетом возникла проблема, мы попытались exclude group: 'com.squareup.okhttp3' из пакета и собрал его заново, к сожалению, когда ':@metrixorg_react-native-metrix' находится в собственных зависимостях, у нас есть cra sh в другом месте приложения.

Последние изменения в build.gradle dependencies:

dependencies {
    implementation(project(':@metrixorg_react-native-metrix')){
        exclude group: 'com.squareup.okhttp3'
    }
    implementation(project(':lottie-react-native')){
        exclude group: 'com.squareup.okhttp3'
    }
    implementation(project(':react-native-firebase')){
        exclude group: 'com.squareup.okhttp3'
    }
    implementation project(':react-native-vector-icons')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.facebook.react:react-native:+"  // From node_modules
    implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
    implementation "com.google.android.gms:play-services-base:16.1.0"
    implementation "com.google.firebase:firebase-core:16.0.9"
    implementation "com.google.firebase:firebase-messaging:18.0.0"
    implementation 'com.android.support:multidex:1.0.3'
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.9@aar') {
        transitive = true
    }
    //  implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
    //  implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'



    if (enableHermes) {
        def hermesPath = "../../node_modules/hermes-engine/android/";
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
    } else {
        implementation jscFlavor
    }
}

Журнал react-native info:

System:
    OS: macOS Mojave 10.14.6
    CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
    Memory: 83.49 MB / 8.00 GB
    Shell: 5.3 - /bin/zsh
Binaries:
    Node: 10.14.1 - /usr/local/bin/node
    Yarn: 1.15.2 - /usr/local/bin/yarn
    npm: 6.4.1 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
    iOS SDK:
    Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    Android SDK:
    API Levels: 23, 25, 27, 28, 29
    Build Tools: 23.0.1, 25.0.3, 27.0.3, 28.0.2, 28.0.3
    System Images: android-27 | Google Play Intel x86 Atom
IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.6010548
    Xcode: 11.2.1/11B500 - /usr/bin/xcodebuild
npmPackages:
    react: 16.9.0 => 16.9.0
    react-native: 0.61.5 => 0.61.5
npmGlobalPackages:
    react-native-cli: 2.0.1
...