如何在同一物理设备上共存同一应用的日常、商店及开发版本?
实现同一设备多版本应用共存的方案
核心逻辑是让系统将三个版本识别为完全独立的应用,不同平台的实现方式略有差异,具体操作如下:
Android 平台
1. 配置 Product Flavors 修改应用ID
Android 系统通过 applicationId(即包名)区分应用,只需在模块级 build.gradle 中配置不同的编译变体,给每个版本分配唯一的应用ID即可:
android { compileSdk 34 defaultConfig { minSdk 21 targetSdk 34 versionCode 1 versionName "1.0" } // 定义三个编译变体,对应三个版本 productFlavors { daily { applicationId "com.yourapp.daily" resValue "string", "app_name", "我的应用" // 日常版名称 } store { applicationId "com.yourapp.store" resValue "string", "app_name", "我的应用(商店版)" // 商店版名称 } dev { applicationId "com.yourapp.dev" resValue "string", "app_name", "我的应用(开发版)" // 开发版名称 // 可选:添加开发专属配置,比如开启调试模式 buildConfigField "boolean", "IS_DEV", "true" } } }
编译时选择对应的变体(Android Studio 右上角的 Build Variants 面板切换),生成的APK会被系统视为三个独立应用,不会互相覆盖。
2. 辅助区分设置
- 给不同版本配置不同的应用图标:在
res目录下创建对应变体的资源文件夹(比如res-dev/mipmap-xxxhdpi),放入带标记的图标,编译时会自动替换。 - 应用内添加版本标识:比如在开发版的首页顶部显示「DEV」水印,避免使用时混淆版本。
iOS 平台
1. 复制 Target 并修改 Bundle Identifier
iOS 通过 Bundle ID 区分应用,操作步骤:
- 在 Xcode 中选中项目,右键点击现有 Target,选择 Duplicate,复制出两个新 Target,分别命名为
YourApp-Daily、YourApp-Store、YourApp-Dev(对应三个版本)。 - 对每个 Target,进入 Build Settings,修改
Product Bundle Identifier为唯一值,比如com.yourapp.daily、com.yourapp.store、com.yourapp.dev。
2. 配置 Scheme 与资源区分
- 为每个 Target 创建对应的 Scheme:点击 Xcode 顶部的 Scheme 下拉框,选择 Manage Schemes,点击 + 号添加新 Scheme,关联对应的 Target。
- 修改应用名称和图标:在每个 Target 的
Info.plist中,修改CFBundleDisplayName设置不同的应用名称;在 Assets.xcassets 中创建不同的 App Icon 集,给每个 Target 指定对应的图标。
通用注意事项
- 数据隔离:三个版本是独立应用,默认无法共享本地数据。如果需要共享,Android 可通过 Content Provider 或文件共享实现;iOS 可开启 App Groups 或使用 Keychain 共享数据。
- 签名与发布:商店版需使用正式签名证书,开发版用调试证书即可;日常版可选择和商店版同签名,也可单独用调试签名。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

