"cordova-plugin-firebasex" 和 "cordova-plugin-advanced-http" 插件之间的冲突

Conflict Between "cordova-plugin-firebasex" and "cordova-plugin-advanced-http" Plugins

firebasex 添加到项目后,“cordova-plugin-advanced-http”的 http 客户端将此错误发送到 logcat

03-17 11:39:23.777 13563 31774 E AndroidRuntime: Process: com.appname.name, PID: 13563
03-17 11:39:23.777 13563 31774 E AndroidRuntime: java.lang.NoSuchMethodError: No virtual method getHttpUrlChecked(Ljava/lang/String;)Lokhttp3/HttpUrl; in class Lokhttp3/internal/Internal; or its super classes (declaration of 'okhttp3.internal.Internal' appears in /data/app/com.appname.name-o8MIMfLOiDEjA11Lh1r2Sg==/base.apk!classes3.dex)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at okhttp3.internal.huc.OkHttpURLConnection.buildCall(OkHttpURLConnection.java:373)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at okhttp3.internal.huc.OkHttpURLConnection.getOutputStream(OkHttpURLConnection.java:260)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at okhttp3.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:229)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at okhttp3.internal.huc.OkHttpsURLConnection.getOutputStream(OkHttpsURLConnection.java:26)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at com.silkimen.http.HttpRequest.openOutput(HttpRequest.java:2599)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at com.silkimen.http.HttpRequest.send(HttpRequest.java:2904)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at com.silkimen.cordovahttp.CordovaHttpBase.sendBody(CordovaHttpBase.java:161)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at com.silkimen.cordovahttp.CordovaHttpBase.run(CordovaHttpBase.java:81)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
03-17 11:39:23.777 13563 31774 E AndroidRuntime:        at java.lang.Thread.run(Thread.java:919)
03-17 11:39:25.428  4165  4587 E NativeSemDvfsCpuManager: release:: Start
03-17 11:39:25.428  4165  4587 E NativeSemDvfsCpuManager: release():: mIsAcquired = 1 , mName = CPU  , mTagName : AudioFlinger 
03-17 11:39:25.430  4165  4587 E NativeCustomFrequencyManager: [NativeCFMS] BpCustomFrequencyManager::releaseDVFSLock() 
03-17 11:39:25.430  4165  4587 E NativeSemDvfsCpuManager: release:: End
03-17 11:39:25.469  4693  4733 E KernelCpuUidUserSysTimeReader: Negative user/sys time delta for UID=10253
03-17 11:39:25.469  4693  4733 E KernelCpuUidUserSysTimeReader: Prev times: u=6341651000 s=3599142000 Curr times: u=6341102000 s=3598859000

经过一些调试和研究后,我将 okhttp 更改为其他一些版本,如 3.4.1 和 3.3.1 以及 3.4.0 和其他版本,但没有任何效果我也尝试使用一些其他版本的 FirebaseX lib 类似于 cli 但没有工作

ionic info

Ionic:

   Ionic CLI                     : 6.12.3 (/Users/osama/.nvm/versions/node/v14.15.4/lib/node_modules/@ionic/cli)
   Ionic Framework               : @ionic/angular 5.5.1
   @angular-devkit/build-angular : 0.1001.7
   @angular-devkit/schematics    : 10.2.0
   @angular/cli                  : 10.1.3
   @ionic/angular-toolkit        : 2.3.3

Cordova:

   Cordova CLI       : 10.0.0
   Cordova Platforms : android 9.0.0
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 5.0.0, (and 13 other plugins)

Utility:

   cordova-res (update available: 0.15.3) : 0.15.2
   native-run                             : 1.3.0

System:

   Android SDK Tools : 26.1.1 (/Users/osama/Library/Android/sdk)
   ios-sim           : 8.0.2
   NodeJS            : v14.15.4 (/Users/osama/.nvm/versions/node/v14.15.4/bin/node)
   npm               : 6.14.10
   OS                : macOS Big Sur
   Xcode             : Xcode 12.4 Build version 12D4e

问题出在哪里?

您不能混用 OkHttp 的多个版本,因此您应该检查您是否使用了一个一致的版本。尝试将所有依赖项升级到 4.9.1 并查看它是否修复它。

还有一种 BOM 机制可以在像 Maven 和 Gradle https://github.com/square/okhttp#releases

这样的构建系统中强制执行此操作
    dependencies {
       // define a BOM and its version
       implementation(platform("com.squareup.okhttp3:okhttp-bom:4.9.1"))
       
       // define any required OkHttp artifacts without version
       implementation("com.squareup.okhttp3:okhttp")
       implementation("com.squareup.okhttp3:logging-interceptor")
    }

package.json中使用这个版本的 OKHTTP

"cordova-plugin-advanced-http": {
    "OKHTTP_VERSION": "3.12.1"
  }