拆分目录后Manifest注册的Activity无法启动,是否需与类文件同目录?
核心结论
Manifest文件不需要和对应的Dialog Activity类文件存放在同一目录。Android平台是通过Manifest中注册的Activity全限定类名来查找对应组件的,和源码的物理存储路径没有强制绑定关系,只要配置正确、类被正常编译进安装包即可正常运行。
常见问题排查方向
你拆分目录后弹窗无法触发,优先检查以下几个配置错误:
- 确认Manifest中
android:name属性配置正确:假设你的项目根包名是com.example.showdialog,拆分前Dialog的全类名为com.example.showdialog.Dialog,拆分后对应的全类名应为com.example.showdialog.dialog.Dialog,注意路径不要漏写子包段,也不要有冗余前缀。如果你写的是相对路径,要确保相对Manifest根节点package属性拼接后和实际类的全限定名一致。 - 检查BUCK构建规则:拆分后dialog和controller目录都有独立的BUCK文件,要确保dialog目录的BUCK配置正确声明了对应的Java/Android库规则,同时controller模块、主模块正确依赖了dialog模块,避免Dialog类没有被编译进最终APK,运行时类找不到。
- 检查Controller中的启动代码:确认你构造PendingIntent时传入的ComponentName用的是Dialog的最新全限定类名,不要还保留拆分前的旧类路径,仅改Manifest没改业务代码也会导致找不到Activity。
内容的提问来源于stack exchange,提问作者Zora Shu
相关产品推荐
相关产品推荐

