Как установить идентификатор пакета для какаопода

Для созданного мной модуля Cocoapod установил org.cocoapods в качестве префикса для идентификатора пакета моего модуля:

введите здесь описание изображения

Я хотел бы иметь возможность установить свой собственный префикс, но я не нашел возможности сделать это в podspec.

Кто-нибудь знает, существует ли этот вариант?

С уважением. Себастьян.


person Sébastien    schedule 07.12.2015    source источник


Ответы (5)


Вы можете предоставить свой собственный файл plist для модуля разработки, например:

s.pod_target_xcconfig = {
  'INFOPLIST_FILE' => '${PODS_TARGET_SRCROOT}/Resources/YourPod-Info.plist'
}

Тогда вам просто нужно просто изменить Bundle identifier внутри этого plist.

person Nikolay Derkach    schedule 03.06.2019

вам нужно предоставить оба

s.info_plist = { 'CFBundleIdentifier' => 'com.myorg.mylib' }

s.pod_target_xcconfig = { 'PRODUCT_BUNDLE_IDENTIFIER': 'com.myorg.mylib' }

person Emiliano Juan Galitiello    schedule 11.06.2020

На сегодняшний день такой опции не существует: https://github.com/CocoaPods/CocoaPods/issues/4632#issuecomment-162531257

С уважением. Себастьян.

person Sébastien    schedule 07.12.2015

Возможный обходной путь — использовать обработчик post_install. Вот пример скрипта:

post_install do |installer|

  installer.project.targets.each do |target|
    target.build_configurations.each do |config|
      if config.name == 'BREnterprise'
        config.build_settings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'] = 'iPhone Distribution: The Carter Group LLC'
        config.build_settings['PROVISIONING_PROFILE'] = '${BR_ENTERPRISE_PROVISIONING_PROFILE}'
      end
    end
  end

  # change bundle id of each pod to 'com.bottlerocketapps.*'
  bundle_id = 'com.bottlerocketapps'

  directory = installer.config.project_pods_root + 'Target Support Files/'
  Dir.foreach(directory) do |path|

    full_path = directory + path
    if File.directory?(full_path)

      info_plist_path = full_path + 'Info.plist'
      if File.exist?(info_plist_path)

        text = File.read(info_plist_path)
        new_contents = text.gsub('org.cocoapods', bundle_id)
        File.open(info_plist_path, "w") {|file| file.puts new_contents }
      end
    end
  end
end
person Sébastien    schedule 03.06.2016

Это легко сделать из этого ответа.

Info.plist DSL будет включен в версию 1.8.0.

Чтобы установить идентификатор пакета:

# in .podspec
s.info_plist = {
  'CFBundleIdentifier' => 'com.myorg.mylib'
}

Текущая версия Cocoapods — 1.8.0 beta2. Я только что попробовал эту версию, и она работает. Но если вы используете «push trunk push», появлялись некоторые сообщения об ошибках «Спецификация Pod не прошла проверку». Возможно, нам нужно дождаться выхода версии 1.8.0.

person echo    schedule 11.09.2019