Skip to content

Latest commit

 

History

History
66 lines (58 loc) · 1.83 KB

COCOAPODS-and-FLUTTER.md

File metadata and controls

66 lines (58 loc) · 1.83 KB

CocoaPods & Flutter

TDLibFramework is distributed only via SPM. You will need some additional setup to include this framework to your Flutter Swift plugin or CocoaPods project.

  1. Patch Podfile to support SPM and change TARGET with Your Swift Plugin name
SPM_DEPS = [
  {
    targets: ["TARGET"], 
    spec: {
      url: "https://github.com/Swiftgram/TDLibFramework",
      requirement: {
        kind: "upToNextMajorVersion",
        # Grab latest version from https://github.com/Swiftgram/TDLibFramework/releases
        minimumVersion: "1.8.26-b41f3219"
      },
      product_name: "TDLibFramework"
    }
  }
]

# Patching support for SPM deps https://github.com/CocoaPods/CocoaPods/issues/10049#issuecomment-819480131
def add_spm_to_target(project, target_name, url, requirement, product_name)
  project.targets.each do |target|
    if target.name == target_name
      pkg = project.new(Xcodeproj::Project::Object::XCRemoteSwiftPackageReference)
      pkg.repositoryURL = url
      pkg.requirement = requirement
      ref = project.new(Xcodeproj::Project::Object::XCSwiftPackageProductDependency)
      ref.package = pkg
      ref.product_name = product_name
      target.package_product_dependencies << ref
      project.root_object.package_references << pkg
    end
  end

  project.save
end
  1. Append post_install script with SPM deps install
post_install do |installer|
  ### Flutter only
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end
  ###

  # Add SPM deps
  puts "Including SPM dependencies"
  SPM_DEPS.each do |spm_dep|
    spm_dep[:targets].each do |target|
      add_spm_to_target(
        installer.pods_project,
        target,
        spm_dep[:spec][:url],
        spm_dep[:spec][:requirement],
        spm_dep[:spec][:product_name]
      )
    end
  end
end