Closed7
Creating a build script with Unity as a Library for iOS
やりたいこと
現状、上記2点を手動で行なっており、CIを回すために自動化したいのでそのためのスクリプトを作成する
-
NativeCallProxy.h
をpublic
にする -
Data
をUnityFramework
に含める
背景
やりたいことは、【Unity】MirrativのEmbedding Unityを更新した話: 実践 Unity as a Libraryと全く同じである。
しかし、会社的な都合と自分がUnity周りの知識がなさすぎてそのまま導入するのが厳しい。
方針
xcodeprojというXcodeの設定を修正できるRubyのgemが あるので活用していく
before | after |
---|---|
まずはheaderファイルをpublicにする.
- Add a header file to the header build phase
- (Frameworks): set Header Target Membership 'type' to Public || Private || Project
が役に立ちそう.
似たようなことをしているサンプルを発見
p, puts, printの違いを学んだ: rubyのprint / puts / p の違い
次はDataを扱ってみる。
参考: xcodeprojでXcodeのターゲットのCopy Bundle Resourcesにファイルを追加する
最終的には下記のようなrubyのスクリプトができました。
こちらをCIやローカルでのBuild時に叩けばとりあえずは良さそうです。
#!/usr/bin/env ruby
require 'xcodeproj'
project = Xcodeproj::Project.open(*Dir.glob('unity/Builds/iOS/Unity-iPhone.xcodeproj'))
target = project.targets.find { |item| item.to_s == 'UnityFramework' }
# expose header
header_ref = project.files.select { |project_file| project_file.display_name == "NativeCallProxy.h" }.first
header_ref.remove_from_project
header = target.headers_build_phase.add_file_reference(header_ref)
header.settings = { 'ATTRIBUTES' => ['Public'] }
# add data to copy bundle resources
data_ref = project.main_group.find_file_by_path('Data')
copy_bundle_resources = target.resources_build_phase
copy_bundle_resources.add_file_reference(data_ref)
project.save
このスクラップは2020/11/24にクローズされました