Как я могу исправить Facebook PostProcessBuild PBXParser для Facebook SDK 6.x в Unity 4.6.1 и XCode 6.1.1
При сборке для 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. как это:
<?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 для Unity iOS Mach-O - неопределенные символы _iosLogin,
http://forum.unity3d.com/threads/mach-o-linker-error-with-facebook-sdk.239085/
Есть идеи, как это решить?
2 ответа
Вы можете заставить FB внести свои изменения в project.pbxproj
файл позже, когда файл возвращается в исходном формате УАТС:
Изменяя линию [PostProcessBuild(100)]
в [PostProcessBuild(99999999)]
в файле FacebookPostprocess.cs
,
У меня та же проблема. После того, как я установил другой плагин, который изменяет файл project.pbxproj, данные, поступающие в PBXParser, имеют формат xml1. Я нашел где-то, что легко изменить формат, подобный json, но трудно сохранить его в формате, понятном Xcode. Стандартный процесс - сохранить его в формате xml1. Xcode может понимать формат xml1, так что это не проблема. Итак, мой обходной путь заключается в следующем:
- Запустите сборку как обычно.
- После сбоя сборки закройте Xcode (Xcode запишет файл проекта в правильном формате json при закрытии).
- Скопируйте измененный файл project.pbxproj в другое место.
- Измените PBXParser для чтения данных из измененного файла, если в формате xml!
- Запустите сборку еще раз.
Это не очень чисто, но сработало для меня. Лучшим вариантом будет преобразование xml в json для PBXParser...