Android 应用程序创建两个启动器图标而不是一个

Android Application Creating Two Launcher Icons instead of One

我有一个奇怪的问题,在安装应用程序时我看到两个图标,一个启动应用程序,另一个在我单击它时显示 "App is not installed"。

我确定我只有一个 intent-filter 标签包含

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

我什至检查了中介文件夹中合并的最终 AndroidManifest.xml,但我仍然没有看到另一个 android.intent.category.LAUNCHER

这是我的主要内容AndroidManifest.xml

<?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="com.example.package">

<uses-permission
    android:name="android.permission.GET_ACCOUNTS"
    tools:remove="android:maxSdkVersion" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />

<application
    android:name=".App"
    android:allowBackup="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    tools:replace="android:allowBackup">

    <activity
        android:name=".activity.LauncherActivity"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoDisplay">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".activity.VerificationActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.Verification" />

    <activity
        android:name=".activity.HomeActivity"
        android:label="@string/app_name"/>

    <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    <activity
        android:name=".activity.MallActivity"
        android:parentActivityName=".activity.HomeActivity" />

    <activity android:name=".activity.StoreActivity" />

    <activity
        android:name=".activity.EnclosedFragmentActivity"
        android:theme="@style/AppTheme"
        android:windowSoftInputMode="adjustPan" />

    <provider
        android:name=".provider.MallBuddyProvider"
        android:authorities="com.example.package"
        android:exported="false"
        android:syncable="true" />

    <activity
        android:name=".activity.SearchActivity"
        android:launchMode="singleTop"
        android:theme="@style/AppTheme">
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>

    <service android:name=".sync.AuthenticatorService"
        android:exported="false">
        <intent-filter>
            <action android:name="android.accounts.AccountAuthenticator" />
        </intent-filter>
        <meta-data
            android:name="android.accounts.AccountAuthenticator"
            android:resource="@xml/authenticator" />
    </service>

    <service
        android:name=".sync.SyncService"
        android:exported="true"
        android:process=":sync">
        <intent-filter>
            <action android:name="android.content.SyncAdapter" />
        </intent-filter>
        <meta-data
            android:name="android.content.SyncAdapter"
            android:resource="@xml/syncadapter" />
    </service>

    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id" />
</application>

当您在 activity 标签中多次使用以下代码时,通常会出现此类问题。

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

从出现两次的 activity 标记中删除此行。

我在设备上测试应用程序时有时会遇到这种情况,重新启动设备会删除损坏的设备,从而解决问题。

不过,我不知道是什么原因导致这个损坏的第二个启动器图标。

这个问题是在为我的两个构建变体之一更改清单文件后出现的。我在那里重构 activity 个名称,忘记更改第二个文件。

也更改了那里的所有内容后,此问题已修复。