Есть ли способ включить актив изображения, который будет доступен только в превью для SwiftUI? - PullRequest
1 голос
/ 02 апреля 2020

Я разрабатываю CocoaPod и хочу включить в свою цель изображения, которые я могу использовать в превью SwiftUI. Я не хочу, чтобы они были включены в двоичный файл или в пакет при отправке. Возможно ли это?

Если я не включаю комплект ресурсов в подспи c, он не отображается под моими модулями разработки, но я не хочу его в подспи c потому что я не хочу отправлять изображения.

Я думаю, что, возможно, есть способ сделать это, выполнив специальный шаг после pod install, который скопирует комплект ресурсов из примера приложения в разработку стручок, но я еще не совсем понял это.

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

При создании проекта на основе SwiftUI создается следующая группа с каталогом ресурсов только для предварительного просмотра

demo

Настройки целевой сборки:

demo

0 голосов
/ 03 апреля 2020

Следуя ответу @ Аспери, я написал следующий шаг post_install для своего модуля разработки. Не забудьте изменить $ {TARGET_NAME} для своей цели:

post_install do |installer_representation|
  project = installer_representation.pods_project
  subdir = "PreviewAssets"
  # First add the PreviewAssets folder to the build settings for the debug configuration
  project.targets.each do |target|
    if target.name == "${TARGET_NAME}"
      target.build_configurations.each do |config|
        if config.name == 'Debug'
          config.build_settings['DEVELOPMENT_ASSET_PATHS'] ||= ['${PODS_TARGET_SRCROOT}/' + subdir]
        end
      end
    end
  end
  # Second grab all the xcassets from the PreviewAssets folder and add them to the ${TARGET_NAME} group in
  # the Development Pods group
  group = project.pod_group("${TARGET_NAME}")
  references = []
  # Is there a better way to get the root of your project?
  directory = installer_representation.sandbox.root.join("../..", subdir)
  Dir.chdir(directory)
  Dir.glob("*").each do |f|
    if File.directory?(f)
      full_path = File.expand_path(f)
      references << project.add_file_reference(full_path, group)
    end
  end
  # Last add the asset catalogs to the target
  project.targets.each do |target|
    if target.name == "${TARGET_NAME}"
      target.add_file_references(references)
    end
  end
end
...