这是我用来在我的cocoa app中使用nstask生成ios构建的代码。
NSTask *task=[[NSTask alloc]init];
task.launchPath=@"/library/Frameworks/Mono.Framework/Commands/xbuild";
task.arguments= @[@"/p:Configuration=Release",@"/p:Platform=iPhone",@"/p:BuildIpa=false",@"/target:Build",@"/Users/xyz/Projects/SimpleDemo/SimpleDemo.sln"];
NSPipe *pipe=[[NSPipe alloc]init];
[task setStandardOutput:pipe];
NSFileHandle *outputFileHandle;
outputFileHandle = [[NSFileHandle alloc]init];
outputFileHandle=[pipe fileHandleForReading];
[outputFileHandle waitForDataInBackgroundAndNotify];
[[NSNotificationCenter defaultCenter] addObserverForName:NSFileHandleDataAvailableNotification object:outputFileHandle queue:nil usingBlock:^(NSNotification *notification){
NSData *output = [outputFileHandle availableData];
NSString *outStr = [[NSString alloc] initWithData:output encoding:NSUTF8StringEncoding];
NSLog(@"%@",outStr);
[outputFileHandle waitForDataInBackgroundAndNotify];
}];
@try {
[task launch];
[task waitUntilExit];
}
@catch (NSException *exception) {
NSLog(@"%@",[exception callStackSymbols]);
}
@finally {
}
运行代码时出现此错误
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iO S.Common.targets:错误:工具退出代码:134。输出:警告:(armv7)找不到对象文件符号_xamarin_register_modules的符号 警告:(armv7)找不到符号_xamarin_register_assemblies的目标文件符号 警告:(armv7)找不到符号_xamarin_setup的目标文件符号 警告:(armv7)找不到符号_main的目标文件符号 警告:(armv7)找不到符号的对象文件符号_OBJC_METACLASS _ $ _ MonoTouchAppDelegate 警告:(armv7)找不到符号的对象文件符号_OBJC_CLASS _ $ _ MonoTouchAppDelegate
dsymutil(6764,0x7fff78631000)malloc: *对象0x6000000fb400的错误:未释放指针被释放 * 在malloc_error_break中设置断点以进行调试
在此构建过程中出现错误.app生成意味着.app生成后出现问题。
注意:如果我使用终端运行此命令,那么它可以正常工作并且生成.ipa。问题仅在我使用nstask运行此命令时。
我正在使用el capitan和xcode 7.1.1。 任何帮助将不胜感激。
答案 0 :(得分:0)
根据@Itachi的建议,问题是关于启用MallocNanoZone。这需要明确地从NSTask的环境中删除。
以下是我从IPABuddy
获取的代码 NSTask *task=[[NSTask alloc]init];
NSMutableDictionary *theEnvironment = [[NSProcessInfo processInfo].environment mutableCopy];
if (theEnvironment[@"MallocNanoZone"])
{
[theEnvironment removeObjectForKey:@"MallocNanoZone"];
}
task.environment = theEnvironment;
希望这有帮助。