如何在Ionic/Capacitor项目中禁用安卓和iOS应用数据备份?
禁用Ionic+Capacitor应用的安卓/iOS自动备份
安卓平台(解决AndroidManifest重置问题)
不用每次手动修改AndroidManifest.xml,直接在项目根目录的capacitor.config.ts里配置,Capacitor会自动把设置合并到生成的AndroidManifest中,彻底避免重置:
方式1(推荐,适配多数Capacitor版本):
在android节点下直接添加allowBackup配置:export default defineConfig({ // 保留你原有的其他配置 android: { allowBackup: false } });方式2(若方式1不生效时用):
通过manifestEntries手动指定Application节点属性:export default defineConfig({ // 保留你原有的其他配置 android: { manifestEntries: [ '<application android:allowBackup="false" />' ] } });
配置完后执行npx cap sync android,或者重新执行npx cap add android,AndroidManifest里的allowBackup都会自动设为false。
iOS平台
iOS的自动备份可以通过配置Info.plist禁用,同样在capacitor.config.ts里设置,避免手动修改原生文件被重置:
在ios节点的infoPlist中添加以下配置:
export default defineConfig({ // 保留你原有的其他配置 ios: { infoPlist: { // 关闭iTunes文件共享,防止数据被备份 UIFileSharingEnabled: false, // 说明应用不需要自动备份(苹果要求必填,否则可能审核不通过) NSBackupUsageDescription: "应用无需自动备份数据" } } });
如果需要更彻底地禁用iCloud备份,可在iOS项目的AppDelegate.swift中添加以下代码(仅作为补充,优先用上述配置):
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { if let docDir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first { var resourceVals = URLResourceValues() resourceVals.isExcludedFromBackup = true try? docDir.setResourceValues(resourceVals) } return true }
执行npx cap sync ios后,配置会自动同步到iOS项目的Info.plist中。
内容的提问来源于stack exchange,提问作者VincentH
相关产品推荐
相关产品推荐

