修改启动Activity为acforpic后应用持续闪退停止运行问题咨询
启动Activity替换为acforpic后启动闪退问题修复
现有Manifest配置问题
你当前的清单文件存在明确的配置错误,同时需要排查类本身的代码问题,你提供的原始配置如下:
<activity android:name=".acforpic" android:exported="true" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.google.firebase.ml.vision.DEPENDENCIES" android:value="ocr" /> <activity android:name=".MainActivity" android:exported="false"> <intent-filter> <action android:name="android.intent.action.DEFAULT" /> </intent-filter> </activity>
具体修复步骤
- 修正清单文件结构错误
- Firebase的
<meta-data>标签被错误放在两个Activity节点之间,这类组件配置标签必须作为<application>标签的直接子节点存在,夹在Activity中间会导致清单解析失败,启动时直接崩溃。 - MainActivity上配置的intent-filter完全无效:
android.intent.action.DEFAULT不是系统预置的Action,且DEFAULT本身是intent-filter的category属性,没有匹配Action的intent-filter没有实际作用,直接删除这段冗余配置即可。
修正后的清单对应片段参考:
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.App"> <!-- meta-data移到application节点下作为直接子元素 --> <meta-data android:name="com.google.firebase.ml.vision.DEPENDENCIES" android:value="ocr" /> <activity android:name=".acforpic" android:exported="true" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" android:exported="false"/> </application> - Firebase的
- 排查acforpic类本身的基础问题
- 确认
acforpic类文件真实存在:如果该类不在清单文件声明的默认包路径下,不能用.acforpic的简写,要写全类名比如com.your.pkg.otherpath.acforpic - 确认该类是public修饰,且正确继承自
Activity或AppCompatActivity,非public的类系统无法实例化,会直接抛出类访问异常崩溃 - 检查
acforpic的onCreate生命周期逻辑:不要直接调用原来依赖MainActivity初始化的全局变量、单例对象,未初始化就调用会触发空指针;确认setContentView加载的布局文件没有引用不存在的资源、自定义控件
- 确认
- 精准定位崩溃点
改完配置如果还是闪退,直接连接设备打开Logcat,筛选AndroidRuntime日志,查看FATAL EXCEPTION对应的堆栈信息,能直接定位到具体的崩溃行,这类启动崩溃90%以上是类找不到、空指针、资源NotFound三类问题,堆栈信息会标注得非常明确。
内容的提问来源于stack exchange,提问作者Salah_benchibout
相关产品推荐
相关产品推荐

