美文网首页
完整项目包装成framework 2

完整项目包装成framework 2

作者: 山已几孑 | 来源:发表于2020-09-15 11:22 被阅读0次

    上面已经把响应的配置文件修改完成了,运行过程中又出现了其他的问题,

    坑2,NSBundle.mainBundle

    补充:这里的framework是动态库(dynamicLibrary)

    资源文件引用

    因为之前的项目,现在变成了framework,那么NSBundle.mainBundle就变了,而资源文件的查找通常是以 NSBundle.mainBundle的形式进行查找,因此~
    而当前framework的资源则被封装成为了一个bundle:[NSBundle bundleWithIdentifier:@"com.rmwjy.SubProjectOutLet"];

    • 图片资源找不到了,首先确定已经通过上一步把assets绑定到了framework,然后所有的图片调用,改为下面的方法:
    +(UIImage *)frameworkImageNamed:(NSString *)imageName {
        NSBundle * bundle = [NSBundle bundleWithIdentifier:@"com.rmwjy.SubProjectOutLet"];
        UIImage * image = [UIImage imageNamed:imageName inBundle:bundle compatibleWithTraitCollection:nil];
        return image;
    }
    
    • Xib、StoryBoard 文件UI加载不出来,理由是ViewController在init时会自动调用下面的方法,使用当前类的名称,mainBundle作为默认参数去查找Xib,因mainBundle找不到,所以无法加载
    - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
        NSBundle * bundle = [NSBundle bundleWithIdentifier:@"com.rmwjy.SubProjectOutLet"];
        self = [super initWithNibName:NSStringFromClass(self.class) bundle:bundle];
        return self;
    }
    

    这里目前是每个使用了Xib的VC都加上这个方法,后期应该是可以使用一个BaseVC来进行统一修改。

    • Xib还有View,Cell等多种调用方式:::
    //cell 注册
    [self.tableView registerNib:[UINib nibWithNibName:@"TableViewCell" bundle:[Utility frameworkBundle]] forCellReuseIdentifier:CellNibIdentifier];
    // view创建
    HeaderView* headerView = [[Utility frameworkBundle] loadNibNamed:@"HeaderView" owner:nil options:nil ].lastObject;
    
    
    项目引用的其他文件

    使用时,需要修改bundle

        NSString *cerPath = [[Utility frameworkBundle] pathForResource:@"mmsp.test.abchina.com 1.cer" ofType:nil]; //证书的路径
    
    

    如下:


    其他文件

    国际化语音文件,

    使用的方法在下面,他用的也是NSBundle.mainBundle,这里因为文件很少,我决定直接把他放到主工程中,这样NSBundle.mainBundle就能拿到主工程下的语言文件(framework不是目的,只是过程

            [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:(tbl)]
    

    项目缓存,项目中还存在一些使用了项目的文件目录的地方,如Document,temp,UserDefault等,这些文件路径的使用不需要更改NSBundle.mainBundle, 让他们随风去。

    相关文章

      网友评论

          本文标题:完整项目包装成framework 2

          本文链接:https://www.haomeiwen.com/subject/ttnxyktx.html