Xamarin.Android点击静态快捷方式提示Application isn't installed如何解决
问题根源
你的Xamarin.Android项目没有显式指定MainActivity的Android层类名,编译时Xamarin会自动生成MD5格式的类名,和你在shortcuts.xml中声明的tk.supernova.tmtimer.MainActivity不匹配,系统找不到目标Activity,才会抛出「Application isn't installed」的报错。
另外你同时在AndroidManifest.xml手动注册Activity、又在C#代码中通过[Activity]特性声明Activity,存在重复配置冲突的问题。
解决步骤
- 显式指定MainActivity的类名
在MainActivity的[Activity]特性中添加Name属性,强制指定Android层的全类名和你配置的一致,同时补充Exported = true适配高版本Android要求:
namespace tk.supernova.tmtimer { [Activity( Name = "tk.supernova.tmtimer.MainActivity", Label = "@string/app_name", MainLauncher = true, WindowSoftInputMode = SoftInput.AdjustPan, Exported = true)] public partial class MainActivity : AppCompatActivity { // 原有代码不变 } }
- 清理重复的Activity配置
删除AndroidManifest.xml中手动添加的整个<activity android:name="tk.supernova.tmtimer.MainActivity"...>节点,Xamarin.Android编译时会自动根据C#特性生成对应的Activity注册配置,避免两边配置不一致导致冲突。
如果你需要保留手动配置,务必保证手动配置的所有属性和C#特性的配置完全一致,且类名和上面指定的
Name属性相同。
- 验证配置(可选)
编译项目后,找到编译生成的最终AndroidManifest文件(路径一般为obj/[Debug/Release]/android/AndroidManifest.xml),确认其中MainActivity的android:name属性值为tk.supernova.tmtimer.MainActivity,shortcuts.xml中的targetClass和该值完全一致即可。
内容的提问来源于stack exchange,提问作者Federico Navarrete
相关产品推荐
相关产品推荐

