- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经尝试将 Crashlytics
添加到我的应用程序中,该应用程序已经通过 detectAll()
启用了 StrictMode
。结果是 Untagged socket detected;使用 TrafficStats.setThreadSocketTag() 跟踪所有网络使用情况
。
全栈:
E/StrictMode: null
java.lang.Throwable: Untagged socket detected; use TrafficStats.setThreadSocketTag() to track all network usage
at android.os.StrictMode.onUntaggedSocket(StrictMode.java:2012)
at com.android.server.NetworkManagementSocketTagger.tag(NetworkManagementSocketTagger.java:78)
at libcore.io.BlockGuardOs.tagSocket(BlockGuardOs.java:47)
at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:310)
at libcore.io.IoBridge.socket(IoBridge.java:667)
at java.net.PlainSocketImpl.socketCreate(PlainSocketImpl.java:116)
at java.net.AbstractPlainSocketImpl.create(AbstractPlainSocketImpl.java:98)
at java.net.Socket.createImpl(Socket.java:484)
at java.net.Socket.getImpl(Socket.java:547)
at java.net.Socket.setSoTimeout(Socket.java:1175)
at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:139)
at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:538)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(Unknown Source:0)
at io.fabric.sdk.android.services.network.HttpRequest.code(HttpRequest.java:1357)
at io.fabric.sdk.android.services.settings.DefaultSettingsSpiCall.handleResponse(DefaultSettingsSpiCall.java:104)
at io.fabric.sdk.android.services.settings.DefaultSettingsSpiCall.invoke(DefaultSettingsSpiCall.java:88)
at io.fabric.sdk.android.services.settings.DefaultSettingsController.loadSettingsData(DefaultSettingsController.java:88)
at io.fabric.sdk.android.services.settings.DefaultSettingsController.loadSettingsData(DefaultSettingsController.java:65)
at io.fabric.sdk.android.services.settings.Settings.loadSettingsData(Settings.java:153)
at io.fabric.sdk.android.Onboarding.retrieveSettingsData(Onboarding.java:126)
at io.fabric.sdk.android.Onboarding.doInBackground(Onboarding.java:99)
at io.fabric.sdk.android.Onboarding.doInBackground(Onboarding.java:45)
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:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
W/System.err: StrictMode VmPolicy violation with POLICY_DEATH; shutting down.
我尝试新建一个项目,还是一样,测试项目中MainActivity
中的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
setCrashlytics();
setStrictMode();
}
private void setCrashlytics() {
Fabric.with(this, new Crashlytics());
}
private void setStrictMode() {
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath()
.build());
}
}
我确实看到了 Okhttp has this issue (以及其他库)但我不知道这是否相关。
我将添加一个解决方法作为答案(基本上不使用 detectAll()
),但我想知道是否有合适的解决方案,也许有一种方法可以将标签添加到套接字?
最佳答案
解决方法是不使用detectAll()
,我复制了detectAll()
的代码(来自Crashlytics)并修改了它;但是我不得不删除部分代码,因为有些类无法访问。
我不太喜欢这种解决方法,但我不确定是否有更好的解决方案。
private void setStrictMode() {
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectAll() // detectDiskReads, detectDiskWrites, detectNetwork
.penaltyLog()
.build());
StrictMode.setVmPolicy(getStrictModeBuilder().build());
}
}
private StrictMode.VmPolicy.Builder getStrictModeBuilder() {
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
builder.detectLeakedSqlLiteObjects();
final int sdkInt = Build.VERSION.SDK_INT;
if (sdkInt >= Build.VERSION_CODES.HONEYCOMB) {
builder.detectActivityLeaks();
builder.detectLeakedClosableObjects();
}
if (sdkInt >= Build.VERSION_CODES.JELLY_BEAN) {
builder.detectLeakedRegistrationObjects();
}
if (sdkInt >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
builder.detectFileUriExposure();
}
if (sdkInt >= Build.VERSION_CODES.O) {
builder.detectContentUriWithoutPermission();
}
builder.penaltyLog().penaltyDeath();
return builder;
}
选项二 - 从 VmPolicy
中删除 penaltyDeath()
- 这就是我目前正在做的:
private void setStrictMode() {
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectAll() // detectDiskReads, detectDiskWrites, detectNetwork
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
.build());
}
关于android - 启用 StrictMode 的 Crashlytics(检测全部)给出 "untagged socket detected",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53195068/
我在 React 实践中发现了这个组件,但我不知道确切的行为是什么。 例如 const App = () => { return ( Welcome to
我有一个 JSON 函数在不同的 Activity 中以相同的格式正常工作,但是当我在这里运行它时,我收到错误。我已经确定了实际的 JSON 调用,该调用抛出了异常,但不知道为什么。请参阅 'JSON
我的问题是这样的,我正在尝试了解此跟踪的来源: 11-06 22:07:36.593 2744-3492/com.spot.spottester W/f: Suppressed StrictMode
这个问题在这里已经有了答案: Strict mode in android 2.2 (6 个答案) 关闭 7 年前。 StrictMode.ThreadPolicy policy = new Str
我正在尝试使用函数作为组件内的 prop,并且该组件是另一个组件的子组件。但该功能不起作用。?我可以知道为什么吗?这是我在控制台中收到的警告。 Warning: findDOMNode is depr
当我在 Android 2.3.6 上运行这段代码时,它工作正常。在 4.0 上我得到一个 StrictMode 异常。从关于 SO 的一些问题来看,您似乎无法在 UI 线程上进行网络操作。但我没有在
Draggable 包在严格模式下导致错误: Warning: findDOMNode is deprecated in StrictMode. findDOMNode waspassed an in
在应用发布之前,我在 Google Play 中出现以下错误。这不是警告,而是错误。我可以看到带有类似堆栈跟踪的警告。我不确定该应用程序是否会因此而被拒绝,因为发布前报告的摘要令人困惑。它说没有问题。
我正在开发我的第一个 Android 应用程序,并且主要基于研究内置。当我尝试登录我的用户时,我得到了 android.os.NetworkOnMainThreadException错误。我在网上读到
当我打开严格模式检测全部时,我的应用程序崩溃了应用程序的 super.onCreate()(即,甚至在我的任何代码执行任何操作之前)。 我的应用程序 onCreate 开启严格模式如下 overrid
Android 应用程序遇到了一些 ANR 问题,因此我实现了 StrictMode 策略。以前从未使用过这个,所以希望有人可以帮助解释以下内容: 为什么日志显示 2 个看似相似的违规行为,除了前 4
当 Android 的 StrictMode 检测到泄漏对象(例如 Activity )违规时,如果我能及时捕获堆转储,那将会很有帮助。但是,没有明显的方法来配置它来执行此操作。有谁知道可以用来实现它
我一直在尝试在 StrictMode 中运行我的应用程序,以检查是否存在任何可能已经潜入的隐藏问题。我遇到的一个问题是在使用 ContentResolver 时似乎是 Leaked DatabaseC
我已经开始使用 Android StrictMode 并发现在开发过程中让它始终运行会很棒,而不仅仅是在我在 git 中创建的特殊分支上。我这样做的原因是我的应用程序要求运行 1.6 及更高版本。 我
实际上,我正在尝试编写一个具有 minSDKversion:8 和 targetSDKversion:15 的应用,我需要使用 StrictMode.ThreadPolicy policy =
我正在运行我的应用程序,并在开发中激活了 StrictMode,如此处所述 StrictMode for lower platform versions并注意到一条错误消息,我不知道该怎么想,也找不到
经过一番试验,我发现在严格模式下会出现以下问题。 如果有人可以解释原因,我会很感兴趣。 举这个简单的例子,里面渲染 我只是安排一个更新状态的超时 : Example : let firstRender
当启用 StrictMode 时,它总是提示 FileReader 有 DiskReadViolation。无论我如何改进,它仍然存在。我怀疑它与 UIThread 滞后问题有关,请告诉我如何解决
我是 android 的新手,正在调试现有的应用程序。当应用程序运行时,我遇到了 StrictMode 策略违规。我想了解违规发生后采取了哪些措施?我正在粘贴日志。 D/StrictMode( 454
我只想使用 StrictMode.noteSlowCall 。我不知道该怎么办。开发者网站/androidxref 没有足够的解释。 下面是我的代码。 @Override public void on
我是一名优秀的程序员,十分优秀!