2016-05-11 19 views
19

Uso CocoaPods per gestire le dipendenze nel mio progetto. Ho scritto Podfile:Imposta il target di distribuzione per il pod CocoaPods

target 'MyApp' do 
    platform :ios, '8.0' 
    # Uncomment this line if you're using Swift or would like to use dynamic frameworks 
    #use_frameworks! 

    # Pods for MyApp 
    pod 'KeepLayout', :git => 'https://github.com/iMartinKiss/KeepLayout', :tag => 'v1.6.0' 
    pod 'EasyMapping' 

    target 'MyAppTests' do 
    inherit! :search_paths 
    # Pods for testing 
    end 

    target 'MyAppUITests' do 
    inherit! :search_paths 
    # Pods for testing 
    end 

end 

Questo file funziona bene con CocoaPods 0.x ma non riesco a compilare il progetto dopo ho aggiornato a CocoaPods 1.0. Dopo che ho fatto funzionare

pod update 

io non riesco a compilare il mio progetto con l'errore:

/Users/<...>/Pods/KeepLayout/Sources/KeepAttribute.m:195:1: Cannot synthesize weak property because the current deployment target does not support weak references

ho visto che ogni biblioteca è costruito con destinazione di distribuzione diversa. Ad esempio, KeepLayout è costruito con obiettivo di distribuzione 4.3.

Come posso determinare il target di build per ogni dipendenza pod?

+0

soluzione temporanea: andare in Xcode, selezionare il progetto 'Pod', e impostare la destinazione di distribuzione di cui sopra 6, credo, quando 'debole' apparso. Ho 8.0. Ma dopo l'installazione di ogni pod torna a 4, quindi sono anche curioso di una soluzione definitiva. – codrut

+0

Grazie. L'ho creato prima, ma non penso che sia una buona soluzione. –

+0

Inoltre ho trovato che lo script lo crea automaticamente per ogni target del progetto, ma non funziona con CocoaPods 1.0. :( –

risposta

47

Mentre alcune versioni di sviluppo di CocoaPods (così come versioni precedenti alla 1.0) possono aver propagato la destinazione di distribuzione del progetto ai pod, questo è no longer the case in 1.0. Per ovviare a questo, the current developer recommends utilizzando un hook post-installazione.

Ecco un approccio a forza bruta per forzare un obiettivo di distribuzione hardcoded per ogni pod nel progetto Pod generati. Incolla questo alla fine della vostra Podfile:

post_install do |installer| 
    installer.pods_project.targets.each do |target| 
    target.build_configurations.each do |config| 
     config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.2' 
    end 
    end 
end 
+0

Sostituisci ''9.2'' con qualsiasi obiettivo di distribuzione che vorresti usare. –

+1

Abbiamo aggiornato le specifiche della libreria, ma la tua soluzione è ottima. –

+0

Questa soluzione funziona alla grande. Grazie! –

Problemi correlati