Android Studio调试应用图标不显示,修改AndroidManifest后无法运行求助
问题根源与解决方案
嘿,我一眼就揪出问题所在了——你在多个Activity里都配置了android.intent.category.LAUNCHER的Intent Filter!
为什么会导致图标消失?
Android系统的规则很明确:只有同时声明了<action android:name="android.intent.action.MAIN" />和<category android:name="android.intent.category.LAUNCHER" />的Activity,才会被识别为桌面启动项并生成应用图标。当你给多个Activity都加上这个配置时,系统直接懵了:要么无法确定哪个是主入口干脆不显示图标,要么生成一堆重复图标,甚至会让应用启动逻辑彻底混乱。
看你的Manifest文件,以下4个Activity都加了这个冲突的配置:
DispatchActivityeditProfileMainActivityRegisterActivity
修正后的Manifest代码
你只需要保留一个主入口Activity的LAUNCHER配置(从命名看DispatchActivity像是分发页,适合作为主入口),其他Activity都删掉这个多余的Intent Filter。修正后的代码如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="sg.edu.singaporetech.teamproject"> <uses-permission android:name="android.permission.INTERNET" /> <!-- allow usage of camera for Android --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <!-- to run foreground service for steps --> <uses-feature android:name="android.hardware.camera" android:required="true" /> <application android:name=".StepsNotification" android:allowBackup="true" android:icon="@drawable/exersize" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <activity android:name=".DispatchActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> </intent-filter> </activity> <activity android:name=".profile.editProfile" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" > <!-- 移除了LAUNCHER的Intent Filter --> </activity> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden"> <!-- 移除了LAUNCHER的Intent Filter --> </activity> <activity android:name=".registration.RegisterActivity"> <!-- 移除了LAUNCHER的Intent Filter --> </activity> <activity android:name=".home.HomeActivity"> <!--<intent-filter>--> <!--<action android:name="android.intent.action.MAIN" />--> <!--<category android:name="android.intent.category.LAUNCHER" />--> <!--</intent-filter>--> </activity> <receiver android:name=".StepsBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> </receiver> <service android:name=".StepsService"/> </application> </manifest>
额外的排查小步骤
- 检查图标资源:确认
@drawable/exersize这个资源存在,没有拼写错误(比如是不是应该是exercise?如果之前能正常显示可以忽略,但如果修正后还是不显示,优先检查这个) - 清理重建项目:点击Android Studio顶部菜单栏的
Build -> Clean Project,然后Build -> Rebuild Project,清除缓存避免旧配置残留 - 重装应用:先卸载手机上的旧版本应用,再重新运行安装,避免残留的启动配置影响
内容的提问来源于stack exchange,提问作者Jim Ng
相关产品推荐
相关产品推荐

