之初
项目使用 Swift
和 Objective-C
混合开发模式,后续的想通过多个 target
和 schema
来管理项目的版本,设定有两个 target
, 分别是 project-name
和 project-name-dev
, 这两个 target
分别有不同的 schema
管理,并配置不同的 bundle-id
和 bundle-icon
,这样,就可以在一台设备上方便地区分发布和开发两个版本。
在之前,只有一个 target 的时候,打包没有问题,后来在新的 scheme project-name-dev
下,打包出来的项目有些页面是空白的。甚是费解。
迷茫
由于打包出来的项目,直接部署到设备上,具体报错,没法看到。同样的代码,同样的配置,为何就新的target有问题,一度怀疑这个多target的方法是不是可行。
曙光
同事提示说,这些跳转都是在Storyboard里实现的。是不是在Storyboard里的某些控制器设置的问题。
可是不知道具体报什么样的错误,也不知道在哪里改啊!
足下
不怕麻烦,修改工程的mobileprovision文件,在手机上运行调试。直觉告诉我,console里一定会有报错。
报错
**Unknown class xxxController in Interface Builder file.**
Google & Stack Overflow
Xcode 6 Strange Bug: Unknown class in Interface Builder file
XCODE 7.1 Swift 2 Unknown class in Interface Builder file
众矢之的
所有的问题都指向了Storyboard,而且都指向了ViewController
的 Custom class
>module
.
水落石出
在那些没有出现的ViewController
里面,Custom class module
被设置成了 'project-name' ,里面有两个选项 'project-name' 和 'project-name-dev'。选哪个都合适啊。果断删除,运行调试。完美解决。
Learn More
通过版本控制工具git,发现了改动之后的storyboard文件的变化
之前也是设置了 module
为readme,但是少了一个字段 customModuleProvider
。这个字段通过google发现有好多人也是出现丢失的情况,他们也提供了一些修复的方法。我的修复方法很简单,直接把这个之前的内容删除,然后回车,就好了。
这个问题,也在这里被提到过,同样是多Target导致的。
In a Word
Stay hungry, stay foolish.