打造你的远程私有库(资源依赖)

我们在使用远程私有库的时候必然会遇到资源依赖的问题,主要就是我们的xib或者StoryBoard这类资源,因为我们的功能组件中有可能会涉及到,所以我们今天就来讲讲如何来做,这里我们以我们的主骨架组件化为例。

  • 首先我们来回顾一下整个项目的主骨架


  • 我们在remoteLiba里面创建一个TZSoundMain的模板库


  • 我们现在测试工程里面将我们的代码测试好,将组骨架的代码拖到Classes文件夹下面


  • 然后在测试工程里面pod install安装代码,并且把宿主工程中AppDelegate里面的代码复制过来,还有测试控制器一并拖过来

  • 但是项目中还是会报错,一路追寻下来我们发现原来结果是少了基础组件category中的内容
  • 此时应该去修改.spec文件给我们添加基础组件的依赖,因为之前我们已经将基础组件划分了分支,我们在这里需要的仅仅是Category分支


  • 我们发现这里出现了报错提示,提示我们找不到TZSoundBase/Category,这里我们需要添加源


  • 现在编译就没有问题了,运行的时候居然又崩了,我们看看报错提示


    15.png
  • 原来是因为TZMiddleView里面的xib文件加载出错了,因为此时xib文件并不在我们的MainBundle里面

    我们将MainBundle打开看看里面的内容


  • 我们发现xib文件在Frameworks文件夹下面的TZSoundMain.Framework里面


  • 进到TZMiddeleView中修改加载xib文件的包路径方法+ (instancetype)middleView中

 //加载资源所在的bundle位置
    NSBundle *currentBundle = [NSBundle bundleForClass:[self class]];
    TZMiddleView *middleView = [[currentBundle loadNibNamed:@"TZMiddleView" owner:nil options:nil] firstObject];
  • 然后再来跑一下测试工程,看看bug有没有解决



    我们发现工程已经跑起来了和我们的宿主工程几乎相差无几,唯一不同的就是缺少图片,但是由于我们的资源都在宿主工程而没有在我们的组件当中,所以所有的图片都无法加载,我们其实应该将我们的图片资源都加载到我们的组件当中,否则以后别人使用我们的组件还得单独下载图片,这违背了我们的初衷。

    那么下次我们将接着给大家来讲讲如何解决图片依赖的问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容