Android应用程序正在安装两个启动器图标

时间:2017-01-24 21:26:41

标签: android android-manifest android-launcher

这是Android Application creating two launcher icons的副本(我的清单中没有多个LAUNCHER定义),也没有Android Application Creating Two Launcher Icons instead of One(重启设备不会删除第二个启动器图标。)

我的Android应用程序正在创建两个启动器图标,但其中一个似乎来自应用程序本身,而不是任何活动。我把我的AndroidManifest.xml裁剪成最小的(加上干净并重建并重新安装),我仍然得到两个图标(在我的HTC One M8物理手机和我的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:labelandroid:icon功能移动到.SplashActivity定义中,则创建的其中一个启动器图标将替换为默认的绿色小机器人图标。

2 个答案:

答案 0 :(得分:3)

活动和其他显而易见的好处来自各种来源:

  • main sourceset
  • 中的清单
  • 任何构建类型或产品风格源集中的清单
  • 任何库模块或AAR中的清单
  • Gradle(例如,minSdkVersion

Android Studio 2.2为我们提供了一个方便的工具来检查进入我们APK的真实清单,并从所有这些来源合并。如果您在Android Studio中打开清单,请单击“Manifest Merger”子标签(朝向IDE底部)。这将显示合并清单中的内容和应该归咎于它的来自哪里。

如果您在清单中看到其他活动,那么这就是启动器图标的来源。然后,你需要决定:

  • 是你真正想要的活动吗?
  • 如果没有,那个活动的来源是你真正想要的吗? (如果没有,核武器)
  • 如果您想要源而不是活动,则可以使用tools:replace属性装配清单中的另一个活动元素,以覆盖库中的一个并禁止<intent-filter>

答案 1 :(得分:0)

我的问题是,我向多个活动添加了以下意图过滤器。将其配置为一个活动可以为我解决该问题。

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>