集成url_launcher包时遇:app:mergeLibDexDebug执行失败报错求助
Flutter集成url_launcher时D8空指针构建错误解决方法
报错详情
ERROR:D:\l_store\build\url_launcher_android\intermediates\runtime_library_classes_dir\debug\io\flutter\plugins\urllauncher\WebViewActivity$1.class: D8: java.lang.NullPointerException FAILURE: 构建因异常失败。 * 问题原因:任务':app:mergeLibDexDebug'执行失败。 > 无法解析配置':app:debugRuntimeClasspath'的所有文件。未能转换debug(项目:url_launcher_android)以匹配属性{artifactType=android-dex, asm-transformed-variant=NONE, com.android.build.api.attributes.AgpVersionAttr=7.3.0, com.android.build.api.attributes.BuildTypeAttr=debug, com.android.build.gradle.internal.attributes.VariantAttr=debug, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=24, org.gradle.libraryelements=classes, org.gradle.usage=java-runtime}。 > DexingNoClasspathTransform执行失败: D:\l_store\build\url_launcher_android\intermediates\runtime_library_classes_dir\debug。 > 转译dex时出错。 * 构建提示: 使用--stacktrace选项获取堆栈跟踪。使用--info或--debug选项获取更多日志输出。使用--scan选项获取完整分析信息。 构建在3秒内失败 异常:Gradle任务assembleDebug执行失败,退出码为1
解决步骤
清理构建缓存
执行命令清理Flutter和Android构建缓存:flutter clean cd android && ./gradlew clean cd .. && flutter pub get检查url_launcher版本兼容性
确保pubspec.yaml中url_launcher版本与当前Flutter SDK兼容,尝试升级到最新稳定版:dependencies: url_launcher: ^6.2.5 # 替换为当前最新稳定版执行
flutter pub upgrade url_launcher完成依赖更新。调整Android构建配置
- 打开
android/app/build.gradle,确认minSdkVersion为24或更高(与报错中dexing-min-sdk=24一致),低于则修改:defaultConfig { minSdkVersion 24 } - 检查AGP版本(报错中为7.3.0),若版本过低,在
android/build.gradle中升级AGP与Gradle版本(需保证二者版本匹配,如AGP7.4.x对应Gradle7.5+):
同步修改buildscript { ext { compileSdkVersion = 34 minSdkVersion = 24 targetSdkVersion = 34 agpVersion = "7.4.2" // 选择兼容的AGP版本 } dependencies { classpath "com.android.tools.build:gradle:$agpVersion" } }gradle/wrapper/gradle-wrapper.properties中的Gradle版本:distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
- 打开
临时禁用Desugaring
在android/app/build.gradle中关闭desugaring验证是否解决问题:android { compileOptions { coreLibraryDesugaringEnabled false } }排查依赖冲突
执行flutter pub deps查看依赖树,若存在与url_launcher冲突的依赖,通过dependency_overrides强制指定版本:dependency_overrides: # 示例:强制指定冲突依赖版本 some_conflicting_package: ^x.y.z重新生成Android项目文件
若以上方法无效,删除android目录后重新生成:rm -rf android flutter create . --platforms android
内容的提问来源于stack exchange,提问作者Najam ALI
相关产品推荐
相关产品推荐

