ここで開発環境を説明し、できるだけ多くの詳細を説明してください。 それらを持っている場合は、必ず次のものを含めてください。
2019.3.6f1
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 プロジェクトをビルドしてみてください。
エラーをチェック
私はまったく同じ問題を抱えています。
ユニティ: 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 はまだ対応していませんでした。
最も参考になるコメント
私は同じ問題を抱えていました。 Unity Play Services Resolver で cocoapod 世代を何に設定しても、.xcworkspace は作成されませんでした。
修正方法:
プロジェクトのルート フォルダーでターミナルを開き、実行します
pod install
これにより、.xcworkspace ファイルが作成されました。 それを開いて、通常どおり署名情報などを追加してからビルドすると、最終的に機能しました。