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

完整项目包装成framework 1

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

完整项目准备迁移mPaaS,计划是把整个项目导入到mPaaS工程中,仅使用一个Launcher,后期在分批量的,拆分成microApp和H5包,百度说,项目需要编译成.framework或者.a库后导入主项目中,这里也跟随这个思路往下走。

坑1

  • framework的target和项目target一样,需要.m文件绑定到target才可以使用
  • 对应的,项目引用的framework,静态库,都要让framework进行引用
  • 资源文件的引用,assets、Xib、StoryBoard,都需要让framework进行引用


    这是framework的Build phases 就这样

不然运行过程中会报错找不到文件,形态库用不了,或者Xib无法加载之类的

//使用了未定义的类,
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_xx文件名", referenced from:...

上千个.m的绑定target,要命!
几个办法:

  1. 顺着项目找,一个一个改
  2. Xcode - find - regular expression 使用正则匹配([a-zA-Z]*)(\.m), 不过问题是实际匹配的是注释里面的XXX.m,如果没有注释或者注释是错的,就没法子了
  3. 着重介绍第三种,直接修改project.pbxproj,上面需要的资源文件都可以通过这种方式进行添加
    分几步:
    • 第一步肯定是打开project.pbxproj了
    • 找到/* End PBXProject section */行,在他上面有下面样式的代码,SubProjectOutlet,就是我们的framwork的target,项目的target
    targets = (
                EF1D01D1250B21F500F5F0FB /* SubProject */,
                EF1D01EC250B21F600F5F0FB /* SubProjectUITests */,
                EF1D02BD250B514A00F5F0FB /* SubProjectOutlet */, 我是framwork的target
            );
  • 拷贝SubProjectOutlet的代码EF1D02BD250B514A00F5F0FB继续搜索,找到资源的指向位置,
        EF1D02BD250B514A00F5F0FB /* SubProjectOutlet */ = {
            isa = PBXNativeTarget;
            buildConfigurationList = EF1D02C9250B514A00F5F0FB /* Build configuration list for PBXNativeTarget "SubProjectOutlet" */;
            buildPhases = (
                EF1D02B9250B514A00F5F0FB /* Headers */,
                EF1D02BA250B514A00F5F0FB /* Sources */,
                EF1D02BB250B514A00F5F0FB /* Frameworks */,
                EF1D02BC250B514A00F5F0FB /* Resources */,
            );
            。。。
        };
/* End PBXNativeTarget section */
  • 找到资源位置如下所示,明显能看出,项目绑定的比framwork绑定的要多的多,我们把项目的files 复制到framework,保存。compile Expression 就和项目一样了。
/* Begin PBXSourcesBuildPhase section */
        EF1D01CE250B21F500F5F0FB /* Sources */ = { // 项目的引用
            isa = PBXSourcesBuildPhase;
            buildActionMask = 2147483647;
            files = (
                EF1D022F250B223500F5F0FB /* UIImage+MultiFormat.m in Sources */,
                EF1D022B250B223500F5F0FB /* UIImageView+HighlightedWebCache.m in Sources */,
                EF1D022C250B223500F5F0FB /* FLAnimatedImageView+WebCache.m in Sources */,
                EF1D01DD250B21F500F5F0FB /* PBViewController.m in Sources */,
                ... // 这里就省略了若干个
            );
            runOnlyForDeploymentPostprocessing = 0;
        };
        。
        。
        。                
        EF1D02BA250B514A00F5F0FB /* Sources */ = {
            isa = PBXSourcesBuildPhase;
            buildActionMask = 2147483647;
            files = (
                EF1D02D1250B518E00F5F0FB /* PBViewController.m in Sources */,
                EFFE3EA72510567C00BFBE50 /* PBNextViewController.m in Sources */,
            );
            runOnlyForDeploymentPostprocessing = 0;
        };
/* End PBXSourcesBuildPhase section */

后面的Link Binary and Libraries 、 Copy bundle resources 都可以用这种方法解决。

PS: 绑定完成之后运行项目,可能会有如下的问题,

dyld: Library not loaded: @rpath/XXX.framework/XXX
Referenced from:XXX
Reason: image not found

此时,到framwork-General,下图位置,为对应的库,添加签名。


设置Embedded

相关文章

  • 完整项目包装成framework 1

    完整项目准备迁移mPaaS,计划是把整个项目导入到mPaaS工程中,仅使用一个Launcher,后期在分批量的,拆...

  • 完整项目包装成framework 2

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

  • 完整项目包装成framework 3

    前面说的都是动态库的设置,实际使用过程中,发现动态库引用的静态库被打进了framework中(这里不确定是配置问题...

  • 项目笔记

    项目笔记 1. framework风格架构 独立的业务模块,或一个独立的功能模块,把它封装成 Framework,...

  • framework制作过程

    1.首先新建一个项目,选择Cocoa touch Framework 2.然后随便取一个名字 3.然后将要封装成f...

  • iOS如何生成framework

    1.首先新建一个项目,选择Cocoa touch Framework 2.然后随便取一个名字 3.然后将要封装成f...

  • iOS cocopods 创建私有依赖库

    这里要说的就是 把自己 写的代码封装成 framework 然后 通过 pods 安装的方法 给 其他项目使用。 ...

  • 问题汇总

    C#Common.net framework项目使用net standard 包报NotFileFoundExce...

  • swift3.X打包自己的framework

    我是想把常用的工具方法,封装成一个framework封装成framework,运行速度会快,不会暴露方法的实现,装...

  • xcode oc项目集成opencv(刚开始学习)

    1.下载opencv.framework 把它拖到项目中 2.在新项目中引入下面的依赖包 3.新建个项目 创建pc...

网友评论

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

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