Как отладить 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 часа после запуска.

Другие вопросы по тегам