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

Android应用冷启动耗时6-10秒启动缓慢问题排查咨询

Android应用冷启动缓慢问题修复

问题背景

  • 应用无重负载逻辑,仅实现基础页面跳转与广告展示功能,采用7个Fragment+FragmentContainerView的导航结构,默认加载的首页仅包含跳转按钮与AdView组件
  • 移除全部Fragment相关代码后启动慢的问题仍存在,初步怀疑方向为Gradle配置错误、矢量图资源损坏
  • 现有根目录build.gradle配置:
buildscript {
    dependencies {
        classpath 'com.google.gms:google-services:4.3.10'
        classpath 'com.android.tools.build:gradle:3.4.0'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.1'
        classpath 'com.google.firebase:perf-plugin:1.4.1'
    }
}
plugins {
    id 'com.android.application' version '7.2.1' apply false
    id 'com.android.library' version '7.2.1' apply false
    id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
  • 现有模块级build.gradle配置:
plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'com.google.gms.google-services'
    id 'com.google.firebase.crashlytics'
    id 'com.google.firebase.firebase-perf'
}

android {
    compileSdk 32
    buildToolsVersion '30.0.3'
    defaultConfig {
        applicationId "com.example.toannn"
        minSdk 21
        targetSdk 32
        versionCode 75
        versionName "8.4"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        debug {
            minifyEnabled false
            shrinkResources false
        }
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {
    implementation "androidx.fragment:fragment-ktx:1.4.1"
    implementation 'androidx.core:core-ktx:1.8.0'
    implementation 'androidx.appcompat:appcompat:1.4.2'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation project(path: ':searchableSpinner')
    implementation 'androidx.navigation:navigation-fragment-ktx:2.4.2'
    implementation 'androidx.navigation:navigation-ui-ktx:2.4.2'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    implementation 'com.google.android.gms:play-services-ads-lite:20.0.0'
    implementation platform('com.google.firebase:firebase-bom:27.0.0')
    implementation 'com.google.firebase:firebase-crashlytics-ktx'
    implementation 'com.google.firebase:firebase-analytics-ktx'
    implementation 'com.google.firebase:firebase-perf-ktx'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
    implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'
    implementation 'com.intuit.sdp:sdp-android:1.0.6'
    implementation 'com.intuit.ssp:ssp-android:1.0.6'
    implementation "androidx.datastore:datastore-preferences:1.0.0-alpha04"
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
    implementation 'androidx.work:work-runtime-ktx:2.7.1'
    implementation 'com.google.firebase:firebase-core:18.0.0'
}

问题根因

启动慢和Fragment、矢量图资源无直接关系,核心问题出在Gradle配置与依赖版本冲突:

  • 根目录同时声明了两个完全不兼容的Android Gradle Plugin版本:buildscript中引入3.4.0版本,plugins块中声明7.2.1版本,构建时会出现版本混用、重复任务执行、类加载冗余问题,直接拖慢构建产物的运行效率
  • Firebase相关组件版本不匹配:使用27.0.0版本的Firebase BOM却手动引入18.0.0版本的firebase-core,同时搭配的Crashlytics、Performance插件版本和BOM版本不兼容,其中Firebase Performance插件默认会对debug包所有方法做插桩,额外增加启动时的类加载与方法执行开销
  • 引入的AdMob lite版20.0.0版本过低,和targetSdk 32存在适配问题,且lite版会在应用启动时动态下载缺失的功能组件,反而阻塞主线程
  • 协程、DataStore、Lifecycle等基础组件版本过旧,存在启动阶段的锁竞争问题,拖慢初始化速度

修复方案

  1. 清理根目录build.gradle的冲突配置,删除buildscript依赖中的classpath 'com.android.tools.build:gradle:3.4.0',所有插件统一通过plugins块管理,把google-services插件版本升级到4.3.15匹配AGP7.2.1
  2. 统一依赖版本:
    • Firebase BOM升级到31.2.0,删除手动声明的com.google.firebase:firebase-core:18.0.0,所有Firebase组件版本由BOM自动管理
    • 删除AdMob lite版依赖,替换为正式版com.google.android.gms:play-services-ads:21.3.0,避免启动时动态下载组件
    • 协程依赖升级到1.6.4,Lifecycle系列组件升级到2.5.1,DataStore替换为1.0.0正式版,移除alpha版本的不稳定问题
  3. 关闭debug环境下的Firebase Performance插桩,在模块build.gradle的debug构建类型中添加如下配置:
debug {
    minifyEnabled false
    shrinkResources false
    firebasePerformance {
        instrumentEnabled false
    }
}
  1. 调整SDK初始化逻辑,Application的onCreate中仅保留必须主线程初始化的核心逻辑,AdMob、Firebase非核心功能移到子线程延迟初始化
  2. 若排查后仍有卡顿,检查矢量图资源尺寸,若存在宽高超过100dp的复杂矢量图,给加载该矢量图的Activity配置硬件加速,避免矢量图栅格化阻塞主线程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:27:15