Facebook-sdk-for-unity: Unity 2019.3-lFBSDKCoreKitのライブラリが見つかりません

作成日 2020年03月24日  ·  16コメント  ·  ソース: facebook/facebook-sdk-for-unity

チェックリスト

環境

ここで開発環境を説明し、できるだけ多くの詳細を説明してください。 それらを持っている場合は、必ず次のものを含めてください。

  • Unity エディターのバージョン: 2019.3.6f1
  • Unity SDK バージョン: 7.19.1
  • インストール プラットフォームとバージョン: iOSバージョン10+ XCode 11.3.1'

目標

Unity 2019.3 を使用して iOS 向けにビルドする

期待される結果

成功したビルド

実績

ライブラリ -lFBSDKCoreKit が見つからないため、コンパイルは失敗します。
その他の問題はクローズされていますが、Facebook SDK 7.19 以降では修正されていません。

https://github.com/facebook/facebook-sdk-for-unity/issues/352
https://github.com/facebook/facebook-sdk-for-unity/issues/350

再現する手順

Unity で新しいプロジェクトを作成する
FB SDK パッケージ (7.19.1) のインストール
Unity プロジェクトの構築 (2019.3.6f1)
Xcode (バージョン 11.3.1) で Xcode プロジェクトをビルドしてみてください。
エラーをチェック

bug

最も参考になるコメント

私は同じ問題を抱えていました。 Unity Play Services Resolver で cocoapod 世代を何に設定しても、.xcworkspace は作成されませんでした。

修正方法:
プロジェクトのルート フォルダーでターミナルを開き、実行します
pod install
これにより、.xcworkspace ファイルが作成されました。 それを開いて、通常どおり署名情報などを追加してからビルドすると、最終的に機能しました。

全てのコメント16件

私はまったく同じ問題を抱えています。
ユニティ: 2019.3.6f1
FB SDK: (7.19.1)
Xコード: 11.3.1

まったく同じ問題。
ユニティ: 2018.4.5f1 (LTS)
FB SDK:7.19.1
Xコード: 11.3.1

私は問題が何であるかを理解したと思います。 私はプロジェクト ファイルから Unity プロジェクトを構築していましたが、cocoapods の場合は、Unity プロジェクトと cocoapods プロジェクトが含まれているため、ワークスペースファイルから xcode でプロジェクトを開く必要があります。 Unity を使ってワークスペース ファイルから何かをビルドしたことはありません。 私の悪い。

@flamepygmy
それは私にとっても問題を解決しました。 :-)
私は XCode にまったく慣れていませんが、ワークスペースは Visual Studio ソリューションに匹敵すると思います。 今まで、私はいつも .xcodeproj ファイルをダブルクリックしていました。

私は同じ問題を抱えていました。 Unity Play Services Resolver で cocoapod 世代を何に設定しても、.xcworkspace は作成されませんでした。

修正方法:
プロジェクトのルート フォルダーでターミナルを開き、実行します
pod install
これにより、.xcworkspace ファイルが作成されました。 それを開いて、通常どおり署名情報などを追加してからビルドすると、最終的に機能しました。

現在、通常のゲームを2019.3にも移行していますが、同じ問題に直面しています。

これが問題であると思われる場所FBSDKCOCOAPODS=1主ターゲットのプリプロセッサマクロとして含まれている( Unity-iPhone )の代わりにUnityFrameworkによって標的一つである、 IOSResolverと含みますXCode ワークスペースの構築時にエクスポートされたすべてのソース コード。

このマクロがないと、 FBSDKCoreKitImport.hは間違ったインクルード/インポートを指すことになります。

#if defined BUCK
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#elif defined __cplusplus
#import <FBSDKCoreKit.h>
#elif defined FBSDKCOCOAPODS
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#else
<strong i="13">@import</strong> FBSDKCoreKit;
#endif

Facebook SDKのソースコードを調べてみると、問題は
```c#
public static void AddBuildFlag(文字列パス)
{{
string projPath = Path.Combine(パス、Path.Combine("Unity-iPhone.xcodeproj"、"project.pbxproj"));
PBXProject proj = new PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
文字列 targetGUID = proj.TargetGuidByName("Unity-iPhone");
proj.AddBuildProperty(targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", " $(継承) FBSDKCOCOAPODS=1");
proj.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-ObjC");
proj.AddFrameworkToProject(targetGUID, "Accelerate.framework", true);
File.WriteAllText(projPath, proj.WriteToString());
}

It's still looking for the `Unity-iPhone` target when it should be looking for `UnityFramework` instead for Unity 2019.3.

I can submit a pull request with a quick workaround for the issue like the following, just let me know if I'm in the right direction. Also, I don't have much knowledge on this repo source code, so there could be better solutions than this one.

**PBXProject.cs:**
```c#
        /// <summary>
        /// Returns the default main target name in Unity project.
        /// The returned target name can then be used to retrieve the GUID of the target via TargetGuidByName
        /// function. This function can only be used in Unity-generated projects.
        /// </summary>
        /// <returns>The default main target name.</returns>
        public static string GetUnityTargetName()
        {
#if UNITY_2019_3_OR_NEWER
            return "UnityFramework";
#else
            return "Unity-iPhone";
#endif
        }

FixupFiles.cs:
c# public static void AddBuildFlag(string path) { string projPath = Path.Combine(path, Path.Combine("Unity-iPhone.xcodeproj", "project.pbxproj")); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string targetGUID = proj.TargetGuidByName(GetUnityTargetName()); proj.AddBuildProperty(targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", " $(inherited) FBSDKCOCOAPODS=1"); proj.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-ObjC"); proj.AddFrameworkToProject(targetGUID, "Accelerate.framework", true); File.WriteAllText(projPath, proj.WriteToString()); }

2019.3に隣接する問題と格闘していて、ビルドされますが実行されません。 ご指導よろしくお願いします。 OPと非常によく似た問題なので、別の問題が必要かどうかはわかりません。

@felippeduran修正を試み、ソースからSDK DLLをビルドしましたが、以前と同じエラーが発生しました。

2020-04-15 03:25:54.105800+0300 offroad3[35344:6034574] Error loading /var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Library not loaded: @rpath/FBSDKCoreKit.framework/FBSDKCoreKit Referenced from: /private/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework Reason: image not found 2020-04-15 03:25:54.268034+0300 offroad3[35344:6034574] Error loading /var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Library not loaded: @rpath/FBSDKCoreKit.framework/FBSDKCoreKit Referenced from: /private/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework Reason: image not found

編集:

これは、Facebook Unity SDKではなく、Facebook AudienceNetworkを統合する広告メディエーターの問題であることが判明しました。 私と同様の出力がある場合、これを引き起こしたのはAppodealメディエーションプラグインでした。 それ以外の場合は、このコメントを無視してください。

編集 2:

今後のグーグルの参考のために、この特定の問題を見つけることができなかったので、私の問題の解決策は、Unity-iPhoneターゲットのビルドフェーズの[フレームワークの埋め込み]セクションにフレームワークを直接追加することでした。

@aVolnov 、私の提案した修正はうまくいきましたか?

@felippeduran私の問題はまったく別の獣であることが判明したため、実際には

@flamepygmyあなたは私の命を救ってくれました。 これで多くの時間を失いました:(

そう、Unity iOS パイプラインは本当にエラーが発生しやすい...

@flo-wolf の提案にコメントすると、2019.3.9f1 でこの問題も修正されました。

ただし、私が行った方法は、cocoapods を完全にアンインストールして再インストールし、新規インストールにすることでした。 また、その過程で Unity を閉じて、Play Services Resolver を介してクリーンにインストールされたことを確認しました。

古いプロジェクトで古い cocoapods インストールを使用していました。 昨年何を変更したのかわからないので、新鮮なインストールが最善のアプローチでした-ターミナル経由でローカルのcocoapodsインストールをアップグレードするだけでも機能する可能性がありますが、私は知恵を絞っていました;)。

私は問題が何であるかを理解したと思います。 私はプロジェクト ファイルから Unity プロジェクトを構築していましたが、cocoapods の場合は、Unity プロジェクトと cocoapods プロジェクトが含まれているため、ワークスペース ファイルから xcode でプロジェクトを開く必要があります。 Unity を使ってワークスペース ファイルから何かをビルドしたことはありません。 私の悪い。 @flamepygmy

これは私にとってはうまくいきました。 ありがとうございました!

Unity-iPhone.xcworkspace代わりにUnity-iPhone.xcodeproj Unity-iPhone.xcworkspace開いてビルドします

Unity 2019.3 で作業ビルドをまだ生成できませんでした。
これらの修正はすでに「プルリクエスト」によって送信されており、リリースの見込みはありますか? Unity 2019.3 は 1 月 28 日にリリースされ、約 6 か月間、Facebook SDK はまだ対応していませんでした。

このページは役に立ちましたか?
0 / 5 - 0 評価