Flutter项目Release构建失败:cached_video_player资源验证错误
问题描述
Flutter项目集成了cached_video_player和appinio_video_player插件,Debug模式构建正常,但Release模式下执行:cached_video_player:verifyReleaseResources任务失败,错误信息如下:
执行com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action时出错
Android资源链接失败
ERROR:C:\Users\HP.gradle\caches\transforms-3\87f0e673dc4ee6b514e9d5964fa729a9\transformed\core-1.7.0\res\values\values.xml:105:5-114:25: AAPT: error: resource android:attr/lStar not found.
原项目build.gradle内容:
buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:4.1.3' classpath 'com.google.gms:google-services:4.3.15' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.23" } } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 34 ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } sourceSets { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { applicationId "com.example.project" minSdkVersion 28 targetSdkVersion flutter.targetSdkVersion flutterVersionCode.toInteger() versionName "7.1" multiDexEnabled true } buildTypes { release { signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } flutter { source '../..' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.multidex:multidex:2.0.1' implementation platform('com.google.firebase:firebase-bom:31.2.3') implementation 'com.google.firebase:firebase-analytics-ktx' implementation 'com.google.firebase:firebase-auth-ktx' implementation 'com.google.android.gms:play-services-auth:19.2.0' implementation 'com.android.support:support-v4:28.0.0' testImplementation 'junit:junit:4.13.2' implementation("com.google.firebase:firebase-perf-ktx") implementation("com.google.firebase:firebase-crashlytics-ktx") implementation("com.google.firebase:firebase-analytics-ktx") androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' }
解决方案
错误根源是AndroidX与旧Support库冲突、Gradle插件版本不兼容compileSdk 34,以及依赖库版本不一致,按以下步骤修复:
1. 替换旧Support库为AndroidX库
删除依赖中的com.android.support:support-v4:28.0.0,替换为AndroidX的Core库:
implementation 'androidx.core:core:1.10.1'
2. 升级Android Gradle插件版本
当前4.1.3版本无法适配compileSdk 34,升级到稳定兼容版本:
修改buildscript中的classpath:
classpath 'com.android.tools.build:gradle:7.4.2'
同时更新项目根目录下gradle/wrapper/gradle-wrapper.properties的distributionUrl:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
3. 强制统一AndroidX Core库版本
在android块中添加配置,避免依赖冲突:
android { // ... 原有配置 configurations.all { resolutionStrategy { force 'androidx.core:core:1.10.1' } } }
4. 清理缓存并重新构建
执行命令清理缓存后重新构建:
flutter clean # Windows用户手动删除C:\Users\HP\.gradle\caches目录 flutter build apk --release
修改后的build.gradle示例
buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.4.2' classpath 'com.google.gms:google-services:4.3.15' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.23" } } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 34 ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } configurations.all { resolutionStrategy { force 'androidx.core:core:1.10.1' } } sourceSets { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { applicationId "com.example.project" minSdkVersion 28 targetSdkVersion flutter.targetSdkVersion flutterVersionCode.toInteger() versionName "7.1" multiDexEnabled true } buildTypes { release { signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } flutter { source '../..' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.multidex:multidex:2.0.1' implementation platform('com.google.firebase:firebase-bom:31.2.3') implementation 'com.google.firebase:firebase-analytics-ktx' implementation 'com.google.firebase:firebase-auth-ktx' implementation 'com.google.android.gms:play-services-auth:19.2.0' implementation 'androidx.core:core:1.10.1' testImplementation 'junit:junit:4.13.2' implementation("com.google.firebase:firebase-perf-ktx") implementation("com.google.firebase:firebase-crashlytics-ktx") implementation("com.google.firebase:firebase-analytics-ktx") androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' }
内容的提问来源于stack exchange,提问作者Yamini Chaudhary

