一般应用在开发阶段使用的都是Debug模式和测试服务器,而上线到Appstore后则使用Release模式和生产服务器(线上服务器)。
开发者在发布一个新版本之前,一般会调成Release模式和线上服务器在测试一遍,保证应用的稳定性。然而Release模式和Debug模式绑定的是同一个Bundle ID,则这两种模式共用一个沙盒目录,由于一般应用都会缓存一些信息在本地沙盒,那么在生成一个新模式的程序包App时,需要把旧模式的程序包删掉,才能保证应用不会有异常。哈哈,这样就会对开发者带来不必要的麻烦。
能不能根据Debug或Release模式动态修改Bundle ID,以保证沙盒目录的不同呢? --可以!不同的Bundle ID就是两个不同的应用,但用的是同一个Icon,这样就区分不开两者了,那么能不能根据不同模式动态的加载不同Icon呢? --也是可以的!
效果图:
操作步骤如下:
1、首先在images.xcassets 添加两个Icon的集合,分别命名 AppIcon和AppIconDebug。并把不同Debug和Release模式的Icon分别添加进去。
Release 模式Icon
Debug 模式Icon
2、在RARGETS中的Build Settings中的Asset Catalog App Icon Set Name的Debug和Release中输入刚才添加的Debug和Release模式的Icon集合的名字,如下图:
3、接着点击Editor->Add Build Setting->Add User-Defined Setting 如图
4、在添加的User-Defined 中输入Bundle_identifier。区分唯一表示Bundle ID,在Debug模式下输入com.xxx.app.debug,Release模式下输入com.xxx.app。如图:
5、修改Custom iOS Target Properties 中的Bundle identifier,在该行输入${Bundle_identifier} 如图:
完活,把程序分别调成Debug和Release模式,Run下看效果咯!
Product->Scheme->Edit Scheme->Info->Build Configuration 设置Debug和Release模式。^^