2015-07-23 24 views
11

Ho riscontrato un errore durante l'esecuzione di pod install.Si è verificato un errore durante l'elaborazione del gancio di preinstallazione del Podfile

[!] An error occurred while processing the pre-install hook of the Podfile. 

undefined method `pods' for #<Pod::Installer:0x007f9f93a66b90> 

/Users/XieYunjia/warmupApp/Podfile:49:in `block (2 levels) in from_ruby' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-core-0.38.0/lib/cocoapods-core/podfile.rb:153:in `call' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-core-0.38.0/lib/cocoapods-core/podfile.rb:153:in `pre_install!' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:731:in `run_podfile_pre_install_hook' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:719:in `block in run_podfile_pre_install_hooks' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/user_interface.rb:140:in `message' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:718:in `run_podfile_pre_install_hooks' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:142:in `block in download_dependencies' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/user_interface.rb:59:in `section' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:139:in `download_dependencies' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/installer.rb:104:in `install!' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/command/project.rb:71:in `run_install_with_update' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/command/project.rb:101:in `run' 
/Library/Ruby/Gems/2.0.0/gems/claide-0.9.1/lib/claide/command.rb:312:in `run' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/lib/cocoapods/command.rb:48:in `run' 
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.38.0/bin/pod:44:in `<top (required)>' 
/usr/bin/pod:23:in `load' 
/usr/bin/pod:23:in `<main>' 

Questo è il contenuto del mio Podfile.

platform :ios, "7.0" 

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => '2.5.4' 
pod 'MagicalRecord', :git => 'https://github.com/magicalpanda/MagicalRecord.git', :tag => 'v2.3.0-beta.5',:inhibit_warnings => true 
pod 'ReactiveCocoa', '~> 2.4.7' 

...... 

pod 'LTNavigationBar', '~> 2.0.1' 
pod 'TSMessages' ,:head 

# DEBUG 
pod 'SocketRocket', '~> 0.2.0' ,:inhibit_warnings => true,  :configurations => ['Debug'] 
pod 'PonyDebugger', '~> 0.4.3' ,:inhibit_warnings => true, :configurations => ['Debug'] 
pod 'Reveal-iOS-SDK', :configurations => ['Debug'] 

target :warmupTests, :exclusive => true do 
    pod 'Kiwi' 
end 

#remove all unsupported localization files 
pre_install do |installer| 
    supported_locales = ['base' , 'zh-hans', 'en' , 'english'] 

    installer.pods.each do |pod| 
    %x[ find "#{pod.root}" -name '*.lproj' ].split.each do |bundle| 
     if (!supported_locales.include?(File.basename(bundle,   ".lproj").downcase)) 
     puts "Removing #{bundle}" 
     FileUtils.rm_rf(bundle) 
     end 
    end 
    end 
end 

Se ho rimosso le ultime poche righe che mostrano di seguito, questo errore scomparirebbe.

#remove all unsupported localization files 
pre_install do |installer| 
    supported_locales = ['base' , 'zh-hans', 'en' , 'english'] 

    installer.pods.each do |pod| 
    %x[ find "#{pod.root}" -name '*.lproj' ].split.each do |bundle| 
     if (!supported_locales.include?(File.basename(bundle,   ".lproj").downcase)) 
     puts "Removing #{bundle}" 
     FileUtils.rm_rf(bundle) 
     end 
    end 
    end 
end 

Quali sono le cause di questo errore e come posso risolverlo? Scusa per il mio povero inglese.

risposta

2

Cocoapod ha apportato una modifica a installer di recente. Avrai voglia di fare qualcosa di simile:

pre_install do |installer| 
    supported_locales = ['base', 'zh-hans', 'en', 'english'] 

    Dir.glob(File.join(installer.sandbox.pod_dir('FormatterKit'), '**', '*.lproj')).each do |bundle| 
     if (!supported_locales.include?(File.basename(bundle, ".lproj").downcase)) 
      puts "Removing #{bundle}" 
      FileUtils.rm_rf(bundle) 
     end 
    end 
end 
1

provare qualcosa di simile per la compatibilità all'indietro

pre_install do |installer_or_rep| 
    # backwards compatibility info http://blog.cocoapods.org/CocoaPods-0.38/ 
    supported_locales = ['base' , 'zh-hans', 'en' , 'english'] 

    if installer_or_rep.respond_to?(:installer) 
     # pre 0.38.0 
     installer_or_rep.pods.each do |pod| 
      delete_unsupported_locales(pod.root, supported_locales) 
     end 
    else 
     # post 0.38.0 
     delete_unsupported_locales(installer_or_rep.sandbox.root, supported_locales) 
    end 
end 

def delete_unsupported_locales(root, supported_locales) 
    Dir.glob(File.join(root, '**', '*.lproj')).each do |bundle| 
     if (!supported_locales.include?(File.basename(bundle, ".lproj").downcase)) 
      puts "Removing #{bundle}" 
      FileUtils.rm_rf(bundle) 
     end 
    end 
end 
0

script aggiornato a lavorare su pod v1.3.1 (a partire dal 4/10/2017)

platform :ios, '9.0' 

target 'MyApp-iOS' do 

    use_frameworks! 

    # Pods for MyApp-iOS 

    # Remove unused languages from Pods 
    pre_install do |installer| 
     supported_locales = ['base', 'en', 'english'] 
     delete_unsupported_locales(installer.sandbox.root, supported_locales) 
    end 
end 

def delete_unsupported_locales(root, supported_locales) 
    Dir.glob(File.join(root, '**', '*.lproj')).each do |bundle| 
     if (!supported_locales.include?(File.basename(bundle, ".lproj").downcase)) 
      puts "Removing #{bundle}" 
      FileUtils.rm_rf(bundle) 
     end 
    end 
end 
Problemi correlati