## قائمة تدقيق
## بيئة
صِف بيئة التطوير الخاصة بك هنا ، مع إعطاء أكبر قدر ممكن من التفاصيل. إذا كان لديك ، فتأكد من تضمين:
2019.3.12b
7.18.0, 7.17.2
منصة التثبيت والإصدار: [iOS]
version 10.0+
أنشئ لنظام iOS باستخدام Unity 2019.3
بناء ناجح
فشل التجميع لأن RegisterMonoModule.h لم يعد متوفرًا في Unity 2019.3 حسب التصميم: https://issuetracker.unity3d.com/issues/filenotfoundexception-when-building-a-project-with-facebook-sdk-for-ios
نظرًا لأن الحد الأدنى من الإصدار المدعوم من Unity هو بالفعل 5.4 ، يمكنك ببساطة إزالة جزء FixUp المرتبط بـ RegisterMonoModules.cpp و RegisterMonoModules.hi تخمين وإزالة الأسطر 21-27 من FBUnityInterface.h.
## خطوات إعادة الإنتاج
ما هي الخطوات اللازمة لإعادة إظهار هذه المشكلة؟
هل وجدت حل؟
هل وجدت حل؟
مجرد إزالة #include "RegisterMonoModules.h"
من Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h ودائمًا بما في ذلك UnityTrampolineConfigure.h
عمل لنا.
RegisterModules.h
كان ملفًا بطريقة فقط: void RegisterMonoModules();
في الوحدة 2019.3 أزالوه بحكمة.
لكن Facebook SDK يطلب هذا الملف فقط لإضافة HAS_UNITY_VERSION_DEF إذا كانت الوحدة أحدث من 4.3 xD
https://github.com/facebook/facebook-sdk-for-unity/blob/f76fd1cec1f08a36d90b21c8ab74cba1168f0d84/Facebook.Unity.Editor/iOS/FixupFiles.cs
لذلك ، قمت أيضًا بتغيير FBUnityInterface.h لتشمل دائمًا UnityTrampolineConfigure.h (للحفاظ على نفس السلوك الذي كان لدينا).
أنا أيضا لدي هذه المشكلة!
لقد أزلت #include "RegisterMonoModules.h"
لكنها ما زالت تفشل مع /Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h:24:9: الوحدة النمطية 'FBSDKCoreKit' غير موجودة
حتى يصدر Facebook تحديثًا ، يكون الحل الأفضل أدناه من بين الحلول التي جربتها:
هذا الملف عديم الفائدة الآن ولكن FB SDK لا يزال يعتمد عليه.
تتم الإشارة إلى هذا الملف أيضًا من البرنامج النصي لعملية النشر والذي يكسر عملية النشر.
هل توصل أي شخص إلى حل بديل لهذا حتى الآن؟
لقد علقت على سطر "#include RegisterModules.h" ، ولكن عندما أعدت بناء اللعبة ، ما زلت أقول أنه تعذر العثور على RegisterModules.h.
@ h3902340 هذا لأن أحد
مرحبًا ، لقد قمت للتو بترقية Facebook SDK الخاص بي لـ Unity إلى 7.18.1 ، فقد أزال سطر "#include RegisterModules.h" ، ولكن لا يزال هذا السطر من التعليمات البرمجية يشير إلى RegisterMonoModules.h ، لذلك لا تزال وحدة التحكم تشكو من عدم العثور على ملف RegisterMonoModules.h. نظرًا لوجود سطر التعليمات البرمجية هذا في ملف dll ، فلا يوجد حل بديل سهل لهذه المشكلة ، يرجى إصلاحه في أسرع وقت ممكن.
تم إنشاء البُنى المحلية بالرغم من الخطأ ، لكن عمليات الإنشاء في وضع الدُفعات فشلت بسبب الملف المفقود.
بصرف النظر عن إزالة #include "RegisterMonoModules.h" من Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h وتضمن دائمًا UnityTrampolineConfigure.h.
نحن نستخدم هذا الحل البديل للحصول على ملف مزيف:
#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
التكرار @ h3902340
يبدو أن 177ff89235716c0f9c4225cf9c11355115da2282 أزال #include "RegisterMonoModules.h"
. ومع ذلك ، فإن الكود الذي يعتمد على RegisterMonoModules.h لا يزال في الأصل:
هذا يعني أيضًا أن HAS_UNITY_VERSION_DEF
لن يتم تعريفه أبدًا في FBUnityInterface.h (جاء هذا التعريف من RegisterMonoModules.h المعدل) لذا فإن شرائح المعالج المسبق تتضمن:
#if HAS_UNITY_VERSION_DEF
#include "UnityTrampolineConfigure.h"
#endif
سيتم تضمين هذا الملف في الإصدارات السابقة من Facebook SDK for Unity عند إنشاء Unity 4.3+. لست متأكدًا تمامًا مما إذا كان هذا هو أحد الآثار الجانبية المقصودة لـ 177ff89235716c0f9c4225cf9c11355115da2282 (الالتزام الذي ذكرته أعلاه).
_Update re HAS_UNITY_VERSION_DEF: _
UnityTrampolineConfigure.h هو في الأساس ملف تم إنشاؤه تلقائيًا بواسطة Unity يحتوي على:
#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
لذلك يبدو أنه يمكن إزالة #include "UnityTrampolineConfigure.h" و #ifdef المحيط به بدون مشاكل ، نظرًا لأنه لا يتم استخدام UNITY_VERSION في أي مكان في SDK ...
التعليق الأكثر فائدة
تم إنشاء البُنى المحلية بالرغم من الخطأ ، لكن عمليات الإنشاء في وضع الدُفعات فشلت بسبب الملف المفقود.
بصرف النظر عن إزالة #include "RegisterMonoModules.h" من Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h وتضمن دائمًا UnityTrampolineConfigure.h.
نحن نستخدم هذا الحل البديل للحصول على ملف مزيف: