Podfile 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. target 'LoopFollow' do
  2. use_frameworks!
  3. pod 'Charts'
  4. pod 'ShareClient', :git => 'https://github.com/loopandlearn/dexcom-share-client-swift.git', :branch => 'loopfollow'
  5. end
  6. post_install do |installer|
  7. # Set minimum deployment target for all pods to match the app (suppresses deprecation warnings)
  8. installer.pods_project.targets.each do |target|
  9. target.build_configurations.each do |config|
  10. if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 16.6
  11. config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.6'
  12. end
  13. end
  14. end
  15. # Patch Charts Transformer to avoid "CGAffineTransformInvert: singular matrix"
  16. # warnings when chart views have zero dimensions (before layout).
  17. transformer = 'Pods/Charts/Source/Charts/Utils/Transformer.swift'
  18. if File.exist?(transformer)
  19. code = File.read(transformer)
  20. original = 'return valueToPixelMatrix.inverted()'
  21. patched = <<~SWIFT.chomp
  22. let matrix = valueToPixelMatrix
  23. guard matrix.a * matrix.d - matrix.b * matrix.c != 0 else {
  24. return .identity
  25. }
  26. return matrix.inverted()
  27. SWIFT
  28. if code.include?(original)
  29. File.write(transformer, code.sub(original, patched))
  30. end
  31. end
  32. # Inject a privacy manifest into the Charts framework (ITMS-91061).
  33. # Charts 4.1.0 ships no PrivacyInfo.xcprivacy; it collects no data, performs
  34. # no tracking, and uses no required-reason APIs, so this is a negative
  35. # declaration. Re-applied here because `pod install` regenerates the project.
  36. charts_manifest = <<~XML
  37. <?xml version="1.0" encoding="UTF-8"?>
  38. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  39. <plist version="1.0">
  40. <dict>
  41. \t<key>NSPrivacyTracking</key>
  42. \t<false/>
  43. \t<key>NSPrivacyTrackingDomains</key>
  44. \t<array/>
  45. \t<key>NSPrivacyCollectedDataTypes</key>
  46. \t<array/>
  47. \t<key>NSPrivacyAccessedAPITypes</key>
  48. \t<array/>
  49. </dict>
  50. </plist>
  51. XML
  52. manifest_path = installer.sandbox.root + 'Charts/PrivacyInfo.xcprivacy'
  53. File.write(manifest_path, charts_manifest)
  54. charts_target = installer.pods_project.targets.find { |t| t.name == 'Charts' }
  55. if charts_target
  56. file_ref = installer.pods_project.new_file(manifest_path.to_s)
  57. already_added = charts_target.resources_build_phase.files_references.include?(file_ref)
  58. charts_target.resources_build_phase.add_file_reference(file_ref) unless already_added
  59. installer.pods_project.save
  60. end
  61. end