我正在开发iPhone上的录像机应用程序。为了使用外部USB麦克风测试我的应用程序,我需要从Mac上拔下iPhone,以便我可以连接麦克风。
我的问题是,一旦iPhone没有连接到Mac,我无法调试我的iPhone应用程序,也无法查看控制台输出。有没有办法通过USB电缆以外的其他介质连接调试器,例如网络还是蓝牙?
我已经读过,在越狱iPhone之后,可以安装ssh,connect to the iPhone using ssh, and tail the syslog。这是一个解决方案,我会立即使用,如果它不需要jailreaking手机。我不想越狱,我想测试我的应用程序。
任何非标准但可靠的查看日志输出的解决方案也值得赞赏。例如。我目前正在iPhone上使用一个快速写入的HTTP服务器,然后使用Mac上的浏览器或telnet连接到iPhone并查看控制台输出。
答案 0 :(得分:2)
我创建了库DVFloatingWindow,可以直接在应用程序中查看控制台输出。您只需使用DVLog而不是NSLog:
DVLog(@"Some message %@", parameters);
您还可以通过为每个日志创建单独的选项卡来查看多个日志。能够通过按下按钮发送所有日志。
答案 1 :(得分:2)
也许这可能是你的答案,如果你正在寻求实时调试+你拥有iPhone 4,4S或更旧的iPad(30针连接器)。使用此附件,您应该能够连接到Mac(XCODE)+到外部附件
答案 2 :(得分:1)
您可以将调试日志写入文件中,经过测试,您可以看到它们。
@interface LogFile : NSObject
+ (void)WriteLogWithString:(NSString *)log;
@end
这是实施文件
@implementation LogFile
+ (NSString*)CurrentSystemTime {
return [[NSDate date] description];
}
+(NSString*)getDocumentsPath
{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
return path;
}
+ (NSString*)getLogFilePath
{
NSString *loggingFilePath = nil;
loggingFilePath = [[self getDocumentsPath] stringByAppendingPathComponent:@"/MYLogFile.txt"];
return loggingFilePath;
}
+ (void)WriteLogWithString:(NSString *)log
{
if(log != nil){
NSString *locationFilePath = [self getLogFilePath];
NSString *str = [NSString stringWithFormat:@"%@ %s [Line %d]: %@", [self CurrentSystemTime],__PRETTY_FUNCTION__,__LINE__,log];
FILE *fp = fopen([locationFilePath UTF8String], "a");
fprintf(fp,"%s\n", [str UTF8String]);
fclose(fp);
}
}
@end
现在你必须像这样调用这个方法
[LogFile WriteLogWithString:@"sachin thakur"];
答案 3 :(得分:1)
当我使用MFi时,我有一个Apple提供的加密狗,允许iPhone同时连接到电脑和配件。
您还可以通过设备下设备选项卡中的Xcode管理器查看控制台打印输出。