## Liste de contrôle
## Environnement
Décrivez votre environnement de développement ici, en donnant autant de détails que possible. Si vous en avez, assurez-vous d'inclure :
2019.3.12b
7.18.0, 7.17.2
Plateforme et version d'installation : [iOS]
version 10.0+
Construire pour iOS à l'aide de Unity 2019.3
Construction réussie
La compilation échoue car RegisterMonoModule.h n'est plus fourni dans Unity 2019.3 par conception: https://issuetracker.unity3d.com/issues/filenotfoundexception-when-building-a-project-with-facebook-sdk-for-ios
Étant donné que la version minimale prise en charge par Unity est déjà 5.4, vous pouvez simplement supprimer la partie FixUp liée à RegisterMonoModules.cpp et RegisterMonoModules.hi devinez et supprimer les lignes 21-27 de FBUnityInterface.h.
## Étapes pour reproduire
Quelles sont les étapes nécessaires pour reproduire ce problème ?
Avez-vous trouvé une solution?
Avez-vous trouvé une solution?
Le simple fait de supprimer le #include "RegisterMonoModules.h"
de Facebook/FacebookSDK/SDK/Editor/iOS/FBUnityInterface.h et d'inclure toujours le UnityTrampolineConfigure.h
fonctionné pour nous.
Le RegisterModules.h
c'était un fichier avec seulement une méthode : void RegisterMonoModules();
Dans l'unité 2019.3, ils l'ont judicieusement supprimé.
Mais Facebook SDK demande ce fichier juste pour ajouter un HAS_UNITY_VERSION_DEF si unity est plus récent que 4.3 xD
https://github.com/facebook/facebook-sdk-for-unity/blob/f76fd1cec1f08a36d90b21c8ab74cba1168f0d84/Facebook.Unity.Editor/iOS/FixupFiles.cs
J'ai donc également modifié le FBUnityInterface.h pour toujours inclure le UnityTrampolineConfigure.h (pour conserver le même comportement que nous avions).
J'ai aussi ce problème!
J'ai supprimé #include "RegisterMonoModules.h"
Mais il échoue toujours avec /Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h:24:9: Module 'FBSDKCoreKit' introuvable
Jusqu'à ce que Facebook publie une mise à jour, la meilleure solution est ci-dessous parmi celles que j'ai essayées :
Ce fichier est inutile maintenant mais FB SDK en dépend toujours.
Ce fichier est également référencé à partir du script de post-traitement qui interrompt le post-processus.
Quelqu'un a-t-il déjà trouvé une solution de contournement pour cela?
J'ai commenté la ligne "#include RegisterModules.h", mais lorsque j'ai reconstruit le jeu, il était toujours indiqué que le RegisterModules.h était introuvable.
@ h3902340 C'est parce que l'une des dll a également une référence à RegisterModules.h.
Salut, je viens de mettre à niveau mon SDK Facebook pour Unity vers 7.18.1, il a supprimé la ligne "#include RegisterModules.h", mais cette ligne de code fait toujours référence à RegisterMonoModules.h, donc la console se plaint toujours de ne pas trouver le Fichier RegisterMonoModules.h. Étant donné que cette ligne de code se trouve dans un fichier dll, il n'y a pas de solution de contournement facile à ce problème, veuillez le résoudre dès que possible.
Les builds locaux ont été générés malgré l'erreur, mais les builds en mode batch ont échoué en raison du fichier manquant.
En plus de supprimer le #include "RegisterMonoModules.h" de Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h et toujours en incluant le UnityTrampolineConfigure.h.
Nous utilisons cette solution de contournement pour avoir un faux fichier :
#if UNITY_2019_3_OR_NEWER
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
namespace BuildTools.Editor
{
public static class TemporaryFacebookFix20193
{
[PostProcessBuild(99)]
static void BeforeFacebookOnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
{
if(target != BuildTarget.iOS)
{
return;
}
var fullPath = Path.Combine(pathToBuiltProject, Path.Combine("Libraries", "RegisterMonoModules.h"));
if(!File.Exists(fullPath))
{
File.Create(fullPath).Close();
}
}
}
}
#endif
Répétition @h3902340
Il semble que 177ff89235716c0f9c4225cf9c11355115da2282 ait supprimé le #include "RegisterMonoModules.h"
. Cependant le code qui dépend de RegisterMonoModules.h est toujours dans le master :
Cela signifie également que HAS_UNITY_VERSION_DEF
ne sera jamais défini dans FBUnityInterface.h (cette définition provient du RegisterMonoModules.h modifié), donc le préprocesseur supprime ceci :
#if HAS_UNITY_VERSION_DEF
#include "UnityTrampolineConfigure.h"
#endif
Ce fichier serait inclus dans les versions précédentes du SDK Facebook pour Unity lors de la création pour Unity 4.3+. Je ne sais pas s'il s'agissait d'un effet secondaire prévu de 177ff89235716c0f9c4225cf9c11355115da2282 (le commit que j'ai mentionné ci-dessus).
_Mise à jour concernant HAS_UNITY_VERSION_DEF :_
UnityTrampolineConfigure.h est essentiellement un fichier généré automatiquement par Unity contenant :
#define UNITY_VERSION 201930
// known unity versions
#define UNITY_4_2_0 420
#define UNITY_4_2_1 421
#define UNITY_4_2_2 422
// ---8<---
#define UNITY_2019_1_0 201910
#define UNITY_2019_2_0 201920
#define UNITY_2019_3_0 201930
Il semble donc que #include "UnityTrampolineConfigure.h" et le #ifdef qui l'entoure puisse être supprimé sans problème, puisque UNITY_VERSION n'est utilisé nulle part dans le SDK...
Commentaire le plus utile
Les builds locaux ont été générés malgré l'erreur, mais les builds en mode batch ont échoué en raison du fichier manquant.
En plus de supprimer le #include "RegisterMonoModules.h" de Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h et toujours en incluant le UnityTrampolineConfigure.h.
Nous utilisons cette solution de contournement pour avoir un faux fichier :