我在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 感谢。
答案 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下的主要清单文件匹配。