织物库中的格式错误的异常

Posted

技术标签:

【中文标题】织物库中的格式错误的异常【英文标题】:Malformed exception in fabric library 【发布时间】:2018-11-28 01:23:24 【问题描述】:

最近我在日志中看到一个异常,即 Fabric(Beta)尝试检查更新,这是错误:

E/Beta: Error while checking for updates from null
io.fabric.sdk.android.services.network.HttpRequest$HttpRequestException: java.net.MalformedURLException: Protocol not found: null?instance=

我不知道为什么 Fabric 会尝试使用空 URL 检查更新,但我真的很想消除该错误。

详细的堆栈跟踪:

E/Beta: Error while checking for updates from null
    io.fabric.sdk.android.services.network.HttpRequest$HttpRequestException: java.net.MalformedURLException: Protocol not found: null?instance=7f856ab5-12f8-4723-9e84-569dab8e9760&build_version=1030300&display_version=1.3.3&source=3
    at io.fabric.sdk.android.services.network.HttpRequest.encode(HttpRequest.java:722)
    at io.fabric.sdk.android.services.network.HttpRequest.get(HttpRequest.java:865)
    at io.fabric.sdk.android.services.network.DefaultHttpRequestFactory.buildHttpRequest(DefaultHttpRequestFactory.java:85)
    at io.fabric.sdk.android.services.common.AbstractSpiCall.getHttpRequest(AbstractSpiCall.java:137)
    at com.crashlytics.android.beta.CheckForUpdatesRequest.invoke(CheckForUpdatesRequest.java:48)
    at com.crashlytics.android.beta.AbstractCheckForUpdatesController.performUpdateCheck(AbstractCheckForUpdatesController.java:166)
    at com.crashlytics.android.beta.AbstractCheckForUpdatesController.checkForUpdates(AbstractCheckForUpdatesController.java:139)
    at com.crashlytics.android.beta.AbstractCheckForUpdatesController.initialize(AbstractCheckForUpdatesController.java:91)
    at com.crashlytics.android.beta.Beta.doInBackground(Beta.java:78)
    at com.crashlytics.android.beta.Beta.doInBackground(Beta.java:30)
    at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:63)
    at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:28)
    at io.fabric.sdk.android.services.concurrency.AsyncTask$2.call(AsyncTask.java:311)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    at java.lang.Thread.run(Thread.java:818)
    Caused by: java.net.MalformedURLException: Protocol not found: null?instance=7f856ab5-12f8-4723-9e84-569dab8e9760&build_version=1030300&display_version=1.3.3&source=3
    at java.net.URL.<init>(URL.java:176)
    at java.net.URL.<init>(URL.java:125)
    at io.fabric.sdk.android.services.network.HttpRequest.encode(HttpRequest.java:720)
    at io.fabric.sdk.android.services.network.HttpRequest.get(HttpRequest.java:865) 
    at io.fabric.sdk.android.services.network.DefaultHttpRequestFactory.buildHttpRequest(DefaultHttpRequestFactory.java:85) 
    at io.fabric.sdk.android.services.common.AbstractSpiCall.getHttpRequest(AbstractSpiCall.java:137) 
    at com.crashlytics.android.beta.CheckForUpdatesRequest.invoke(CheckForUpdatesRequest.java:48) 
    at com.crashlytics.android.beta.AbstractCheckForUpdatesController.performUpdateCheck(AbstractCheckForUpdatesController.java:166) 
    at com.crashlytics.android.beta.AbstractCheckForUpdatesController.checkForUpdates(AbstractCheckForUpdatesController.java:139) 
    at com.crashlytics.android.beta.AbstractCheckForUpdatesController.initialize(AbstractCheckForUpdatesController.java:91) 
    at com.crashlytics.android.beta.Beta.doInBackground(Beta.java:78) 
    at com.crashlytics.android.beta.Beta.doInBackground(Beta.java:30) 
    at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:63) 
    at io.fabric.sdk.android.InitializationTask.doInBackground(InitializationTask.java:28) 
    at io.fabric.sdk.android.services.concurrency.AsyncTask$2.call(AsyncTask.java:311) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
    at java.lang.Thread.run(Thread.java:818) 

【问题讨论】:

【参考方案1】:

我通过更新 crashlytics 库版本解决了很多错误日志和上面的异常。

【讨论】:

这也对我有用,我仍在寻找 Fabric 中关于为什么会发生这种情况的任何信息,或者他们是否甚至知道发生这种情况但还没有。如果您找到任何东西,请发布链接。【参考方案2】:

我还解决了在 /app/build.gradle 文件中更新 Crashlytics 版本的问题。

为了方便,我把修复代码留在这里:

dependencies 

    compile('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') 
        transitive = true;
    


【讨论】:

以上是关于织物库中的格式错误的异常的主要内容,如果未能解决你的问题,请参考以下文章

Java中的异常处理

java中的数字格式异常,输入错误

外部链接的 C 库中的异常传播

如何模糊织物 js 中的对象(不是图像)?

处理 WPF 自定义控件库中的所有异常

无法从 main.cpp 中的共享库中捕获异常