require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

platform :ios, '12.0'

target 'JuicePlus' do
  config = use_native_modules!
  pod 'react-native-google-maps', :path => '../node_modules/react-native-maps'
  #pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
  permissions_path = '../node_modules/react-native-permissions/ios'
  pod 'Permission-AppTrackingTransparency', :path => "#{permissions_path}/AppTrackingTransparency" #访问设备的广告标识符
  #pod 'Permission-BluetoothPeripheral', :path => "#{permissions_path}/BluetoothPeripheral" #访问蓝牙
  #pod 'Permission-Calendars', :path => "#{permissions_path}/Calendars" #访问日历
  pod 'Permission-Camera', :path => "#{permissions_path}/Camera"  #访问相机
  #pod 'Permission-Contacts', :path => "#{permissions_path}/Contacts"  #访问联系人
  #pod 'Permission-FaceID', :path => "#{permissions_path}/FaceID"  #访问FaceID
  pod 'Permission-LocationAccuracy', :path => "#{permissions_path}/LocationAccuracy" #访问高精度定位
  pod 'Permission-LocationAlways', :path => "#{permissions_path}/LocationAlways" #始终访问位置信息
  pod 'Permission-LocationWhenInUse', :path => "#{permissions_path}/LocationWhenInUse" #在使用中访问位置信息
  #pod 'Permission-MediaLibrary', :path => "#{permissions_path}/MediaLibrary" #使用媒体库
  pod 'Permission-Microphone', :path => "#{permissions_path}/Microphone"  #使用麦克风
  #pod 'Permission-Motion', :path => "#{permissions_path}/Motion"  #运动权限
  pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications" #使用通知
  pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary" #使用照片库
  pod 'Permission-PhotoLibraryAddOnly', :path => "#{permissions_path}/PhotoLibraryAddOnly" #添加照片
  #pod 'Permission-Reminders', :path => "#{permissions_path}/Reminders"
  #pod 'Permission-Siri', :path => "#{permissions_path}/Siri"
  #pod 'Permission-SpeechRecognition', :path => "#{permissions_path}/SpeechRecognition"
  #pod 'Permission-StoreKit', :path => "#{permissions_path}/StoreKit"
  #谷歌通知启用
  pod 'Firebase/Core', '9.4.0', :modular_headers => true
  pod 'Firebase/Analytics', '9.4.0', :modular_headers => true
  pod 'Firebase/Messaging', '9.4.0', :modular_headers => true
  pod 'FirebaseCoreInternal', '9.4.0', :modular_headers => true
  pod 'GoogleUtilities', :modular_headers => true
  #微软热更新
  pod 'CodePush', :path => '../node_modules/react-native-code-push'
  #pod 'AppCenter', :modular_headers => true
  #pod 'AppCenter/Analytics', :modular_headers => true
  #pod 'AppCenter/Crashes', :modular_headers => true

  use_react_native!(
    :path => config[:reactNativePath],
    # to enable hermes on iOS, change `false` to `true` and then install pods
    :hermes_enabled => false
  )

  target 'JuicePlusTests' do
    inherit! :complete
    # Pods for testing
  end

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable the next line.
  #use_flipper!()
  #use_flipper!('Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1')

  #post_install do |installer|
  #  react_native_post_install(installer)
  #end

  #--------------------修复iOS 16.4新建RN0.64无法运行--------------------------
  post_install do |installer|
    react_native_post_install(installer)
    fix_library_search_paths(installer)
    installer.pods_project.build_configurations.each do |config|
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
    end
  end
end

def fix_library_search_paths(installer)
  def fix_config(config)
    lib_search_paths = config.build_settings["LIBRARY_SEARCH_PATHS"]
    if lib_search_paths
      if lib_search_paths.include?("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)") || lib_search_paths.include?("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"")
        # $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) causes problem with Xcode 12.5 + arm64 (Apple M1)
        # since the libraries there are only built for x86_64 and i386.
        lib_search_paths.delete("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)")
        lib_search_paths.delete("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"")
        if !(lib_search_paths.include?("$(SDKROOT)/usr/lib/swift") || lib_search_paths.include?("\"$(SDKROOT)/usr/lib/swift\""))
          # however, $(SDKROOT)/usr/lib/swift is required, at least if user is not running CocoaPods 1.11
          lib_search_paths.insert(0, "$(SDKROOT)/usr/lib/swift")
        end
      end
    end
  end

  projects = installer.aggregate_targets
    .map{ |t| t.user_project }
    .uniq{ |p| p.path }
    .push(installer.pods_project)

  projects.each do |project|
    project.build_configurations.each do |config|
      fix_config(config)
    end
    project.native_targets.each do |target|
      target.build_configurations.each do |config|
        fix_config(config)
      end
    end
    project.save()
  end
  
# 在Xcode中选择您的项目，然后转到“Build Settings”,向下滚动，直到您看到“Search Paths”，最后看到“Library Search Paths”。
# 将"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"替换为"$(SDKROOT)/usr/lib/swift"

  # pre_install do |installer|
  #   Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
  #   installer.pod_targets.each do |pod|
  #       if $static_framework.include?(pod.name)
  #         def pod.build_type;
  #           Pod::BuildType.static_library
  #         end
  #       end
  #     end
  # end
  
  # post_install do |installer|
  #   installer.pods_project.targets.each do |target|
  #     target.build_configurations.each do |config|
  #       config.build_settings['ENABLE_BITCODE'] = 'NO'
  #       config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
  #     end
  #   end
  #   react_native_post_install(installer)
  # end
  #--------------------修复iOS 16.4新建RN0.64无法运行--------------------------

  #⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄修复iOS 14.5新建RN0.64无法运行⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄⌄
  # def find_and_replace(dir, findstr, replacestr)
  #   Dir[dir].each do |name|
  #     text = File.read(name)
  #     replace = text.gsub(findstr,replacestr)
  #     if text != replace
  #       puts "Fix: " + name
  #       File.open(name, "w") { |file| file.puts replace }
  #       STDOUT.flush
  #     end
  #   end
  #   Dir[dir + '*/'].each(&method(:find_and_replace))
  # end

  # post_install do |installer|
  #   flipper_post_install(installer)
  #   find_and_replace("Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h",
  #   "atomic_notify_one(state)", "folly::atomic_notify_one(state)")

  #   find_and_replace("Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h",
  #   "atomic_wait_until(&state, previous | data, deadline)", "folly::atomic_wait_until(&state, previous | data, deadline)")
  #   installer.pods_project.targets.each do |target|
  #     target.build_configurations.each do |config|
  #       config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' #将所有插件更新为iOS12可用
  #     end
  #   end
  # end
  #⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃修复iOS 14.5新建RN0.64无法运行⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃⌃
end
