返回

iOS项目中使用Flutter Module依赖新方案 - 远程zip & Git,巧妙利用本地podspec中转

IOS

在iOS项目中集成Flutter Module,通常采用CocoaPods作为依赖管理工具。传统方案是将Flutter Module作为Podspec依赖,直接从远程仓库拉取编译产物。然而,此方案存在下载速度慢、版本管理不便等痛点。

为了解决这些问题,本文提出了一种新的依赖方案:Git子模块 + 本地podspec中转远程zip & git。具体实现步骤如下:

  1. 初始化Git子模块

    在iOS项目中,使用以下命令初始化Git子模块:

    git submodule add https://github.com/your-flutter-module.git
    git submodule update --init --recursive
    
  2. 创建本地podspec

    在iOS项目中,使用以下命令创建本地podspec文件:

    pod lib create --name your-flutter-module
    
  3. 修改本地podspec

    打开本地podspec文件,修改以下内容:

    s.dependency = 'Flutter'
    s.source_files = 'your-flutter-module'
    
  4. 创建远程zip

    在Flutter Module的构建产物中,生成一个包含所有编译产物的zip文件。例如,对于iOS真机架构,zip文件应包含以下内容:

    Flutter/App.framework/App
    Flutter/Flutter.framework/Flutter
    
  5. 上传远程zip

    将生成的zip文件上传到远程服务器,并获取其下载链接。

  6. 修改本地podspec

    再次打开本地podspec文件,修改以下内容:

    s.dependency = 'Flutter', 'your-flutter-module-zip'
    s.source_files = 'your-flutter-module'
    
  7. 替换你的Flutter Module zip下载链接

    将本地podspec中的"your-flutter-module-zip"替换为步骤5中获取的zip文件下载链接。

  8. 安装依赖

    在iOS项目中,使用以下命令安装依赖:

    pod install
    
  9. 使用Flutter Module

    在Swift或Objective-C文件中,使用Flutter Module方法即可。例如:

    let flutterEngine = FlutterEngine(name: "your-flutter-module")
    

此方案充分发挥了远程zip文件下载速度快的优势,同时利用Git版本管理特性,确保Flutter Module的版本与远程仓库保持一致。在iOS项目中使用Flutter Module时,推荐采用此方案,以提升开发效率和稳定性。