Android 应用程序正在安装两个启动器图标
Android application is installing two launcher icons
这不是 Android Application creating two launcher icons (I don't have multiple LAUNCHER
definitions in my manifest), nor 的副本(设备重启不会删除第二个启动器图标)。
我的 android 应用程序正在创建两个启动器图标,但其中一个似乎来自应用程序本身,而不是任何 activity。我已将我的 AndroidManifest.xml
裁剪到最小(加上清理、重建和重新安装),但我仍然得到两个图标(在我的 HTC One M8 物理 phone 和我的 Nexus 5 模拟器上):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".SplashActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我的清单中没有其他东西。
...我定义的应用程序本身是否以某种方式创建了一个图标?还是有其他方法让我得到多个启动器图标?
如果我将 android:label
和 android:icon
功能移动到 .SplashActivity
定义中,创建的其中一个启动器图标将替换为默认的绿色小机器人图标。
活动和其他 manifest-y 善意的来源多种多样:
- 您的
main
源集中的清单
- 任何构建类型或产品风格源集中的清单
- 任何库模块或 AAR 中的清单
- Gradle(例如,
minSdkVersion
)
Android Studio 2.2 为我们提供了一个方便的工具来检查从所有这些来源合并到我们的 APK 中的 真实 清单。如果您在 Android Studio 中打开清单,请单击 "Manifest Merger" sub-tab(朝向 IDE 的底部)。这将显示合并清单中的内容以及谁应该为此负责它来自哪里。
如果您在其中看到除清单中的活动之外的其他活动,那就是您的启动器图标的来源。然后,您需要决定:
- 那是activity你真正想要的东西吗?
- 如果不是,那么 activity 的来源是您真正想要的吗? (如果不是,核爆它)
- 如果您想要源而不是 activity,您可以在清单中设置另一个 activity 元素,使用
tools:replace
属性覆盖库中的元素并抑制 <intent-filter>
我的问题是,我已将以下 intent-filter 添加到多个 Activity。配置了一个 Activity 为我解决了这个问题。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
这不是 Android Application creating two launcher icons (I don't have multiple LAUNCHER
definitions in my manifest), nor
我的 android 应用程序正在创建两个启动器图标,但其中一个似乎来自应用程序本身,而不是任何 activity。我已将我的 AndroidManifest.xml
裁剪到最小(加上清理、重建和重新安装),但我仍然得到两个图标(在我的 HTC One M8 物理 phone 和我的 Nexus 5 模拟器上):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".SplashActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我的清单中没有其他东西。
...我定义的应用程序本身是否以某种方式创建了一个图标?还是有其他方法让我得到多个启动器图标?
如果我将 android:label
和 android:icon
功能移动到 .SplashActivity
定义中,创建的其中一个启动器图标将替换为默认的绿色小机器人图标。
活动和其他 manifest-y 善意的来源多种多样:
- 您的
main
源集中的清单 - 任何构建类型或产品风格源集中的清单
- 任何库模块或 AAR 中的清单
- Gradle(例如,
minSdkVersion
)
Android Studio 2.2 为我们提供了一个方便的工具来检查从所有这些来源合并到我们的 APK 中的 真实 清单。如果您在 Android Studio 中打开清单,请单击 "Manifest Merger" sub-tab(朝向 IDE 的底部)。这将显示合并清单中的内容以及谁应该为此负责它来自哪里。
如果您在其中看到除清单中的活动之外的其他活动,那就是您的启动器图标的来源。然后,您需要决定:
- 那是activity你真正想要的东西吗?
- 如果不是,那么 activity 的来源是您真正想要的吗? (如果不是,核爆它)
- 如果您想要源而不是 activity,您可以在清单中设置另一个 activity 元素,使用
tools:replace
属性覆盖库中的元素并抑制<intent-filter>
我的问题是,我已将以下 intent-filter 添加到多个 Activity。配置了一个 Activity 为我解决了这个问题。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>