"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"
}
将 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"
}