我不知道为什么会这样,我已经尝试了一切.每次更新应用程序时,主屏幕上的以前的快捷方式都会消失.
这是我完整的应用清单:
<?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或任何其他更改程序集合格名称的操作.