Как отладить Firebase на iOS AdHoc build
Единственный способ отладки Firebase - пройти -FIRAnalyticsDebugEnabled
на аргументы, переданные на запуск.
Он работает в режиме отладки при подключенном устройстве iOS, но я хотел бы развернуть сборку AdHoc, чтобы QA мог протестировать ее без Xcode.
Но кажется, что аргументы не передаются при запуске, когда Xcode архивирует сборку.
Любое решение? Благодарю.
2 ответа
Я нашел решение для взлома для этого, попробуйте в вашем приложении:didFinishLaunchingWithOptions: или переопределите initDelegate:
Objective-C:
NSMutableArray *newArguments = [NSMutableArray arrayWithArray:[[NSProcessInfo processInfo] arguments]];
[newArguments addObject:@"-FIRDebugEnabled"];
[[NSProcessInfo processInfo] setValue:[newArguments copy] forKey:@"arguments"];
Swift:
var newArguments = ProcessInfo.processInfo.arguments
newArguments.append("-FIRDebugEnabled")
ProcessInfo.processInfo.setValue(newArguments, forKey: "arguments")
Просто некоторые дополнения к самому интересному ответу: я бы сделал что-то подобное
#if DEBUG
var newArguments = ProcessInfo.processInfo.arguments
newArguments.append("-FIRDebugEnabled")
ProcessInfo.processInfo.setValue(newArguments, forKey: "arguments")
#endif
сохранить его для отладки. Это требует, что вы настроили -DDEBUG
в "Другие быстрые флаги" в настройках сборки. (конечно, вам нужно установить это для значения Debug.
И затем не забудьте поместить фрагмент кода ДО того, как вы инициализируете Firebase:-)
В дополнение к предложению выше:
- Добавьте файлы xcconfig для каждого режима сборки (например: Debug, Adhoc и Release): https://www.appcoda.com/xcconfig-guide
- Добавьте во все файлы конфигурации:
FIREBASE_DEBUG_ENABLED = YES
или жеNO
(То есть:YES
везде кромеRelease
) - Добавьте в ваш файл Info.plist запись с ключом:
FirebaseDebugEnabled
и строковое значение:$(FIREBASE_DEBUG_ENABLED)
- В вашем
AppDelegate.m
, вdidFinishLaunchingWithOptions
метод, добавьте следующее утверждение:
NSString * plistPath = [[NSBundle mainBundle] pathForResource: @ "Info" ofType: @ "plist"]; NSDictionary * plistConfig = [[NSDictionary alloc] initWithContentsOfFile: plistPath];
// Firebase BOOL isFirebaseDebugEnabled = [[plistConfig valueForKey: @ "FirebaseDebugEnabled"] boolValue];
if (isFirebaseDebugEnabled) {NSLog (@ "Отладка Firebase включена."); NSMutableArray *newArguments = [NSMutableArray arrayWithArray:[[NSProcessInfo processInfo] arguments]]; [newArguments addObject:@"-FIRAnalyticsDebugEnabled"]; [newArguments addObject:@"-FIRDebugEnabled"]; [[NSProcessInfo processInfo] setValue:[копия новых аргументов] forKey: @ "arguments"]; }
[FIRApp настроить];
Вы можете создать свое приложение, выбрав его в целевой схеме, в Run
раздел, конфигурация сборки, которую вы хотите использовать (по умолчанию: Debug
) и так, попробуйте запустить приложение в Adhoc
а также Release
режимы.
В настоящее время нет способа включить режим отладки в сборке AdHoc или сборке выпуска, и это сделано намеренно. DebugView предназначен только для разработки. Создав приложение, вы можете проверить только реальный трафик, то есть через 2-4 часа после запуска.