Facebook-sdk-for-unity: Unity 2019.3 - RegisterMonoModule.h مفقود

تم إنشاؤها على ٢٦ نوفمبر ٢٠١٩  ·  11تعليقات  ·  مصدر: facebook/facebook-sdk-for-unity

## قائمة تدقيق

## بيئة
صِف بيئة التطوير الخاصة بك هنا ، مع إعطاء أكبر قدر ممكن من التفاصيل. إذا كان لديك ، فتأكد من تضمين:

  • إصدار محرر الوحدة: 2019.3.12b
  • إصدار Unity SDK: 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.

## خطوات إعادة الإنتاج
ما هي الخطوات اللازمة لإعادة إظهار هذه المشكلة؟

  1. أنشئ مشروعًا فارغًا في 2019.3+
  2. أضف FB SDK 7.18.0 أو 7.17.2
  3. حاول البناء لـ IOS
bug

التعليق الأكثر فائدة

تم إنشاء البُنى المحلية بالرغم من الخطأ ، لكن عمليات الإنشاء في وضع الدُفعات فشلت بسبب الملف المفقود.

بصرف النظر عن إزالة #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

ال 11 كومينتر

هل وجدت حل؟

هل وجدت حل؟

مجرد إزالة #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 تحديثًا ، يكون الحل الأفضل أدناه من بين الحلول التي جربتها:

  • قم بإنشاء ملف RegisterMonoModules.h فارغ
  • انسخ هذا داخل "Unity /..../ Trampoline / .." بجوار FBUnityInterface.h
  • بعد بناء مشروعك بنجاح ، انسخه إلى مكتبة في XCode أيضًا

هذا الملف عديم الفائدة الآن ولكن 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 ...

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

laijingfeng picture laijingfeng  ·  6تعليقات

MorganMoon picture MorganMoon  ·  7تعليقات

bblpny picture bblpny  ·  4تعليقات

Duke74 picture Duke74  ·  4تعليقات

manofspirit picture manofspirit  ·  6تعليقات