debugging 如何在iOS AdHoc build上调试Firebase

kcrjzv8t  于 2023-04-21  发布在  iOS
关注(0)|答案(4)|浏览(180)

调试Firebase的唯一方法是在启动时传递的参数上传递-FIRAnalyticsDebugEnabled
它在调试模式下与我的iOS设备连接,但我想部署一个AdHoc构建,以便QA可以在没有Xcode的情况下测试它。
但是当Xcode归档一个构建时,似乎参数不会在启动时传递。
有什么办法吗?谢谢。

vjrehmav

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")
u5rb5r59

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之前放入代码片段:-)

pengsaosao

pengsaosao3#

除上述提议外:

  • 为每个构建模式添加xcconfig文件(即:调试、临时和发布):https://www.appcoda.com/xcconfig-guide
  • 添加所有配置文件FIREBASE_DEBUG_ENABLED = YESNO(即:YES(除Release外的所有位置)
  • 在您的Info.plist文件中添加一个带有key的条目:FirebaseDebugEnabled,字符串值:$(FIREBASE_DEBUG_ENABLED)
  • AppDelegate.mdidFinishLaunchingWithOptions方法中,添加以下语句:
    Objective-C
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),因此,请尝试在AdhocRelease模式下运行应用程序。

xu3bshqb

xu3bshqb4#

目前没有办法在AdHoc build或Release build中打开Debug模式,这是故意的。DebugView仅用于开发。一旦您构建了应用程序,您只能检查真实的流量,即运行后2-4小时。

相关问题