代码之家  ›  专栏  ›  技术社区  ›  Almas Adilbek

如何将flutr项目导出为SDK(iOS静态框架)

  •  1
  • Almas Adilbek  · 技术社区  · 7 年前

    我们已经建立了一个了不起的 颤振工程 ,它具有我们想要的强大功能 作为一个 框架 ,就像本地人一样 图书馆 做,这样 源代码被隐藏 (转换为动态框架)。

    我们遵循了以下指示: https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps

    它允许我们将flutr项目包含在主机iOS应用程序中,初始化 FlutterEngine 以及使用 FlutterViewController .

    问题是,我们如何创建一个动态框架 SomeProductSDK.framework框架 SomeProductSDK公司 相关的 模式屏幕 ?

    // In any app
    import SomeProductSDK
    
    let controller = TransactionViewController() // SomeProductSDK.framework with partial implementation with flutter
    self.present(controller, animated: true)
    
    0 回复  |  直到 7 年前
        1
  •  5
  •   szotp    7 年前

    我已经部分实现了你想要的。所有这些都是非常实验性的,总体来说,这对于面向生产的SDK来说是个坏主意。但是。。。有可能。

    1. 像往常一样创建flutter应用程序,并在iOS模拟器上运行一次。
    2. 打开Xcode工作区并添加新框架。为了我的目的,我将它命名为RunnerLib。
    3. 将该框架的部署目标更改为与Runner相同。同时禁用位码。
    4. 将App.framework和Flutter.framework的目标成员身份更改为RunnerLib。
    5. 使用一个静态方法创建启动程序类: + (void)launchFrom:(UIViewController *)parent ,这应该创建一个颤振视图控制器并呈现它。
    6. 重写Runner以使用Launcher类。将flutrappdelegate替换为标准AppDelegate、make ViewController等。它应该看起来像标准的原生iOS项目,因此您可以创建一个并复制AppDelegate、脚本和ViewController。
    7. 你应该能够建立跑步者和看到颤振屏幕出现。
    8. 现在,如果您构建了Runner应用程序,您可以打开板条箱Runner.app,并看到Frameworks目录包含3个框架:app、Flutter和Runner。
    9. 您需要有两组框架:一组用于模拟器,在调试模式下编译,另一组用于设备存档。获取调试框架非常简单,只需从Xcode编译并检查产品即可。归档的框架比较难,我建议 xcodebuild archive 已禁用签名。
    10. 您的用户将不得不配置他们的项目,以便根据设备使用正确的框架。也许这一步可以通过迦太基和胖二进制文件自动完成,但我不确定。问题在于App.framework在设备上看起来与在模拟器上完全不同。

    源代码: https://github.com/szotp/runner_lib

        2
  •  1
  •   Son of Stackoverflow Nagendra Nigade    7 年前

    为了将框架导出为本机库,您必须确保使用框架的人(用户)已将flutr SDK安装到其计算机上,因为默认情况下,框架的代码肯定依赖于flutr SDK。所以你所要做的就是在pub.dev上拥有自己的包。

    如果您找到某种方法使您想要导出的框架独立于flutr的框架,那么只有将其导出为框架才有意义。(毫无疑问,这样做应该是可能的,但是看看您将投入多少工作和时间来实现您的框架。你可以用同样的努力和时间建立自己的颤振框架)

    既然你已经做得那么棒了 颤振工程 ,请考虑将其作为包上载到 https://pub.dev/ 如果你愿意的话。

    建议:您可以让想要尝试您的软件包的用户安装Flutter。这样你的努力就不会白费了。

    结论: 实现你的目标实际上是不可行的。