运行应用程序在Android Studio中提供2个应用程序图标

时间:2014-09-10 11:11:55

标签: android android-studio

我在Android Studio中运行应用程序,它在Androi Studio中提供了2个应用程序图标。

此外,我已经从Eclipse迁移到Android Studio,现在我遇到了如何使logcat的颜色与Eclipse相同的问题。

我的问题是,当我运行应用程序时,有2个应用程序图标,当我卸载它时,其中2个已被删除。这在Android Studio中是正常的吗? 我发现Android Studio可以从Eclipse复制密钥。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mytrack.ph"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>



    <uses-permission android:name="android.permission.READ_PHONE_STATE" />


    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <!--  Google Map v.2 permissions -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <!--  GCM permissions -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <permission android:name="com.example.gcm.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" />


    <!--  Writing Persmission -->
    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
    <uses-permission android:name="android.permission.WRITE_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

    <uses-permission android:name="android.permission.READ_PROFILE"/>
    <uses-permission android:name="android.permission.READ_CONTACT"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <activity android:name="com.mytrack.ph.SplashActivity"
             android:label="@string/app_name"
             android:noHistory="true" 
             android:screenOrientation="portrait"
             android:theme="@style/splashScreenTheme" >
             <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.mytrack.ph.LoginActivity"
            android:label="@string/app_name" 
            android:screenOrientation="portrait"
           >
        </activity>
        <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/google_map_api_key"/>
        <activity android:name="com.facebook.LoginActivity"
                  android:theme="@android:style/Theme.Translucent.NoTitleBar"
                  android:label="@string/app_name" />
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
        <service android:name="com.my.track.service.MyTrackService"></service>
        <receiver
            android:name="com.my.track.service.MyTrackGcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <category android:name="com.my.track.service" />
            </intent-filter>
        </receiver>

        <service android:name="com.my.track.service.MyTrackGcmIntentService" />
        <activity android:name="NavigationMenuActivity" 
            android:configChanges="orientation|keyboardHidden" 
            android:screenOrientation="portrait"
            android:launchMode="singleTop"
            android:permission="com.google.android.c2dm.permission.SEND" >
             ></activity>
        <receiver android:name="com.my.track.results.ConnectionChangeReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            </intent-filter>
        </receiver>


    </application>

</manifest>

我虽然这在android studio中很正常。运行应用程序会提供2个启动器图标。 PS:

我的AndroidManifest.xml位于文件夹中,我使用eclipse导出到gradle版本。

我正在使用Android Studio 0.8.6 感谢。

7 个答案:

答案 0 :(得分:55)

我明白了!是的,最后,我必须研究渐变和东西。

实际上我在Project中有2个android项目,一个是库,另一个是主应用程序。

我发现当我导入这些项目时,Android Studio(我将lib从eclipse导出为gradle build)并不关心这是一个lib项目还是一个主项目。 (如我错了请纠正我 )。

所以让它工作的唯一方法就是删除那个lib-android-project的intent-filter

编辑: @所有 解决了!感谢大家,我从来不知道还有另一个AndroidManifest.xml,我认为eclipse将其删除了。我认为将它导出到gradle将删除它,因为它被检查为库。

感谢您的帮助。

答案 1 :(得分:27)

影响创建多个启动器图标的<intent-filter>如下:

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

Android Studio的manifest merger将始终将库项目中的<intent-filter>组合到主项目的清单中。您可能最终在合成清单中有多个LAUNCHER意图,因此具有多个启动器图标。要避免这种情况,只需从库项目清单中删除LAUNCHER意图。

答案 2 :(得分:8)

在AndroidManifest上声明两个intent过滤器,在activity中只使用一个Intent过滤器。

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

如果您在AndroidManifest中使用了两个或更多意图过滤器,那么您将有两个应用程序图标,所以删除它&amp;设置一个意图过滤器。

我认为这对你有用。

答案 3 :(得分:5)

我同意,因为我做了两个活动(一个用于启动,一个用于主要)。在清单中我忘了删除

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

因此,当我安装应用程序时,我将有2个应用程序。

答案 4 :(得分:3)

最有可能是导入的带此意图过滤器的Library项目。

1. Open your app manifest
2. At the bottom left click on "Merged Manifest"
3. Search and find which library project has the attribute

      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
4. Remove it and ensure that now the filter is only on your App's <Application >class activity.

答案 5 :(得分:0)

就我而言,这只是因为在清单文件中,两个活动被声明为启动器。实际上,我在创建新活动时点击了启动器复选框,认为它会将启​​动器标签从之前的活动转移到此活动,但它创建了两个活动作为启动器。

答案 6 :(得分:-1)

运行android并进行调试时,src / debug下还有另一个AndroidManifest.xml。确保此清单文件与src / main下的主要清单文件匹配。