You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未集成Firebase的Android应用触发Firebase请求并崩溃的排查求助

问题:未集成Firebase的Android应用出现FirebaseLogging请求并因StrictMode崩溃
  • 应用未手动集成Firebase,全局搜索确认代码中无"firebase"相关内容
  • Logcat中出现请求FirebaseLogging服务的日志:

I/TRuntime.CctTransportBackend: Making request to:
https://firebaselogging.googleapis.com/v0cc/log/batch?format=json_proto3

  • 近期更新依赖后,触发该请求时应用持续崩溃,崩溃原因为StrictMode.UntaggedSocketViolation违规
  • 应用未使用第三方统计或广告包,依赖列表如下:
implementation "androidx.activity:activity:1.7.1"
implementation 'androidx.fragment:fragment:1.5.7'
implementation "androidx.navigation:navigation-fragment:2.5.3"
implementation "androidx.navigation:navigation-ui:2.5.3"
implementation "androidx.preference:preference:1.2.0"
implementation "androidx.datastore:datastore:1.0.0"
implementation 'androidx.gridlayout:gridlayout:1.0.0'

implementation 'androidx.work:work-runtime:2.8.1'

implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.3.0'
implementation 'androidx.browser:browser:1.5.0'

implementation 'com.google.android.gms:play-services-plus:17.0.0'
implementation 'com.google.android.gms:play-services-auth:20.5.0'
implementation 'com.google.android.gms:play-services-location:21.0.1'
implementation('com.google.guava:guava:30.1.1-android') {
    exclude group: "com.google.guava"
}

implementation 'com.google.android.gms:play-services-oss-licenses:17.0.1'

implementation 'androidx.multidex:multidex:2.0.1'

implementation 'joda-time:joda-time:2.10.10'

implementation 'com.github.angads25:filepicker:1.1.1'

implementation 'commons-io:commons-io:2.5'

implementation 'com.google.android.flexbox:flexbox:3.0.0'
implementation 'com.google.android.ads.consent:consent-library:1.0.8'

implementation 'com.github.hedzr:android-file-chooser:d7b831bf0a'

implementation('com.google.http-client:google-http-client-gson:1.26.0') {
    exclude group: 'org.apache.httpcomponents'
}
implementation('com.google.api-client:google-api-client-android:1.26.0') {
    exclude group: 'org.apache.httpcomponents'
}
implementation('com.google.apis:google-api-services-drive:v3-rev136-1.25.0') {
    exclude group: 'org.apache.httpcomponents'
}

implementation 'com.android.billingclient:billing:6.0.0'

implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'org.apache.commons:commons-lang3:3.11'

完整崩溃日志:

StrictMode policy violation: android.os.strictmode.UntaggedSocketViolation: Untagged socket detected; use TrafficStats.setThreadSocketTag() to track all network usage
    at android.os.StrictMode.onUntaggedSocket(StrictMode.java:2023)
    at com.android.server.NetworkManagementSocketTagger.tag(NetworkManagementSocketTagger.java:82)
    at libcore.io.BlockGuardOs.tagSocket(BlockGuardOs.java:50)
    at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:313)
    at libcore.io.IoBridge.socket(IoBridge.java:640)
    at java.net.PlainSocketImpl.socketCreate(PlainSocketImpl.java:124)
    at java.net.AbstractPlainSocketImpl.create(AbstractPlainSocketImpl.java:128)
    at java.net.Socket.createImpl(Socket.java:489)
    at java.net.Socket.getImpl(Socket.java:552)
    at java.net.Socket.setSoTimeout(Socket.java:1180)
    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.connect(HttpURLConnectionImpl.java:127)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
    at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)
    at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:26)
    at com.google.android.datatransport.cct.CctTransportBackend.doSend(CctTransportBackend.java:303)
    at com.google.android.datatransport.cct.CctTransportBackend.$r8$lambda$bLAzIpNF4NtapXlUpPVGhzxyNT8(Unknown Source:0)
    at com.google.android.datatransport.cct.CctTransportBackend$$ExternalSyntheticLambda0.apply(Unknown Source:4)
    at com.google.android.datatransport.runtime.retries.Retries.retry(Retries.java:54)
    at com.google.android.datatransport.cct.CctTransportBackend.send(CctTransportBackend.java:372)
    at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader.logAndUpdateState(Uploader.java:146)
    at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader.lambda$upload$1$com-google-android-datatransport-runtime-scheduling-jobscheduling-Uploader(Uploader.java:105)
    at com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader$$ExternalSyntheticLambda2.run(Unknown Source:8)
    at com.google.android.datatransport.runtime.SafeLoggingExecutor$SafeLoggingRunnable.run(SafeLoggingExecutor.java:47)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)

触发原因分析

从崩溃日志的调用栈可以看到,请求来自com.google.android.datatransport.cct.CctTransportBackend——这是Google Data Transport库的组件,CCT(Crashlytics Cloud Transport)是它的默认传输通道,会调用Firebase相关的日志端点。

这个库是被你依赖的某个Google官方库间接引入的,嫌疑最大的包括:

  • com.google.android.gms:play-services-auth/play-services-location等Play Services组件
  • com.android.billingclient:billing(新版本Billing库会引入Data Transport收集诊断数据)
  • com.google.android.ads.consent:consent-library

这些官方库会自动启用Data Transport来收集匿名诊断信息,无需手动集成Firebase。

崩溃的直接原因是:你的应用开启了StrictMode的严格网络检测规则,而Data Transport发起网络请求时没有给Socket设置TrafficStats标签,触发了UntaggedSocketViolation并导致崩溃。


解决方法

方法1:禁用Data Transport自动上报

在AndroidManifest.xml中添加元数据配置,阻止Data Transport发送数据:

<!-- 全局禁用Data Transport -->
<meta-data
    android:name="firebase.datatransport.enabled"
    android:value="false" />

<!-- 仅禁用CCT传输通道(更精准) -->
<meta-data
    android:name="com.google.android.datatransport.cct.enabled"
    android:value="false" />

方法2:排除Data Transport依赖

如果不需要该功能,可以在引入的Google官方依赖中排除Data Transport模块,示例如下:

implementation 'com.android.billingclient:billing:6.0.0' {
    exclude group: 'com.google.android.datatransport'
}

implementation 'com.google.android.gms:play-services-auth:20.5.0' {
    exclude group: 'com.google.android.datatransport'
}

注意:排除前需确认不会影响依赖库的核心功能,部分库可能依赖Data Transport运行。

方法3:调整StrictMode规则

若需保留StrictMode但允许未标记的Socket请求,可在StrictMode配置中关闭对应检测:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
    .detectAll()
    .penaltyLog()
    .penaltyDeath()
    .permitUntaggedSockets() // 允许未标记的Socket请求
    .build();
StrictMode.setThreadPolicy(policy);

建议仅在debug模式下使用此配置,release版本保持严格检测以规范网络请求。


内容的提问来源于stack exchange,提问作者Hong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:25:18