使用spaceship批量添加设备并更新profile

在公司经历过同时需要添加多个设备并更新profile,幸得有spaceship相助,写了个脚本UpdateProfile.rb:

require "spaceship"

Spaceship.login('APPLE ID', 'password')

#参数传入true表示需要新增设备,例如:ruby UpdateProfile.rb true
if ARGV[0] == "true"
    file = File.open("multiple-device-upload-ios.txt") #文本文件里录入的udid和设备名用tab分隔
    file.each do |line|
        arr = line.strip.split("\t")
        device = Spaceship.device.create!(name: arr[1], udid: arr[0])
        puts "add device: #{device.name} #{device.udid} #{device.model}"
    end

    devices = Spaceship.device.all

    profiles = Array.new
    profiles += Spaceship.provisioning_profile.development.all 
    profiles += Spaceship.provisioning_profile.ad_hoc.all

    profiles.each do |p|
        puts "Updating #{p.name}"
        p.devices = devices
        p.update!
    end
end

dic = { "XXXAdHoc" => "773086ad-6b7b-4e57-85b7-08b577308e91.mobileprovision", 
        "XXXDevelop" => "a7a85aa7-f359-4415-a8ed-3dacc31ea448.mobileprovision" }

downloadProfiles = Array.new
downloadProfiles += Spaceship.provisioning_profile.development.all 
downloadProfiles += Spaceship.provisioning_profile.ad_hoc.all

downloadProfiles.each do |p|
    puts "Downloading #{p.name}"
    fileName = dic[p.name]
    File.write("/Users/ray/Library/MobileDevice/Provisioning Profiles/#{fileName}", p.download)
end

继续阅读

swift + vapor写服务器

参考文章

示例demo

vapor

看了参考文章写的用swift写服务器,自己跟着做了一遍,踩了不少坑,于是记录成文:

下载安装swift开发版的snapshot

swift官网

此处有坑,不要下载最新的3.16号的安装包,要下载和vapor使用版本一致的包,可打开vapor里的.swift-version文件查看其使用版本,目前使用的是:
https://swift.org/builds/development/xcode/swift-DEVELOPMENT-SNAPSHOT-2016-03-01-a/swift-DEVELOPMENT-SNAPSHOT-2016-03-01-a-osx.pkg

添加环境变量

若使用的是Xcode7.3:export TOOLCHAINS=swift

或者使用Xcode7.2:PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin:$PATH

添加后执行:swift --version,确认显示为:Apple Swift version 3.0-dev

再执行:swift build --version,确认显示为:Apple Swift Package Manager 0.1

若出现以下错误(下载DEVELOPMENT-SNAPSHOT-2016-03-16-a的包会出这个问题,我最初下载的3.16的包,遇到这个问题,一并记录在这儿;下载安装3.1的包不会有该问题):

dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2016-03-16-a.xctoolchain/usr/bin/swift-build
Reason: image not found

解决办法,添加环境变量:
export DYLD_LIBRARY_PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/lib/swift/macosx:$DYLD_LIBRARY_PATH

继续阅读

Reveal

Reveal早有耳闻,今天装了个reveal插件,可自动编译运行app时启动reveal,但是运行发现其仅能在模拟器环境下使用,于是改了下其代码,使其即可在模拟器也可在真机上运行:

继续阅读

c++ basic for ioser

原文链接

虚函数

先来看个错误示例:

class Foo {
      public:
    int value() { return 5; }
};

class Bar : public Foo {
      public:
    int value() { return 10; }
};

Bar *b = new Bar();
Foo *f = (Foo*)b;
printf(“%i”, f->value());// Output = 5

期望输出为10,可是输出5;要想使输出为10,就需要用到虚函数,正确示例如下:

class Foo {
      public:
    virtual int value() { return 5; }
};

class Bar : public Foo {
      public:
    virtual int value() { return 10; }
};

继续阅读

mac+github+octopress搭建博客

参考文章

费了不少周折,最终ok,现将注意事项记录如下:

安装ruby

由于我的mac早前已经有了ruby环境,只要保证版本在1.9.3以上即可。可执行:ruby -v确认版本号,若已经安装了ruby环境,则参考文章里第一步安装ruby的指令都可以不执行了。

安装octopress

参考文章里这句指令可以不执行:rbenv rehash,除非你是使用rbenv来安装的ruby环境

继续阅读

测试框架KIF

项目地址

看功能介绍很强大,能模拟用户交互事件(例如点击,拖动)进行测试等。
自己按照其使用说明,无论是通过cocoapods集成,还是直接把xcodeproj拖到自己项目的workspace里,该设置的参数都设置了,均无法test编译通过。

网上也搜了下解决方案,把sentestkit也加入了link binary,还是不行,始终编译报错undefined symbols for i386。

若用同仁成功集成使用了KIF,还望赐教,多谢多谢!