1
votes

La compilation de Xcode avec le SDK Google UMP échoue avec `` Framework not found ''

Nous créons des intergiciels en utilisant Cordova et AdMob pour diffuser des publicités. Cordova génère un projet Xcode pour nous. Cependant, les projets Xcode qui en résultent ne parviennent plus à se créer avec l'erreur ld: framework not found UserMessagingPlatform.xcframework .

Cela semble être dû à la mise à jour du SDK Google UMP vers la version 1.3.0, qui indique «Mise à jour du SDK d'un .framework vers un .xcframework». J'ai contacté l'assistance AdMob, et ils affirment que la conception fonctionne pour eux et n'ont fourni aucune aide utile.

Je n'ai aucune idée de la raison pour laquelle nos builds échouent maintenant et je ne sais pas quoi faire. Voici un exemple de projet Xcode: https://www.dropbox.com/s/y1ly2c3yi45rop6/TestBuild.ios.project.zip?dl=0

Quelqu'un peut-il identifier ce qui n'a pas fonctionné avec ce projet Xcode, ce qui l'a empêché de se construire et identifier une solution de contournement?


1 commentaires

3 Réponses :


0
votes

Utilisez-vous des Cocoapods pour votre projet XCode?

Cette réponse stackoverflow suggère de mettre à jour les cocoapodes

Essayez de mettre à jour les cocoapodes:

sudo gem install cocoapods

Le journal des modifications de Cocoapods contient des correctifs pour XCFrameworks


0 commentaires

0
votes

Le problème

Le problème semble être qu'un framework / dépendance n'est pas ajouté au projet Xcode , il n'a donc pas le code nécessaire pour compiler l'application. AdMob s'appuie sur cet élément UserMessagingPlatform pour fonctionner, et sans le SDK Mobile Ads présent dans votre base de code, UserMessagingPlatform est manquant et votre application demande essentiellement du code qui n'y figure pas. Pour résoudre ce problème, vous devez dire à cocoapods (un gestionnaire de dépendances, pensez à npm mais pour Swift / Objective-C) de localiser et d'ajouter le code manquant à votre projet.

Tout d'abord, installez des cocoapodes si vous ne l'avez pas déjà fait. J'ai utilisé Homebrew pour ce faire, car cela semble être la seule méthode qui fonctionne sans mal de tête. Beaucoup de gens ont déjà Homebrew, mais si vous ne le faites pas, installez-le d'abord, puis exécutez: brew install cocoapods

Ensuite, allez dans le répertoire de votre projet à l'aide du Terminal. Une fois que vous êtes dans le répertoire, exécutez: pod install --repo-update

Rouvrez votre projet dans Xcode et il devrait se compiler avec succès maintenant.

Résolution étape par étape:

Ignorez toutes les étapes qui ne sont pas nécessaires pour votre environnement.

  1. Installez Homebrew : /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  2. Installer des cocoapodes : brew install cocoapods
  3. Ouvrez un terminal, accédez au répertoire de votre projet: cd /path/to/your/project
  4. Mettre à jour les dépendances: pod install --repo-update

Avertissement: je ne suis pas un développeur Swift ou Objective-C, et mon expérience avec Apple / Xcode est limitée. Je ne connais pas non plus les "cocoapodes" et AdMob. Je viens de télécharger l'exemple de code et de résoudre le problème jusqu'à ce qu'il soit compilé avec succès.


1 commentaires

Notez également que vous n'avez pas nécessairement besoin de cocoapodes pour installer le code manquant, c'est juste le moyen le plus simple. Il y a plus d'informations sur la façon d'installer manuellement le framework dans la documentation de Google . J'ai travaillé avec Cordova (via ngx-rocket) dans le passé et une fois que vous avez installé le SDK manquant, je m'attendrais à ce que vous n'ayez pas à le refaire tant que vous ne supprimez pas le projet cordova et l'ajoutez à nouveau (ce qui est parfois nécessaire malheureusement) mais si vous le faites, répétez simplement les étapes. J'aime noter ce truc dans le README



0
votes

.xcframework fichiers .xcframework ne peuvent être utilisés que sur CocoaPods 1.10.0 ou plus récent, dans votre exemple d'application, vous utilisiez 1.8.4.

Mettez à jour CocoaPods à la dernière version et exécutez à nouveau l' pod install .


0 commentaires