2

在为 iOS 构建时,Facebook 的 PostProcessBuild 方法 OnPostProcessBuild 会尝试解析一些数据来做一些事情,比如将 Facebook 库添加到最终的 XCode 项目中。

解析器接收到错误的文件格式。在其 Decode() 方法中,它需要以以下开头的数据:

public const string PBX_HEADER_TOKEN = "// !$*UTF8*$!\n";

像这样:

// !$*UTF8*$!
{
    archiveVersion = 1;
    classes = {
    };
    objectVersion = 46;
    objects = {

/ Begin PBXBuildFile section /
        011C65182C1C4E78903D645B / libxml2.dylib / = {isa = PBXBuildFile; fileRef = 318C8AB7C5D04BBFA6BA701D / libxml2.dylib /; };

但相反,它会接收一个包含 project.pbxproj 内容的字符串,格式正确。像这样:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>archiveVersion</key>
    <string>1</string>
    <key>classes</key>
    <dict/>
    <key>objectVersion</key>
    <string>46</string>
    <key>objects</key>
    <dict>

有其他人遇到这种情况吗?我发现这些问题是相关的,但没有一个能回答真正的问题。

FacebookSDK for Unity iOS Mach-O 链接器错误 - 未定义符号 _iosLogin,

http://forum.unity3d.com/threads/mach-o-linker-error-with-facebook-sdk.239085/

关于如何解决它的任何想法?

4

2 回答 2

1

project.pbxproj当文件恢复为原始 PBX 格式时,您可以强制 FB 稍后更改文件:

通过将行更改[PostProcessBuild(100)][PostProcessBuild(99999999)]in file FacebookPostprocess.cs

于 2015-04-30T07:04:35.350 回答
0

我也有同样的问题。在我安装了另一个修改 project.pbxproj 文件的插件之后,来自 PBXParser 的数据是 xml1 格式。我在某处发现很容易修改类似 json 的格式,但很难将其保存为 Xcode 可以理解的格式。标准流程是将其保存为 xml1 格式。Xcode 可以理解 xml1 格式,所以这不是问题。所以我的解决方法如下:

  1. 像往常一样运行构建。
  2. 构建失败后关闭 Xcode(Xcode 将在关闭时以正确的 json 格式写入项目文件)。
  3. 将修改后的 project.pbxproj 文件复制到另一个位置。
  4. 更改 PBXParser 以从修改后的文件中读取数据(如果是 xml 格式)!
  5. 再次运行构建。

这不是很干净,但对我有用。更好的选择是将 xml 转换为 json 用于 PBXParser ...

于 2015-02-08T01:07:23.977 回答