Cocoapods post_install, как добавить целевое членство в проекте Pods - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть Podfile, который при создании Pods.xcodeProj заканчивается включенным xcframework, который является ссылкой на файл Pods.xcodeproj, который мне нужно добавить в качестве целевой ссылки к одной из встроенных целей pods.

Я думаю, что это возможно сделать в фазе Podfile post_install, но я не могу понять синтаксис гема xcodeproj, необходимый для (A) поиска ссылки на Nami.xcframework, которую мне нужно добавить к цели, затем (B) добавьте ссылку на этот файл к желаемой цели (см. изображение ниже для структуры, для которой я буду sh настраивать целевое членство, я просто хочу автоматизировать проверку этого целевого поля членства).

My начало этого сценария Podfile выглядит следующим образом:

post_install do |installer|
    nami_target = installer.pods_project.targets { |f| f.name == "react-native-nami-sdk" }

    #Pseudocode begins here, this is what I cannot figure out
    nami_xcframework_fileref = ??
    nami_target.addBuildReference(nami_xcframework)
end

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

Screen shot showing framework and target membership I need to adjust in Podfile

1 Ответ

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

Мне удалось выяснить полный сценарий, который мне был нужен, приведенный ниже сценарий Podfile post_install делает именно то, что я искал.

Обратите внимание, что ключом было то, что вы можете исследовать цели с помощью .name свойство, только для ссылок на файл .path всегда будет иметь содержимое, которое вы можете просмотреть, .name часто пустое. Еще один ключевой момент - это то, что вам нужно добавить ссылку на файл к аспекту frameworks_build_phase цели.

Последний сценарий (добавленный в конец подфайла):

post_install do |installer|
  puts("Attempting to add Nami.xcframework reference to react-native-nami-sdk project.")
  installer.pods_project.targets.each do |target|
    if target.name  == "react-native-nami-sdk"
      puts("Found react-native-nami-sdk target.")
      all_filerefs = installer.pods_project.files
      all_filerefs.each do |fileref|
         if fileref.path.end_with? "Nami.xcframework"
          puts("Found Nami.xcframework fileref.")
          build_phase = target.frameworks_build_phase
          puts("Determining if react-native-nami-sdk build phase needs correction.")
          unless build_phase.files_references.include?(fileref)
            puts("Adding Nami.xcframework to react-native-nami-sdk target")
            build_phase.add_file_reference(fileref)
          end
         end
      end
    end
  end
end
...