web-dev-qa-db-fra.com

Module 'GoogleMobileAds' non trouvé dans iOS

J'ai mis à jour Google AdMob SDK à la version 7.1.0 à l'aide de pods.

Donc, dans mon appDelegate.m, j'essaie d'ajouter cette ligne 

@import GoogleMobileAds;

Mais je reçois une erreur en disant Module 'GoogleMobileAds' non trouvé .

Ce problème est également présent dans l'exemple d'Interstial Ad de Google sur gitHub.

Cordialement Ranjit

29
Ranjit

Assurez-vous de cocher la case "Copier l'élément si nécessaire" lors de la copie de GoogleMobileAds.framework dans votre application.

 enter image description here

Dans mon cas, j'avais supprimé le cadre et ajouté à nouveau ce cadre et coché cette case et le problème avait disparu.

22
M Swapnil

essayez de copier votre GoogleMobileAds.framework dans le dossier de votre projet racine, puis ajoutez-le aux bibliothèques. Cela fonctionne parfaitement pour moi.

15
kaplya

Aucune des autres réponses à ce jour n'a fonctionné pour moi. C'est ce qui a fait:

Allez à 'Build Phases', 'Link Binary with Libraries'. J'avais déjà ajouté le GoogleMobileAds.framework ici, alors je l'ai supprimé et rajouté. 

Pour l'ajouter, cliquez sur le signe + correspondant à la section "Liens entre les fichiers binaires et les bibliothèques", puis cliquez sur "Ajouter un autre ...". Naviguez jusqu'à l'endroit où vous avez enregistré GoogleMobileAds.frameworket sélectionnez-le. 

Assurez-vous que vous avez d'abord ajouté GoogleMobileAds.framework à votre projet en allant dans 'Fichier'> 'Ajouter des fichiers à votre nom de projet'. 

Cela a résolu le problème pour moi. 

9
Mark

Voici la réponse:

Importez ceci dans votre fichier .m :

#import <GoogleMobileAds/GADInterstitial.h>
#import <GoogleMobileAds/GADBannerView.h>
7
Dasoga

J'ai rencontré ce problème lors de la mise à jour de mes pods et de l'utilisation de Firebase. Malheureusement, aucune des réponses ici n’a aidé, alors j’ai pensé que je publierais ce qui a fonctionné pour moi.

J'ai trouvé un bon fil qui m'a aidé ici . Essentiellement, cela a fonctionné:

  • Supprimer mes pods - rm -rf Pods
  • Réinstaller mes pods - pod install --repo-update

J'espère que cela aide quelqu'un parce que cela m'a troublé pendant un moment.

6
jason z

Voici la solution qui a fonctionné pour moi:

Ne fais pas ça
 don't do this
Au lieu de cela, faites glisser GoogleMobileAds.framework vers votre projet et ajoutez tous les autres cadres mentionnés ici et, tout en faisant glisser, déposez les éléments de copie de contrôle si nécessaire.

 enter image description here

4
Chaudhry Talha

J'ai résolu en réglant les "modules de définition" sur OUI dans les paramètres de construction et en réimportant le cadre. 

4
FranMowinckel

Le problème actuel est que, dans les paramètres de construction de votre application, vous manquez le paramètre:

Chemins de recherche du framework

Modifiez votre projet.pbxproj afin que BuildSettings inclue quelque chose comme:

FRAMEWORK_SEARCH_PATHS = "/Users/bram/src/GoogleMobileAdsSdkiOS-7.16.0/";

Ou utilisez l'interface utilisateur de Xcode pour modifier les paramètres de construction de la manière suivante:

 setting in Xcode UI

2
Bram

Je suis resté coincé avec ce problème pendant quelques heures, mais une solution élégante a finalement été trouvée .Ma méthode n’utilise pas de "liaison manuelle de fichiers", mais un usage pur de fichier podfile.

J'ai rencontré ce problème lorsque j'ai mis à jour mes pods ('pod install' ou 'pod update') après avoir ajouté une autre cible au projet.

Ma solution est:

Allez dans votre podfile et assurez-vous que vous avez défini le bloc "cible ..." pour chaque cible de votre projet (voilà! Semble ne pas être documenté, du moins je ne l'ai pas trouvé) . Par exemple vous avez 2 cibles: "theApp" et "theApp Lite". Dans ce cas, votre fichier pod doit ressembler à ceci:

target 'theApp' do
# ...your pods and options here
end

target 'theApp Lite' do
# ...your pods and options here
end

Ensuite, faites "pod install" ou "pod update" pour mettre à jour vos bibliothèques.

Ensuite, allez dans les paramètres généraux de chaque cible et assurez-vous de disposer du fichier "libPods ... a" (ou "framework libPods ..." approprié (dans le cas où vous utilisez l'option "use_frameworks!" Section "Cadres et bibliothèques liés". Supprimez les liens erronés/confus, le cas échéant. Ajouter manuellement s'il manque (doit apparaître sous "Espace de travail" groupe/répertoire lorsque vous appuyez sur "+").

Sous "Build Phases", vous devez observer "[CP]" - éléments préfixés pour chaque cible.

Après cela, je n'ai eu aucun problème de construction.

2
Roman86

J'ai supprimé le pod et réinstallé à nouveau

rm -Rf Pods; pod install

dans mon projet dir.

2
Jabson

Pour moi, le problème était que je n'avais pas mis à jour la "cible de déploiement" de mon application. Il était réglé sur <7.0, c'est pourquoi il se plaignait probablement. Une fois que j'ai mis à jour la cible à> 7.0, les erreurs ont disparu. (pour les futurs utilisateurs mettant à jour leurs applications quelques fois par an, comme moi)

1
Donovan

Je laisse un script qui génère des cadres injectés statiques

pod --version 1.3.1
Version 9.1 (9B55)

Podfile [Cible]

target 'generic' do
    #Google
    pod 'GoogleAds-IMA-iOS-SDK', '~> 3.6.1'
    pod 'Google-Mobile-Ads-SDK', '~> 7.25.0'

    #pod Module 'GoogleMobileAds' not found 
    pod '#LIB_ERROR#'
    sd
end

Podfile [Fuction]

def inject_frameworks(installer, targetName, listPaths)
    def print_info(text)
        puts "\e[33m[!] #{text}\e[0m"
    end

    installer.pods_project.targets.each do |target|
        if target.name == targetName
            print_info "Inject frameworks in #{target.name}"
            config = target.build_configurations.first
            if config
                xcconfig_path = config.base_configuration_reference.real_path
                build_settings = Hash[*File.read(xcconfig_path).lines.map{|x| x.split(/\s*=\s*/, 2)}.flatten]

                frameworks_paths = Array.new
                if build_settings['FRAMEWORK_SEARCH_PATHS']
                    frameworks_paths.concat(build_settings['FRAMEWORK_SEARCH_PATHS'].delete!("\n").split(/ /))
                end 

                listPaths.each do |frameworks_path|
                    print_info "[#{target.name}] Add search path frameworks #{File.dirname frameworks_path}"
                    frameworks_paths.Push(File.dirname frameworks_path)
                end

                build_settings['FRAMEWORK_SEARCH_PATHS'] = frameworks_paths.join(" ")
                File.open(xcconfig_path, "w") { |file| file << "" }
                build_settings.each do |key,value|
                  File.open(xcconfig_path, "a") {|file| file << "#{key} = #{value.strip}\n"}
                end

                listPaths.each do |frameworks_path|
                    print_info "[#{target.name}] Add frameworks #{File.basename frameworks_path}"
                    new_file_framework = config.project.frameworks_group.new_file(frameworks_path)
                    target.frameworks_build_phase.add_file_reference(new_file_framework, true)
                end
            end
        end
    end
end

Podfile [Run Fuction]

post_install do |installer|
    inject_frameworks(installer, "#LIB_ERROR#", [
        '$(PROJECT_DIR)/Google-Mobile-Ads-SDK/Frameworks/frameworks/GoogleMobileAds.framework',
        '$(PROJECT_DIR)/GoogleAds-IMA-iOS-SDK/GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.framework'
    ])
end
0
Scott Pilgrim

Cela se produit parfois en essayant de ne pas utiliser GoogleMobileAds, si c'est le cas (comme je l'ai vu ici): 4- Sélectionnez GoogleMobileAds puis le bouton (-) sur le bouton.

Cela a résolu mon problème lors de la suppression d'annonces d'un modèle d'application.

0

Si quelqu'un éprouve toujours le même problème, je viens de trouver une solution. J'ai passé des heures à essayer tout ce qui était recommandé jusqu'à présent et RIEN ne fonctionnait, je ne savais toujours pas ce que je faisais mal, mais voici un petit bidouillage qui a fonctionné pour moi: Quel que soit le framework que j'ai téléchargé depuis Google (j'ai essayé le manuel et les méthodes Cocoa Pods) ne fonctionneraient pas, mais quand je viens de télécharger leur petit projet testeur xCode (BannerExample.xcodeproj je crois), j'ai copié le framework fourni avec ce projet test, je l'ai collé dans mon fichier de projet ajouté le cadre et le lié. Après cela, j'ai pu importer le cadre parfaitement et adMob fonctionne très bien. Je ne peux pas pendant toute ma vie comprendre quelle serait la différence, mais cela a fonctionné. J'espère que cette solution aidera tout le monde à résoudre le même problème. Je crois avoir arraché l'un des cinq derniers cheveux sur ma tête. Bonne chance!

0
Pierce

Xcode version 7.2.1 (7C1002) Objectif C

J'ai eu ce problème et je devais continuer à ajouter les GoogleMobileAds à chaque fois au projet pour m'en débarrasser. Je ne suis pas sûr qu'il s'agisse d'un bogue . Sélectionnez d'abord le GoogleMobileAds.framework, puis décochez et cochez la case Adhésion cible, puis essayez de construire l'erreur disparaît. .__ Cela a fonctionné pour moi. J'espère que ça aide.

0
uplearnedu.com

J'ai le même problème. Voici ce que j'ai fait. J'espère que ça aide quelqu'un.

  1. Supprimez GoogleMobileAds.framework de votre projet (ou stockez-le dans un autre dossier).
  2. Allez à Build Phases, Link Binary with Libraries. Cliquez sur le signe + pour la section Link Binary with Libraries et cliquez sur Add Other.... Accédez à l'emplacement où vous avez enregistré GoogleMobileAds.framework > Versions > A > GoogleMobileAds et ouvrez-le.

Cela a parfaitement réglé le problème pour moi.

0
Mustapha Madani

Ne décompressez pas les fichiers lib sous Windows, il ne peut pas gérer les liens symboliques correctement.

0
Bluesky

Si cette erreur se produit toujours, vérifiez si le champ "Chemins de recherche de la structure" dans les paramètres de construction contient le chemin correct vers votre structure

0
Shapes Workshop

Je viens d'ajouter "use_frameworks!" dans le podfile, mettez à jour le pod et cela fonctionne. Ce problème est apparu lorsque j'ai mis à jour mon système d'exploitation vers El Captain (10.11.15) et XCode vers la version 8. Mon podfile maintenant:

    target 'My Target' do
       use_frameworks!
       pod 'MagicalRecord'
       pod 'AFNetworking'
       pod 'Firebase'
       pod 'Firebase/Core'
       pod 'Firebase/AdMob'
    end
0
Pavel Kataykin

J'ai le même problème. Voici ce que j'ai fait. Cela a fonctionné pour moi (j'espère que cela aidera quelqu'un).

  1. copiez GoogleMobileAds.framework quelque part et supprimez-le du module si vous en avez.
  2. Ajoutez cette structure à votre projet manuellement (sélectionnez "Copier les éléments si nécessaire"). Vérifiez les phases de construction pour vous assurer de l'avoir dans la section "Lien binaire ...".
  3. Effacer et reconstruire à nouveau => succès.
0
Robert TuanVu