这是我在可可应用程序中使用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_assembly的对象文件符号警告:(armv7)找不到符号_xamarin_setup的对象文件符号警告:(armv7)找不到符号_main的对象文件符号警告:(armv7)找不到符号_OBJC_METACLASS_$_MonoTouchAppDelegate的对象文件符号警告:(armv7)找不到符号_OBJC_CLASS_$_MonoTouchAppDelegate 的对象文件符号
dsymutil(6764,0x7fff78631000)malloc:*对象0x6000000fb400的错误:未分配要释放的指针*在malloc_error_break中设置断点以调试
在此生成过程中,.app生成后出现错误意味着.app生成之后出现问题。
注意:如果我使用terminal运行这个命令,那么它就可以正常工作,并且生成.ipa。问题是只有当我使用nstask运行此命令时。
我正在使用el capitan和xcode 7.1.1。如有任何帮助,我们将不胜感激。
根据@Itachi的建议,问题是关于启用MallocNanoZone。这需要明确地从NSTask的环境中删除。
这是我从IPABuddy 得到的代码
NSTask *task=[[NSTask alloc]init];
NSMutableDictionary *theEnvironment = [[NSProcessInfo processInfo].environment mutableCopy];
if (theEnvironment[@"MallocNanoZone"])
{
[theEnvironment removeObjectForKey:@"MallocNanoZone"];
}
task.environment = theEnvironment;
希望这能有所帮助。