読者です 読者をやめる 読者になる 読者になる

Unity で IOS のビルド時、framework を自動設定する

現在ネットでみつかるプログラムは、 xcodeproj 0.3.0 を使っており、
xcodeproj 0.6.0 を使った物が無かったので作った。

公式ドキュメントは間違っているし、gemソース中のコメントも間違っているため、
自分で作りたい場合は、ソースを読んで作るしか無いようです。

$ sudo gem update --system
$ sudo gem install xcodeproj


vi Assets/Editor/PostprocessBuildPlayer

#!/usr/bin/env ruby
#
# @author unching-star
# @note xcode に framework を追加します
#
# $ sudo gem update --system
# $ sudo gem install xcodeproj
#
require 'rubygems'
require 'xcodeproj'
require 'pathname'


FRAMEWORK_REQUIREDS = ["Security"]
FRAMEWORK_OPTIONALS = []


def add_system_frameworks_to_project(project, framework_names, option=:required)

  project.targets.each do |target|

    for framework_name in framework_names

      return if framework_name.nil?
      return if framework_name == ""

      framework_ref = project.add_system_framework(framework_name, target)

      build_phase = target.frameworks_build_phase
      build_file = build_phase.add_file_reference framework_ref

      if option == :optional
        build_file.settings = { "ATTRIBUTES" => ["Weak"] }
      end

      p "Added system framework: " + framework_name + " as " + option.id2name
    end

  end

end

def run

  buildpath = (ARGV[0]) ? ARGV[0] : File.expand_path(File.dirname($0)) + "/../../build"
  p "PostprocessBuildPlayer running on build directory: " + buildpath

  projpath = buildpath + "/Unity-iPhone.xcodeproj"
  proj = Xcodeproj::Project.new(projpath)
  add_system_frameworks_to_project(proj, FRAMEWORK_REQUIREDS, :required)
  add_system_frameworks_to_project(proj, FRAMEWORK_OPTIONALS, :optional)
  proj.save_as(projpath)

end

# exec
run