iOS app配置多环境变量和制作马甲包

需求一:很多公司的app都分成debug环境和release环境(多个接口域名),平时开发和测试都在debug环境,打包上线的时候才切换到release环境;需求二:公司要求制作马甲包,即在原来app的基础上,只修改app的名称,图标,LaunchImage,替换app中带有app名称的文本,并用另一个开发者账号发布,马甲包的数量不定。手动在代码里更改环境变量,替换图片肯定是不可取的,这里我们采用Configuration来实现这两个需求。定义好不同的Configuration后,就可以分别设置 Build、Archive、Test等操作分别使用哪一个 Configuration 进行编译,从而可以轻松地分离开各个环境变量的设置。(2017.12.1更新:文末有4.3处理方法)

1.新建Configuration

点击Project->Info,默认有Debug和Release两个Configuration,顾名思义Debug用于调试,Release用于发布,区别是Debug默认添加了预编译宏DEBUG=1,Release不能调试程序,并且Release编译时做了优化。点击Configurations选项卡下面的加号,分别复制一个Debug和Release的Configuration,这里我取名为Debug_a和Release_a,代表马甲包a的两个Configuration

新建Configuration.png
马甲包aConfiguration

注意:新建完Configuration之后请重新执行pod install命令

2.新建Scheme

为上一步新建的Configuration再新建Scheme,这里我新建了两个Scheme,命名为马甲包a_release和马甲包a_debug,在Manage Schemes里面把右边的Shared选项勾选,否则在git上无法同步。

新建Scheme
勾选Shared

在Edit Scheme里面把Run和Archive模式改成对应新建的Build Configuration

QQ20170615-093232.png
QQ20170615-093301.png

3.配置AppIcon和LaunchImage

新建一个App Icon和Launch Image文件夹,重新命名,拖入图片。

新建AppIcon和LaunchImage

选择Targets->Build Settings,搜索asset,在Asset Catalog App Icon Set Name 和 Asset Catalog Launch Image Set Name 配置各个Configuration所对应的图片文件夹名称。

QQ20170615-093625.png

4.配置App名称,Bundle ID 和 证书

4.1 配置App名称

在Project->Build Settings 点击加号选择Add User-Defined Setting],即增加用户自定义设置,添加一个App名称的设置,为不同的Configuration设置不同的App名字。

Add User-Defined Setting
屏幕快照 2017-06-15 16.32.29.png

然后在info.plist中设置Bundle display name为我们自定义的设置,${CusomAppName}。

App Name.png

4.2 配置Bundle ID和证书

不同的马甲包可能是由不同的开发者账号发布的,所以需要配置对应的bundle id 和 证书。

bundle id 在Targets->Build Settings 中的Product Bundle Identifier设置。

bundleID.png

证书配置如下图

证书配置

5.其他配置

在Targets->Build Settings->Preprocessor Macros中,可以根据Configuration配置不同的预编译宏,根据这个预编译宏的不同,在代码里面也可以有不同的配置,比如渠道号,接口域名等。

Macro.png

屏幕快照 2017-06-15 17.08.37.png

6.总结

用这种方法能比较方便地实现多环境变量的配置,具体demo可以在github上下载

7. App被拒4.3如何处理

App被拒4.3分为两种, 一种是机器4.3, 一种是人工审核4.3,我只说机器审核4.3解决方法。

Guideline 4.3 - Design

This app duplicates the content and functionality of other apps submitted by you or another developer to the App Store, which is considered a form of spam.

Apps that simply duplicate content or functionality create clutter, diminish the overall experience for the end user, and reduce the ability of developers to market their apps.

The next submission of this app may require a longer review time.

收到这种回复基本上就是机器审核4.3

解决方法是改类名,方法名,文件夹的名字

1.将工程类前缀改成另一个更长的字符串,类的后缀用其他字符串代替,名字尽量长一点。
比如ZHQBaseViewController->ABCPrefixionBaseDirector(ABCPrefixionBaseVC等)
ZHQLoginView - > ABCPrefixionRegisterSurface
其他的Category 等也一起改掉

2.修改文件夹的名字,我也推荐用AppCode来改

3.添加垃圾代码,文件来混淆代码,然后在现有的工程中调用

改类名和改文件夹名一定要用AppCode来改,不仅仅是因为Xcode改起来工程量很大,而是因为AppCode会将你原来的类删除并创建新的类,改完之后相当于你所有的类都是新建的,你确定不试试吗?

AppCode下载地址:https://u5288736.pipipan.com/fs/5288736-229937787

还有一些其他方法请参考http://www.jianshu.com/p/29507a331ff2

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: