gpt4 book ai didi

ios - 如何将Flutter项目导出为SDK(iOS动态框架)

转载 作者:行者123 更新时间:2023-12-02 01:44:20 29 4
gpt4 key购买 nike

我们已经构建了一个非常棒的 Flutter 项目,它具有我们想要导出作为框架的强大功能,就像原生这样做,以便隐藏源代码(转换为动态框架)。

我们已按照说明操作:https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps

它允许我们将 Flutter 项目包含在 Host iOS 应用程序中,初始化 FlutterEngine 并使用 FlutterViewController

问题是,我们如何创建一个动态框架,比如说 SomeProductSDK.framework,它将公开一个公共(public)方法来创建与 SomeProductSDK 相关的模式屏幕

// In any app
import SomeProductSDK

let controller = TransactionViewController() // SomeProductSDK.framework with partial implementation with flutter
self.present(controller, animated: true)

最佳答案

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

  1. 照常创建 flutter 应用并在 iOS 模拟器上运行一次。
  2. 打开 Xcode 工作区并添加新框架。出于我的目的,我将其命名为 RunnerLib。
  3. 将该框架的部署目标更改为与 Runner 相同。同时禁用位码。
  4. 将 App.framework 和 Flutter.framework 的目标成员身份更改为 RunnerLib。
  5. 使用一个静态方法创建 Launcher 类:+ (void)launchFrom:(UIViewController *)parent,这应该创建一个 FlutterViewController 并呈现它。
  6. 重写 Runner 以使用 Launcher 类。将 FlutterAppDelegate 替换为标准 AppDelegate,制作 ViewController 等。它应该看起来像标准的原生 iOS 项目,因此您可以创建一个并复制 AppDelegate、storyboard 和 ViewController。
  7. 在 View Controller 、viewDidAppear 中或作为按钮上的 IBAction 调用 launchFrom 方法。
  8. 您应该能够构建 Runner 并看到出现 flutter 屏幕。
  9. 现在,如果您构建了 Runner 应用,则可以打开打包的 Runner.app,可以看到 Frameworks 目录包含 3 个框架:App、Flutter 和 Runner。
  10. 您需要有两套框架:一套用于模拟器,在 Debug模式下编译,另一套用于设备 - 已存档。获取调试框架非常简单,只需从 Xcode 编译并检查产品即可。归档框架比较困难,我建议在禁用签名的情况下执行 xcodebuild archive
  11. 您的用户必须根据设备配置其项目以使用正确的框架。也许这个步骤可以通过迦太基和胖二进制文件自动化,但我不确定。问题出在 App.framework 上,它在设备上与在模拟器上看起来完全不同。

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

关于ios - 如何将Flutter项目导出为SDK(iOS动态框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57710176/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com