我有一个基于PCL的Xamarin Forms解决方案,使用的是Xamarin.Forms版本2.3.4.270。
在Visual Studio 2017中构建Xamarin android项目时,在android项目的自动生成的“... \ _ obj \ Debug \ android \ AndroidManifest.xml”文件中添加了一个神秘的活动,导致两个应用程序图标在手机上运行应用程序时部署:
<activity android:name="md54d0b3c92dfecf2a187a4c8b660786aba.MainActivityForCodeAnalysisBugWorkaroundPleaseIgnore">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我确保整个解决方案中的所有项目都没有标记为“在构建时启用代码分析”,并且我只有一个主要活动“MainLauncher = true”......
启动第一个应用程序图标时,仅显示空白的空视图。启动第二个应用程序图标时,将启动真实应用程序。
如何摆脱Android上的aditional app图标?
编辑: 这是MainActivity:
[Activity(Label = "@string/app_name", Theme = "@style/MyTheme", ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
这是带有MainLauncher=true
的SplashScreen-Activity:
[Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
public class SplashActivity : AppCompatActivity
我已经在各种其他xamarin.forms应用程序中使用了这种方法,但没有任何问题。
这是清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="@string/package_name" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">
<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="@string/app_name" android:icon="@drawable/icon"></application>
</manifest>
答案 0 :(得分:2)
此问题是由于pcl依赖项需要通过添加MainLauncher = true
的新活动来修复代码分析问题。
请参阅https://bugzilla.xamarin.com/show_bug.cgi?id=43553。
pcl库的Android实现添加了一个额外的活动。 在主要的xamarin android项目中,Visual Studio将此活动包含在清单文件中。
因此,如链接中所述,Android pcl库的代码分析问题的所有解决方案都会导致两个应用程序图标。
要删除第二个应用图标,只需将伪活动属性的“MainLauncher”设置为false即可。这仍然允许您运行代码分析,但不会添加第二个应用程序图标。