Facebook-sdk-for-unity: Unity 2019.3 - Register yang HilangMonoModule.h

Dibuat pada 26 Nov 2019  ·  11Komentar  ·  Sumber: facebook/facebook-sdk-for-unity

## Daftar Periksa

## Lingkungan Hidup
Jelaskan lingkungan dev Anda di sini, berikan detail sebanyak mungkin. Jika Anda memilikinya, pastikan untuk menyertakan:

  • Versi Editor Unity: 2019.3.12b
  • Versi SDK Unity: 7.18.0, 7.17.2
  • Platform & Versi Instalasi: [iOS] versi 10.0+

    Gol

    Bangun untuk iOS menggunakan Unity 2019.3

    Hasil yang diharapkan

    Berhasil membangun

    Hasil nyata

Kompilasi gagal karena RegisterMonoModule.h tidak lagi disediakan di Unity 2019.3 berdasarkan desain: https://issuetracker.unity3d.com/issues/filenotfoundexception-when-building-a-project-with-facebook-sdk-for-ios

Karena versi minimum yang didukung Unity sudah 5.4, Anda cukup menghapus bagian FixUp yang terkait dengan RegisterMonoModules.cpp dan RegisterMonoModules.hi tebak dan hapus baris 21-27 dari FBUnityInterface.h.

## Langkah-langkah untuk Mereproduksi
Apa langkah-langkah yang diperlukan untuk mereproduksi masalah ini?

  1. Buat proyek kosong di 2019.3+
  2. Tambahkan FB SDK 7.18.0 atau 7.17.2
  3. Coba buat untuk iOS
bug

Komentar yang paling membantu

Build lokal dibuat meskipun ada kesalahan, tetapi build dalam mode batch gagal karena file yang hilang.

Selain menghapus #include "RegisterMonoModules.h" dari Facebook/FacebookSDK/SDK/Editor/iOS/FBUnityInterface.h dan selalu menyertakan UnityTrampolineConfigure.h.

Kami menggunakan solusi ini untuk memiliki file palsu:

#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

Semua 11 komentar

Apakah Anda menemukan solusinya?

Apakah Anda menemukan solusinya?

Hanya menghapus #include "RegisterMonoModules.h" dari Facebook/FacebookSDK/SDK/Editor/iOS/FBUnityInterface.h dan selalu menyertakan UnityTrampolineConfigure.h bekerja untuk kami.


RegisterModules.h itu adalah file dengan hanya metode: void RegisterMonoModules();
Dalam unity 2019.3 telah dengan bijak menghapusnya.

Tetapi Facebook SDK meminta file ini hanya untuk menambahkan HAS_UNITY_VERSION_DEF jika unity lebih baru dari 4.3 xD
https://github.com/facebook/facebook-sdk-for-unity/blob/f76fd1cec1f08a36d90b21c8ab74cba1168f0d84/Facebook.Unity.Editor/iOS/FixupFiles.cs

Jadi, saya juga telah mengubah FBUnityInterface.h untuk selalu menyertakan UnityTrampolineConfigure.h (untuk menjaga perilaku yang sama seperti yang kita miliki).

Saya juga punya masalah ini!
Saya menghapus #include "RegisterMonoModules.h"

Tetapi masih gagal dengan /Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h:24:9: Modul 'FBSDKCoreKit' tidak ditemukan

Sampai Facebook mengeluarkan pembaruan, solusi terbaik ada di bawah di antara yang saya coba:

  • Buat file RegisterMonoModules.h kosong
  • Salin ini di dalam 'Unity /..../ Trampoline / ..' di sebelah FBUnityInterface.h
  • Setelah Anda berhasil membangun proyek Anda, salin ke perpustakaan di XCode juga

File itu tidak berguna sekarang tetapi FB SDK masih bergantung padanya.

File ini juga direferensikan dari skrip proses posting yang menghentikan proses posting.

Apakah ada yang datang dengan solusi untuk ini belum?

Saya telah mengomentari baris "#include RegisterModules.h", tetapi ketika saya membuat ulang game, masih dikatakan bahwa RegisterModules.h tidak dapat ditemukan.

@h3902340 Ini karena salah satu dll memiliki referensi ke RegisterModules.h juga.

Hai, Saya baru saja memutakhirkan SDK Facebook saya untuk Unity ke 7.18.1, itu menghapus baris "#include RegisterModules.h", tetapi baris kode ini masih merujuk RegisterMonoModules.h, jadi konsol masih mengeluh karena tidak menemukan RegisterMonoModules.h file. Karena baris kode ini ada dalam file dll, tidak ada solusi mudah untuk masalah ini, harap perbaiki sesegera mungkin.

Build lokal dibuat meskipun ada kesalahan, tetapi build dalam mode batch gagal karena file yang hilang.

Selain menghapus #include "RegisterMonoModules.h" dari Facebook/FacebookSDK/SDK/Editor/iOS/FBUnityInterface.h dan selalu menyertakan UnityTrampolineConfigure.h.

Kami menggunakan solusi ini untuk memiliki file palsu:

#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

Mengulangi @h3902340

Tampaknya 177ff89235716c0f9c4225cf9c11355115da2282 menghapus #include "RegisterMonoModules.h" . Namun kode yang bergantung pada RegisterMonoModules.h masih dalam master:

Ini juga berarti HAS_UNITY_VERSION_DEF tidak akan pernah didefinisikan di FBUnityInterface.h (definisi itu berasal dari RegisterMonoModules.h yang dimodifikasi) sehingga praprosesor menghapus ini termasuk:

#if HAS_UNITY_VERSION_DEF
#include "UnityTrampolineConfigure.h"
#endif

File ini akan disertakan dalam versi sebelumnya dari SDK Facebook untuk Unity saat membuat untuk Unity 4.3+. Saya tidak yakin apakah ini adalah efek samping yang dimaksudkan dari 177ff89235716c0f9c4225cf9c11355115da2282 (komit yang saya sebutkan di atas).

_Perbarui ulang HAS_UNITY_VERSION_DEF:_
UnityTrampolineConfigure.h pada dasarnya adalah file yang dibuat secara otomatis oleh Unity yang berisi:

#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

Jadi sepertinya #include "UnityTrampolineConfigure.h" dan #ifdef di sekitarnya dapat dihapus tanpa masalah, karena UNITY_VERSION tidak digunakan di mana pun di SDK...

Apakah halaman ini membantu?
0 / 5 - 0 peringkat