调试Firebase的唯一方法是在启动时传递的参数上传递-FIRAnalyticsDebugEnabled。它在调试模式下与我的iOS设备连接,但我想部署一个AdHoc构建,以便QA可以在没有Xcode的情况下测试它。但是当Xcode归档一个构建时,似乎参数不会在启动时传递。有什么办法吗?谢谢。
-FIRAnalyticsDebugEnabled
vjrehmav1#
我找到了这个黑客解决方案,在您的应用程序中尝试它:didFinishLaunchingWithOptions:或者覆盖AppDelegate的init:Objective-C:
NSMutableArray *newArguments = [NSMutableArray arrayWithArray:[[NSProcessInfo processInfo] arguments]]; [newArguments addObject:@"-FIRDebugEnabled"]; [[NSProcessInfo processInfo] setValue:[newArguments copy] forKey:@"arguments"];
斯威夫特:
var newArguments = ProcessInfo.processInfo.arguments newArguments.append("-FIRDebugEnabled") ProcessInfo.processInfo.setValue(newArguments, forKey: "arguments")
u5rb5r592#
只是一些补充最upped答案:我会做这样的事
#if DEBUG var newArguments = ProcessInfo.processInfo.arguments newArguments.append("-FIRDebugEnabled") ProcessInfo.processInfo.setValue(newArguments, forKey: "arguments") #endif
保持调试状态。这需要你在Build Settings的“Other Swift Flags”中设置-DDEBUG。(当然,你需要为Debug值设置这个。然后记住在初始化Firebase之前放入代码片段:-)
-DDEBUG
pengsaosao3#
除上述提议外:
FIREBASE_DEBUG_ENABLED = YES
NO
YES
Release
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 debug enabled."); NSMutableArray *newArguments = [NSMutableArray arrayWithArray:[[NSProcessInfo processInfo] arguments]]; [newArguments addObject:@"-FIRAnalyticsDebugEnabled"]; [newArguments addObject:@"-FIRDebugEnabled"]; [[NSProcessInfo processInfo] setValue:[newArguments copy] forKey:@"arguments"]; } [FIRApp configure];
Swift 4.2
if let path = Bundle.main.path(forResource: "Info", ofType: "plist"), let plist = FileManager.default.contents(atPath: path), let preferences = try? PropertyListSerialization.propertyList(from: plist, options: .mutableContainersAndLeaves, format: nil) as? [String:AnyObject], let isFirebaseDebugEnabled = preferences["FirebaseDebugEnabled"] as? Bool { if isFirebaseDebugEnabled { var args = ProcessInfo.processInfo.arguments args.append("-FIRAnalyticsDebugEnabled") args.append("-FIRDebugEnabled") ProcessInfo.processInfo.setValue(args, forKey: "arguments") } }
您可以在Run部分的目标方案中选择要使用的构建配置(默认值:Debug),因此,请尝试在Adhoc和Release模式下运行应用程序。
Run
Debug
Adhoc
xu3bshqb4#
目前没有办法在AdHoc build或Release build中打开Debug模式,这是故意的。DebugView仅用于开发。一旦您构建了应用程序,您只能检查真实的流量,即运行后2-4小时。
4条答案
按热度按时间vjrehmav1#
我找到了这个黑客解决方案,在您的应用程序中尝试它:didFinishLaunchingWithOptions:或者覆盖AppDelegate的init:
Objective-C:
斯威夫特:
u5rb5r592#
只是一些补充最upped答案:我会做这样的事
保持调试状态。这需要你在Build Settings的“Other Swift Flags”中设置
-DDEBUG
。(当然,你需要为Debug值设置这个。然后记住在初始化Firebase之前放入代码片段:-)
pengsaosao3#
除上述提议外:
FIREBASE_DEBUG_ENABLED = YES
或NO
(即:YES
(除Release
外的所有位置)FirebaseDebugEnabled
,字符串值:$(FIREBASE_DEBUG_ENABLED)
AppDelegate.m
的didFinishLaunchingWithOptions
方法中,添加以下语句:Objective-C
Swift 4.2
您可以在
Run
部分的目标方案中选择要使用的构建配置(默认值:Debug
),因此,请尝试在Adhoc
和Release
模式下运行应用程序。xu3bshqb4#
目前没有办法在AdHoc build或Release build中打开Debug模式,这是故意的。DebugView仅用于开发。一旦您构建了应用程序,您只能检查真实的流量,即运行后2-4小时。