android-应用程序快捷方式在每次更新后都会消失,Manifest怎么了?

我不知道为什么会这样,我已经尝试了一切.每次更新应用程序时,主屏幕上的以前的快捷方式都会消失.

这是我完整的应用清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.SpaceMonkey.Boats" android:versionCode="161" android:versionName="1.6.1">
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="21" />
    <application android:label="Boats" android:icon="@drawable/playstore"></application>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

我的主要活动是:

[Activity (Label = "Boats", Icon = "@drawable/playstore", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity

我更新时唯一更改的是清单中的versionCode和versionName,绝对没有其他更改.

我在这里做错了什么?

编辑:我开始认为Xamarin在后台生成一个新的应用程序清单是一个问题,我不确定如何检查.

编辑:我刚刚测试了一个不使用Xamarin.Forms的Android(Xamarin)应用程序,它没有这个问题.我的怀疑证实了这与Xamarin.Forms有关.

解决方法:

就我而言,此问题是通过更改Android应用程序项目的AssemblyInfo.cs的AssemblyVersion触发的.

此问题是由Xamarin.Android 5.0和更高版本(不是Xamarin.Forms)引起的.如in the release documentation here所述:

With the 5.0 release, the default package names for Android Callable
Wrappers will be based on the MD5SUM of the assembly-qualified
name
of the type being exported.

AssemblyVersion是程序集限定名称的一部分,任何版本更改都会创建新的MD5哈希,从而创建新的默认程序包名称. (了解有关the assembly qualified named here的更多信息)

应用程序快捷方式使用默认程序包名称启动您的应用程序,因此每次更新都会使该快捷方式无效,系统将其删除.

修复:请勿在您的Android项目中更改AssemblyVersion或任何其他更改程序集合格名称的操作.

上一篇:C#-Xamarin绑定目标C库


下一篇:c#-标签中的修饰和扩展文本