Android Studio调试运行失败:进程崩溃致Instrumentation异常
我正在开发一款Android库,升级至Android Studio Flamingo及配套工具最新版本后,通过UI启动调试运行instrumented测试时,无法连接模拟器或真机。构建日志显示测试运行失败,提示**"Instrumentation run failed due to Process crashed"**,但调试器始终未附加,断点无法生效,排查困难。
已尝试的方案:
- 改用androidx runner
- 按照官方文档重新配置测试依赖
- 排除junit依赖仅保留androidx版本
- 清理缓存等常规操作
完整构建日志:
05/31 21:02:51: Launching 'testldc1()' on Pixel 4 API 30. Running tests Open logcat panel for emulator Pixel 4 API 30 Executing tasks: [:mips:connectedDebugAndroidTest] in project /Users/yuck/dev/repos/mips-simulator > Configure project :mips AGPBI: {"kind":"warning","text":"The option setting 'android.experimental.testOptions.emulatorSnapshots.maxSnapshotsForTestFailures=0' is experimental.","sources":[{}]} > Task :mips:preBuild UP-TO-DATE > Task :mips:preDebugBuild UP-TO-DATE > Task :mips:generateDebugResValues > Task :mips:generateDebugResources > Task :mips:packageDebugResources > Task :mips:preDebugAndroidTestBuild UP-TO-DATE > Task :mips:javaPreCompileDebug > Task :mips:javaPreCompileDebugAndroidTest > Task :mips:parseDebugLocalResources > Task :mips:writeDebugAarMetadata > Task :mips:processDebugManifest > Task :mips:compileDebugLibraryResources > Task :mips:generateDebugRFile > Task :mips:checkDebugAndroidTestAarMetadata > Task :mips:compileDebugJavaWithJavac > Task :mips:generateDebugAndroidTestResValues > Task :mips:mapDebugAndroidTestSourceSetPaths > Task :mips:generateDebugAndroidTestResources > Task :mips:bundleLibCompileToJarDebug > Task :mips:extractDeepLinksDebug > Task :mips:processDebugAndroidTestManifest > Task :mips:mergeDebugAndroidTestShaders > Task :mips:compileDebugAndroidTestShaders NO-SOURCE > Task :mips:generateDebugAndroidTestAssets UP-TO-DATE > Task :mips:mergeDebugShaders > Task :mips:compileDebugShaders NO-SOURCE > Task :mips:generateDebugAssets UP-TO-DATE > Task :mips:packageDebugAssets > Task :mips:mergeDebugAndroidTestAssets > Task :mips:compressDebugAndroidTestAssets > Task :mips:processDebugJavaRes NO-SOURCE > Task :mips:bundleLibResDebug NO-SOURCE > Task :mips:processDebugAndroidTestJavaRes NO-SOURCE > Task :mips:mergeDebugAndroidTestResources > Task :mips:mergeDebugJniLibFolders > Task :mips:mergeDebugNativeLibs NO-SOURCE > Task :mips:copyDebugJniLibsProjectOnly > Task :mips:mergeDebugAndroidTestJniLibFolders > Task :mips:mergeDebugAndroidTestNativeLibs NO-SOURCE > Task :mips:desugarDebugAndroidTestFileDependencies > Task :mips:checkDebugAndroidTestDuplicateClasses > Task :mips:validateSigningDebugAndroidTest > Task :mips:bundleLibRuntimeToJarDebug > Task :mips:writeDebugAndroidTestSigningConfigVersions > Task :mips:bundleLibRuntimeToDirDebug > Task :mips:mergeDebugAndroidTestJavaResource > Task :mips:processDebugAndroidTestResources > Task :mips:compileDebugAndroidTestJavaWithJavac > Task :mips:dexBuilderDebugAndroidTest > Task :mips:mergeLibDexDebugAndroidTest > Task :mips:mergeProjectDexDebugAndroidTest > Task :mips:mergeExtDexDebugAndroidTest > Task :mips:packageDebugAndroidTest > Task :mips:createDebugAndroidTestApkListingFileRedirect > Task :mips:connectedDebugAndroidTest Starting 0 tests on Pixel_4_API_30(AVD) - 11 > Task :mips:connectedDebugAndroidTest FAILED 41 actionable tasks: 41 executed Test run failed to complete. Instrumentation run failed due to Process crashed. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':mips:connectedDebugAndroidTest'. > There were failing tests. See the report at: file:///Users/yuck/dev/repos/mips-simulator/mips/build/reports/androidTests/connected/index.html * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 16s
排查方案
1. 提取设备Logcat崩溃堆栈
构建日志仅提示进程崩溃,无具体原因。启动测试前打开Logcat面板,过滤AndroidRuntime标签,找到崩溃的完整堆栈信息,这是定位问题的核心依据。
2. 移除实验性模拟器快照配置
构建日志中出现警告:android.experimental.testOptions.emulatorSnapshots.maxSnapshotsForTestFailures=0为实验性选项,可能与新版本AGP不兼容。在模块build.gradle中移除该配置,或恢复为默认值。
3. 确认测试APK签名配置
确保debugAndroidTest的签名配置正确,新版本AGP可能自动生成签名,但自定义签名规则可能导致测试APK无法正常运行。在build.gradle中明确指定测试签名:
android { signingConfigs { debug { // 你的debug签名配置 } } buildTypes { debug { signingConfig signingConfigs.debug } } testBuildType "debug" }
4. 降级AGP至稳定版本
若Flamingo自带的AGP 8.0+存在兼容性问题,尝试降级到AGP 7.4.x稳定版,验证是否为新版本AGP的bug。修改项目根目录build.gradle:
plugins { id 'com.android.library' version '7.4.2' apply false }
5. 排查测试类初始化代码
测试进程崩溃可能源于@BeforeClass、@Before方法中的错误,或依赖库初始化失败。尝试注释测试方法,仅保留空测试,逐步恢复代码排查问题点。
6. 手动运行测试并附加调试器
若UI启动调试无法附加,通过命令行启动测试后手动绑定调试器:
- 执行命令:
./gradlew :mips:connectedDebugAndroidTest --no-build-cache -Ddebug - 在Android Studio中通过
Run -> Attach debugger to Android process选择末尾带.test的测试进程。
7. 检查测试依赖冲突
执行./gradlew :mips:dependencies查看测试依赖树,确认androidx.test相关依赖版本一致,排除重复或不兼容的库版本。
内容的提问来源于stack exchange,提问作者CleverChuk

