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

Flutter适配API 34后构建APK时R8任务执行失败求助

适配Android 14(API 34)后Flutter构建APK报错R8缺失类

为适配Android 14(API 34)升级Flutter应用后,模拟器运行正常,但执行flutter build apk时触发R8缺失类错误,具体报错如下:

ERROR: Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /Users/username/Desktop/DV_AppMobile/build/app/outputs/mapping/stagingRelease/missing_rules.txt.
ERROR: R8: Missing class com.google.android.play.core.splitcompat.SplitCompatApplication (referenced from: void io.flutter.app.FlutterPlayStoreSplitApplication.<init>() and 5 other contexts)

    Missing class com.google.android.play.core.splitinstall.SplitInstallException (referenced from: void io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager.lambda$installDeferredComponent$1(int, java.lang.String, java.lang.Exception))
Missing class com.google.android.play.core.splitinstall.SplitInstallManager (referenced from: com.google.android.play.core.splitinstall.SplitInstallManager io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager.splitInstallManager and 5 other contexts)
Missing class com.google.android.play.core.splitinstall.SplitInstallManagerFactory (referenced from: void io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager.<init>(android.content.Context, io.flutter.embedding.engine.FlutterJNI))
Missing class com.google.android.play.core.splitinstall.SplitInstallRequest$Builder (referenced from: void io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager.installDeferredComponent(int, java.lang.String))
Missing class com.google.android.play.core.splitinstall.SplitInstallRequest (referenced from: void io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager.installDeferredComponent(int, java.lang.String))
Missing class com.google.android.play.core.splitinstall.SplitInstallSessionState (referenced from: void io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager$FeatureInstallStateUpdatedListener.onStateUpdate(com.google.android.play.core.splitinstall.SplitInstallSessionState) and 1 other context)
Missing class com.google.android.play.core.splitinstall.SplitInstallStateUpdatedListener (referenced from: void io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager.<init>(android.content.Context, io.flutter.embedding.engine.FlutterJNI) and 2 other contexts)
Missing class com.google.android.play.core.tasks.OnFailureListener (referenced from: void io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager.installDeferredComponent(int, java.lang.String))
Missing class com.google.android.play.core.tasks.OnSuccessListener (referenced from: void io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager.installDeferredComponent(int, java.lang.String))
Missing class com.google.android.play.core.tasks.Task (referenced from: void io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager.installDeferredComponent(int, java.lang.String) and 1 other context)
Missing class com.huawei.android.os.BuildEx$VERSION (referenced from: boolean com.huawei.hms.framework.common.EmuiUtil.isUpPVersion())
Missing class com.huawei.hianalytics.process.HiAnalyticsConfig$Builder (referenced from: void com.huawei.hms.utils.HMSBIInitializer.a(java.lang.String))
Missing class com.huawei.hianalytics.process.HiAnalyticsConfig (referenced from: void com.huawei.hms.utils.HMSBIInitializer.a(java.lang.String))
Missing class com.huawei.hianalytics.process.HiAnalyticsInstance$Builder (referenced from: void com.huawei.hms.utils.HMSBIInitializer.a(java.lang.String))
Missing class com.huawei.hianalytics.process.HiAnalyticsInstance (referenced from: com.huawei.hianalytics.process.HiAnalyticsInstance com.huawei.hms.framework.common.hianalytics.HianalyticsHelper.hInstance and 11 other contexts)
Missing class com.huawei.hianalytics.process.HiAnalyticsManager (referenced from: void com.huawei.hms.framework.common.hianalytics.HianalyticsHelper.<init>() and 5 other contexts)
Missing class com.huawei.hianalytics.util.HiAnalyticTools (referenced from: void com.huawei.hms.support.hianalytics.HiAnalyticsUtils.enableLog(android.content.Context))
Missing class com.huawei.libcore.io.ExternalStorageFile (referenced from: java.io.File com.huawei.hms.framework.common.CreateFileUtil.newFile(java.lang.String))
Missing class com.huawei.libcore.io.ExternalStorageFileInputStream (referenced from: java.io.FileInputStream com.huawei.hms.framework.common.CreateFileUtil.newFileInputStream(java.lang.String))
Missing class com.huawei.libcore.io.ExternalStorageFileOutputStream (referenced from: java.io.FileOutputStream com.huawei.hms.framework.common.CreateFileUtil.newFileOutputStream(java.io.File))
Missing class com.huawei.libcore.io.ExternalStorageRandomAccessFile (referenced from: java.io.RandomAccessFile com.huawei.hms.framework.common.CreateFileUtil.newRandomAccessFile(java.lang.String, java.lang.String))
Missing class org.bouncycastle.crypto.BlockCipher (referenced from: java.security.SecureRandom com.huawei.secure.android.common.encrypt.utils.EncryptUtil.a())
Missing class org.bouncycastle.crypto.engines.AESEngine (referenced from: java.security.SecureRandom com.huawei.secure.android.common.encrypt.utils.EncryptUtil.a())
Missing class org.bouncycastle.crypto.prng.SP800SecureRandom (referenced from: java.security.SecureRandom com.huawei.secure.android.common.encrypt.utils.EncryptUtil.a())
Missing class org.bouncycastle.crypto.prng.SP800SecureRandomBuilder (referenced from: java.security.SecureRandom com.huawei.secure.android.common.encrypt.utils.EncryptUtil.a())

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':app:minifyStagingReleaseWithR8'.
A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable
Compilation failed to complete

已尝试的操作:

  • 将Gradle版本从8.1.1降级至8.0.2
  • 尝试谷歌官方解决方案,问题未解决

环境配置信息

Flutter Doctor 结果

Android toolchain - develop for Android devices (Android SDK version 34.0.0)
Xcode - develop for iOS and macOS (Xcode 15.4)
Android Studio (version 2024.1)
No issues found!

android/build.gradle 配置

buildscript {
    ext.kotlin_version = '1.9.20'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.0.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.14'
    }
}
...

android/app/build.gradle 配置

plugins {
    id "com.android.application"
    id "kotlin-android"
    id "com.google.gms.google-services"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
    namespace 'com.appname.app'
    compileSdk 34
    ndkVersion "27.0.12077973"
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    defaultConfig {
        applicationId "com.appname.app"
        minSdk 22
        targetSdk 34
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        resourceConfigurations += ['en', 'it']
    }
    kotlinOptions {
        jvmTarget = '17'
    }
    
    signingConfigs {
        release {
            keyAlias="appname"
            keyPassword="br7Tuphetr\$f"
        //   storeFile file(System.getenv("HOME") + "/Desktop/DV_AppMobile/appname.keystore")
        storeFile file("appname.keystore")
            storePassword="br7Tuphetr\$f"
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    buildscript {
        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.dipien:bye-bye-jetifier:1.2.1'
        }
    }
    packagingOptions {
        resources {
            excludes += ['META-INF/com.android.tools/proguard/coroutines.pro']
        }
    }
    lint {
        checkReleaseBuilds false
    }
}
flutter {
    source '../..'
}
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    //implementation "androidx.annotation:annotation-experimental:1.1.0"
    implementation 'androidx.annotation:annotation:1.8.1'
    implementation platform('com.google.firebase:firebase-bom:28.1.0')
}

gradle-wrapper.properties 配置

#Thu Jul 13 11:44:22 CEST 2023
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

解决方案

1. 补充缺失的依赖库

报错中缺失的类分为Google Play Core和华为HMS两类,根据应用需求添加对应依赖:

  • Google Play Core 依赖:在android/app/build.gradle的dependencies块中添加:
    implementation 'com.google.android.play:core:1.10.3'
    
  • 华为HMS 依赖:若应用不需要华为服务,可跳过;若需要,添加HMS分析依赖:
    implementation 'com.huawei.hms:hianalytics:6.11.0.300'
    

2. 添加ProGuard/R8 保留规则

若不想添加冗余依赖,可在proguard-rules.pro中添加以下规则,让R8忽略这些缺失类:

# Google Play Core 相关
-dontwarn com.google.android.play.core.splitcompat.**
-dontwarn com.google.android.play.core.splitinstall.**
-dontwarn com.google.android.play.core.tasks.**

# 华为HMS 相关
-dontwarn com.huawei.android.os.BuildEx$VERSION
-dontwarn com.huawei.hianalytics.process.**
-dontwarn com.huawei.hianalytics.util.**
-dontwarn com.huawei.libcore.io.**
-dontwarn com.huawei.secure.android.common.encrypt.utils.**
-dontwarn org.bouncycastle.crypto.**

3. 检查Flutter版本兼容性

确保Flutter版本与Gradle、Android SDK版本兼容,可尝试升级到稳定版:

flutter upgrade

4. 清理构建缓存

执行以下命令清理缓存后重新构建:

flutter clean
cd android && ./gradlew clean
cd .. && flutter build apk

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:09:53