You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同应用APK更新能否保留本地数据?React Native端该如何配置?

安卓同应用覆盖安装保留本地数据方案(React Native场景)

结论

可以实现不卸载旧应用直接安装V2版本,同时完整保留本地数据库、缓存等所有历史数据,不需要额外做数据迁移配置(数据库表结构变更的业务场景除外)。

必须满足的三个核心条件

安卓系统判断是否为同一应用的升级包、允许覆盖安装且保留数据,需要同时满足三个要求:

  • 两个安装包的applicationId(应用包名)完全一致:这是安卓识别应用身份的核心标识,包名不同无法触发覆盖安装
  • V2版本的versionCode大于V1版本的versionCode:安卓通过versionCode判断版本高低,数值低的安装包无法覆盖高版本
  • 两个安装包的签名信息完全一致:签名是应用身份的校验凭证,签名不一致的同包名安装包会直接安装失败

React Native项目具体配置修改位置

不需要手动修改AndroidManifest.xml文件,所有核心配置都在android/app/build.gradle中调整即可,找到文件内的defaultConfig代码块,参考以下示例配置:

android {
    // 该参数为包名标识,必须和V1版本完全一致
    namespace "com.yourcompany.myapp"
    defaultConfig {
        // 应用唯一ID,必须和V1版本完全一致
        applicationId "com.yourcompany.myapp"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        // 版本号数值,必须大于V1版本的versionCode,比如V1是1就填2
        versionCode 2
        // 对外展示的版本名称,不影响覆盖逻辑,按需修改即可
        versionName "2.0"
    }
}

打包V2版本安装包时,使用和V1版本完全相同的签名文件、签名密码、密钥别名、别名密码即可。

额外注意事项

  • 只要你没有在旧版本的AndroidManifest.xml中手动设置android:allowBackup="false",默认覆盖安装时所有本地SQLite数据库、SharedPreference、应用沙盒内的文件都会完整保留
  • 如果本次V2版本有调整数据库表结构的需求,需要自行开发数据库版本迁移的业务逻辑,该逻辑和覆盖安装机制无关
  • 由于不走应用商店分发,安装时需要用户打开手机的「允许未知来源应用安装」权限,即可正常触发覆盖安装流程

内容的提问来源于stack exchange,提问作者Morris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:57:02