Aviso Xcode: vários destinos correspondem à dependência implícita do produto

8

Eu tenho um aplicativo que vem em dois sabores (pago e gratuito). Uma das minhas estruturas é chamada AppBootstrap, que possui duas subespécies (FreeVersion e PaidVersion)

Agora o Xcode continua emitindo esse aviso irritante (eu aponto para zero avisos no meu projeto, então não quero apenas ignorá-lo, terrenos escorregadios e coisas assim;))

Multiple targets match implicit dependency for product reference 'AppBootstrap.framework'. Consider adding an explicit dependency on the intended target to resolve this ambiguity. (in target 'The Flight Tracker Free' from project 'The Flight Tracker')
Target 'AppBootstrap-FreeVersion' (in project 'AppBootstrap')
Target 'AppBootstrap-PaidVersion' (in project 'AppBootstrap')

Pesquisei um pouco no Google, mas não consegui descobrir como resolver isso. Tentei * adicioná-lo na fase de construção 'Link Binary With Libraries', mas isso não foi resolvido. * adicionando-o à fase de dependências, mas eles não aparecem lá. * alterando o '-framework AppBootstrap' em 'Build settings => Other Linker Flags' para '-framework AppBootstrap-FreeVersion', mas isso acaba causando erros.

Meu podfile (simplificado)

source 'custom-pods/link'
source 'https://cdn.cocoapods.org/'

platform :ios, '9.0'

install! 'cocoapods',
  :generate_multiple_pod_projects => true,
  :incremental_installation => true

use_frameworks!
inhibit_all_warnings!

workspace 'MyApp'

target 'MyAppFree' do
  pod 'AppBootstrap/FreeVersion'
end

target 'MyAppPaid' do    
  pod 'AppBootstrap/PaidVersion'
end

AppBootstrap podspec

Pod::Spec.new do |s|
    s.name        = 'AppBootstrap'
    s.version     = '3.18.2'
    s.summary     = 'iOS App Bootstrap Module.'
    s.platforms   = { ios: '9.0' }
    s.swift_version = '5.0'

    s.description = <<-DESC
        Contains classes to bootstrap ios apps.
    DESC

    s.homepage = ---
    s.license  = { type: 'MIT', file: 'LICENSE' }
    s.author   = { --- }
    s.source   = { --- }

    s.frameworks = [
        'Foundation',
        'UIKit'
    ]


    s.subspec 'PaidVersion' do |sub|
        sub.dependency 'Advertisement/Core'

        sub.source_files = [
            'AppBootstrap/source/**/*.swift'
        ]

        sub.resources = [
            'AppBootstrap/support/Localization/*.lproj',
            'AppBootstrap/support/ConsentText.plist',
            'AppBootstrap/support/Images.xcassets'
        ]

        sub.pod_target_xcconfig = {
            'APPLICATION_EXTENSION_API_ONLY' => 'NO'
        }

        sub.pod_target_xcconfig = {
            'OTHER_SWIFT_FLAGS' => '-D"PAIDVERSION"'
        }
    end

    s.subspec 'FreeVersion' do |sub|
        sub.dependency 'Advertisement/Ads'

        sub.source_files = [
            'AppBootstrap/source/**/*.swift'
        ]

        sub.resources = [
            'AppBootstrap/support/Localization/*.lproj',
            'AppBootstrap/support/ConsentText.plist',
            'AppBootstrap/support/Images.xcassets',
            'AppBootstrap/support/Colors.xcassets',
            'AppBootstrap/support/Fonts/*.otf'
        ]

        sub.pod_target_xcconfig = {
            'APPLICATION_EXTENSION_API_ONLY' => 'NO'
        }

        sub.pod_target_xcconfig = {
            'OTHER_SWIFT_FLAGS' => '-D"FREEVERSION"'
        }
    end

    s.subspec 'Undefined' do |sub|
        sub.dependency 'Advertisement/Core'

        sub.source_files = [
            'AppBootstrap/source/**/*.swift'
        ]

        sub.resources = [
            'AppBootstrap/support/Localization/*.lproj',
            'AppBootstrap/support/ConsentText.plist',
            'AppBootstrap/support/Images.xcassets',
            'AppBootstrap/support/Fonts/*.otf'
        ]

        sub.pod_target_xcconfig = {
            'APPLICATION_EXTENSION_API_ONLY' => 'NO'
        }

        sub.pod_target_xcconfig = {
            'OTHER_SWIFT_FLAGS' => '-D"UNDEFINEDVERSION"'
        }
    end

    s.default_subspec = 'Undefined'
end

Qualquer ajuda / conselho é muito apreciada =)

Saren Inden
fonte
Você encontrou uma solução?
18719 Oleg_Korchickiy #
ainda não [precisa de mais oito caracteres ...]
Saren Inden

Respostas:

2

o erro acabou de acontecer em Pruduct -> Archive.

você pode instalar o pod para um único destino antes do arquivo morto.

source 'custom-pods/link'
source 'https://cdn.cocoapods.org/'

platform :ios, '9.0'

install! 'cocoapods',
  :generate_multiple_pod_projects => true,
  :incremental_installation => true

use_frameworks!
inhibit_all_warnings!

def MyAppPods (scheme)
  if scheme == 'MyAppFree'
    pod 'AppBootstrap/FreeVersion'
  end
  if scheme == 'MyAppPaid'
    pod 'AppBootstrap/PaidVersion'
  end
end

workspace 'MyApp'

scheme = ENV['scheme']
if scheme
  target scheme do
    MyAppPods scheme
  end
else
  target 'MyAppFree' do
    MyAppPods 'MyAppFree'
  end

  target 'MyAppPaid' do    
    MyAppPods 'MyAppPaid'
  end
end
scheme='MyAppFree' pod install
Huang Qiaobo
fonte
0

Aconteceu comigo quando eu bato a versão mínima do iOS no Podfile, mas esqueci de usá-la para estruturas (destinos) no Podfile

Dmitrii Klassneckii
fonte