Jetpack Compose预览报错:PreviewActivity路径错误求助
针对你遇到的PreviewActivity路径识别错误问题,可以从以下几个方向排查修复:
1. 对齐Gradle插件(AGP)与Compose版本
Compose 1.5.3需要搭配AGP 8.1.0及以上版本使用,低版本AGP会导致工具链的类路径识别异常。打开项目根目录的build.gradle(或build.gradle.kts)检查AGP版本:
// 根build.gradle中的buildscript块 buildscript { dependencies { classpath "com.android.tools.build:gradle:8.1.0" // 确保版本≥8.1.0 } }
2. 验证依赖配置的正确性
确认ui-tooling依赖仅在debug环境生效,且与ui-tooling-preview版本完全一致:
// 模块级build.gradle implementation "androidx.compose.ui:ui-tooling-preview:1.5.3" debugImplementation "androidx.compose.ui:ui-tooling:1.5.3"
避免出现版本不一致,或误将ui-tooling写成implementation的情况。
3. 深度清理并重建项目
除常规清除缓存,执行以下步骤:
- 运行Gradle任务:
./gradlew clean(Windows环境用gradlew clean) - 点击Android Studio菜单
File > Invalidate Caches... > Invalidate and Restart - 重新同步项目后再尝试预览
4. 检查Manifest合并结果
打开app/build/intermediates/merged_manifests/debug/AndroidManifest.xml,确认是否存在PreviewActivity的声明:
<activity android:name="androidx.compose.ui.tooling.PreviewActivity" android:exported="true" android:theme="@style/Theme.AppCompat"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
如果没有该声明,可能是Hilt或其他插件干扰了Manifest合并,可临时在debug目录的AndroidManifest.xml中手动添加(仅用于排查,不建议长期保留)。
5. 排除自定义构建规则干扰
检查是否有自定义Gradle脚本或插件,比如移除了debug环境下的tooling依赖,或修改了Manifest合并规则,导致PreviewActivity未被正确打包。
问题原描述
运行Composable组件预览时遇到如下错误:
Error while executing: am start -n "com.site.app/androidx.compose.ui.tooling.preview.PreviewActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER --es composable com.site.app.ui.MainActivity.MainAppPreview Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.site.app/androidx.compose.ui.tooling.preview.PreviewActivity (has extras) } Error type 3 Error: Activity class {com.site.app/androidx.compose.ui.tooling.preview.PreviewActivity} does not exist. Error while Launching activity Failed to launch an application on all devices经检查,PreviewActivity并不在
androidx.compose.ui.tooling.preview包下,而是位于androidx.compose.ui.tooling包中。清除缓存无法解决问题。项目配置如下:
- compileSdk版本为34(因使用Navigation 2.7.4)
- Compose版本1.5.3
- 使用Hilt依赖注入
- 引入依赖:
implementation "androidx.compose.ui:ui-tooling-preview:1.5.3"- 引入依赖:
debugImplementation "androidx.compose.ui:ui-tooling:1.5.3"
怀疑问题出在Gradle版本相关配置上,旧项目中路径正常且预览功能正常。
内容的提问来源于stack exchange,提问作者Ankush

