如何在Xamarin中持久化设置Android应用属性(如allowBackup)
解决方案:用
[Application()]特性持久化配置android:allowBackup Xamarin的自动清单生成机制确实会覆盖手动编辑的AndroidManifest.xml内容,而且[Activity()]特性只负责单个Activity的配置,管不到应用级的allowBackup和fullBackupOnly属性。不过我们可以通过应用级的[Application()]特性来解决这个问题,这个配置保存在代码里,完全不会被构建过程覆盖。
具体步骤如下:
创建或找到你的自定义Application类
如果你的项目里还没有继承自Android.App.Application的类,那就新建一个;如果已经有了,直接用现有的就行。在
[Application()]特性中添加配置参数
在特性里直接指定AllowBackup和FullBackupOnly的值,Xamarin构建时会自动把这些参数转换成AndroidManifest.xml里的对应属性。示例代码如下:using Android.App; using Android.Runtime; [Application(AllowBackup = false, FullBackupOnly = false)] public class CustomApp : Application { // 必须保留这个构造函数,Xamarin需要它来绑定原生对象 public CustomApp(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer) { } // 这里可以按需重写Application的生命周期方法,比如OnCreate() public override void OnCreate() { base.OnCreate(); // 初始化逻辑等 } }清理旧的手动配置
把之前手动添加到AndroidManifest.xml里的android:allowBackup属性删掉,避免冲突——现在特性的配置会自动生成到最终的清单文件中。
为什么这个方法有效?
Xamarin的构建系统会优先读取代码中[Application()]特性的配置,来生成AndroidManifest.xml里的<application>标签。因为这个配置写在C#代码文件中,不是临时生成的清单文件,所以无论你怎么重建项目,配置都不会丢失。
内容的提问来源于stack exchange,提问作者dlchambers
相关产品推荐
相关产品推荐

