ios打包当前工程到framework的各种坑和注意事项

今天接到个需求,把云屋ios的demo封装成framework,供其他项目组直接使用。

上网搜了搜,教程一大把,经过了长达8 9个小时的研究,终于在新建项目中引入了封装好的framework,并运行成功,记录一下遇到的问题和坑

1、先创建一个空的framework叫MeetingSDKHxm,把云屋sdk整个项目都拽进去,编译各种报错,都是一些基础库没有引入,不应该呀,看了下都在pch文件中引入的,那就是pch文件路径找的不对,改成:

$(SRCROOT)/$(PROJECT_NAME)/Meeting/Meeting.pch

如图:

2、这回不报错了,新建一个demo项目叫TestFrameworkkkkk,把MeetingSDKHxm.framework导入进去,运行报错:

dyld: Library not loaded reson:image not found

解决方案:Project->build Phases-> Link Binary with libraries中,将引入的MeetingSDKHxm项改为optional,如图:

3、由于MeetingSDKHxm里开会前和开会中页面都是storyboard写的,所以TestFrameworkKKK打开弹出viewcontroller的方式如下:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"MeetingSDKHxm" ofType:@"framework"];
    NSBundle *meetingBundle = [NSBundle bundleWithPath:path];
    UIStoryboard *meeting = [UIStoryboard storyboardWithName:@"Meeting" bundle:meetingBundle];
    MeetingController *meetingVC = [meeting instantiateViewControllerWithIdentifier:@"MeetingController"];
    [meetingVC setMeetInfo:meetInfo];
    if (meetingVC) {
        if(@available(iOS 13.0, *)) {
            //ios13弹出不全屏问题
            meetingVC.modalPresentationStyle = UIModalPresentationFullScreen;
        }
        [self presentViewController:meetingVC animated:YES completion:nil];
    }

4、注意:网上的教程都是在MeetingSDKHxm.framework内新建bundle文件,把图片和storyboard拖拽进去,可我在TestFrameworkKKK中用上述代码测试根本调用不到storyboard

解决方案:只把图片拽到bundle文件中,storyboard不拖拽进去,打包framework后,storyboard会自动生成在framework的根文件夹下,位置如图:

5、成功调起MeetingViewController后打开的viewcontroller为空,啥都没显示出来。控制台打印:

Unknown class MeetingController in Interface Builder file.

各种搜解决方案,说啥的都有,都tm不对应我这种情况,最后是我自己实验出来的:

Project -> Build Phases -> Copy Bundle Resources 和 Embed Frameworks都加入MeetingSDKHxm就OK了。如图:

6、里面的各种view都展示出来了,可是MeetingSDKHxm工程内的图片不显示了,又各种试,各种搜解决办法。什么[UIImage imageNamed:@"Resources.bundle/back.png"]这种都试了,都不好使。

暂时找到的解决办法:不在MeetingSDKHxm.framwork内生成bundle,新建一个bundle,把图片都拖拽进去,再把bundle拖拽到TestFrameworkKKK项目中,和MeetingSDKHxm.framework平级,如图:

这样MeetingSDKHxm.framework内的页面就能访问Resources.bundle里的图片了,但是我觉得可能是哪里配置的不对,Resources.bundle应该还是可以放到MeetingSDKHxm.framework内,哪位看客有知道的指点一下。!!!!!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值