MacOS - Achieve and Upload to fir.im

打包所需要的参数:

Build Mode

xcworkspace、xcodeproj

Code Sign Identity security

命令行 find-identity -v -p codesigning 参考链接

API Token

从 fir.im 获取用户标识

Project Root Path

手动浏览文件获取工程路径

NSOpenPanel *openPanel = [NSOpenPanel openPanel];
    NSArray *fileTypes = [NSArray arrayWithObjects:@"xcworkspace", @"xcodeproj", nil];
    [openPanel setAllowsMultipleSelection:NO];
    [openPanel setMessage:@"Choose an project file to display:"];
    [openPanel setAllowedFileTypes:fileTypes];
    [openPanel setDirectoryURL:[NSURL fileURLWithPath:@"/Library/Desktop/"]];
    [openPanel beginSheetModalForWindow:viewController.view.window completionHandler:^(NSInteger result) {
        if (result == NSModalResponseOK)
        {
            if ([[openPanel URL] isFileURL])
            {
            }
        }
}];

Provisioning Profile

  • 到 ~/Library/MobileDevice/Provisioning Profiles/ 路径下查看所有以 UUID 命名的描述文件。
  • 命令行 mobileprovision-read -f UUID.mobileprovision -o Name 查询对应描述文件的名字。

NSTask

在工程项目中执行命令行

    // 初始化 NSTask
    self.executePyTask = [[NSTask alloc]init]; 
    // 当前执行的路径,相当于 cd 到指定路径。
    self.executePyTask.currentDirectoryPath = [NSBundle mainBundle].resourcePath; 
    // 二进制程序的路径。 如果不清楚命令的路径可以在终端运行,以 python 为例:which python,查看所属路径。
    self.executePyTask.launchPath = @"/usr/bin/python"; 
    // 分配参数,每一个参数作为数组中的一个元素
    self.executePyTask.arguments = @[@"GKAutoBuild.py", @"-b", b, @"-a", a, @"-c", c,@"-p", p, @"-m", m, @"-n", n,@"-f",[NSString stringWithFormat:@"%@.%@",n,b]];
    // 输出通道初始化(提供执行结果)
    NSPipe *pipe = [NSPipe pipe];
    self.executePyTask.standardOutput = pipe;
    self.outPutHandle = [pipe fileHandleForReading];
    // 实时监听输出结果
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(notifi_outPutFileReadProcess:) name:NSFileHandleReadCompletionNotification object:self.outPutHandle];
    // 监听是否完成任务
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(notifi_executePyTaskDidTerminate:) name:NSTaskDidTerminateNotification object:self.executePyTask];
    // 开启任务
    [self.executePyTask launch];
    // 调用这个方法通知才有效
    [self.outPutHandle readInBackgroundAndNotify];
    
- (void)notifi_outPutFileReadProcess:(NSNotification *)notified
{   
    if(self.executePyTask){
        // 任务未完成之前每发送一次通知之后,需要重新调用该方法,使通知有效
        [self.outPutHandle readInBackgroundAndNotify];
    }
}

- (void)notifi_executePyTaskDidTerminate:(NSNotification *)notified
{
    // 任务完成将 task 置空,防止重复调用 notifi_outPutFileReadProcess:
    self.executePyTask = nil;
}

Mac OS

NSTextView

// 设置输出窗口内容
    NSTextStorage *ts = [outPutTextView textStorage];
    // NSTextView 插入字符串
    //  [outPutTextView insertText:(nonnull id) replacementRange:(NSRange)];
    [ts replaceCharactersInRange:NSMakeRange([ts length], 0)
                      withString:outPutString];
    // 滚动到最后一行
    [outPutTextView scrollRangeToVisible:NSMakeRange([[outPutTextView string] length], 0)];

Python

对 Python 脚本传参数

对于全局变量需要使用 global

var = "2"
def main():
    gobal var 
    var = "1"

其他问题:

对类名进行重名的时候发生错误:

MacOS - Achieve and Upload to fir.im_第1张图片
Paste_Image.png

解决方法 : 在 .h 文件的 @interface 定义前加上 @class classname; 就可以完成重命名。

你可能感兴趣的:(MacOS - Achieve and Upload to fir.im)