【Unity】PostprocessBuildPlayer + mod_pbxprojでiOSビルド時に自動でframeworkを追加したりする【iOS】
UnityからiOSにビルド後にframeworkの追加が必要になったりした場合
Unity5からはPBXProjectというAPIを使えば済む話なのですが、Unity4以前だとまだ実装されていないため、PostProcessBuildとmod_pbxprojなどのどっかのすごい人達が作った外部のツールを利用必要があります。
今回は残念なことにUnity4環境でframeworkの追加やファイル個別のARC設定の自動化が必要になったため、やったことのメモです。
前提
・Unity4以前の環境
・ビルド後のiOSプロジェクトにframeworkを組み込んで、ファイルごとにARC設定を行う必要がある
・Jenkinsをビルドに使っているなどの理由でframework組み込みと設定も自動化したい
・Pythonアレルギーがない(mod-pbxprojはPythonで書かれてるので...)
準備
・githubリポジトリからmod-pbxprojを取ってきて、UnityのEditorフォルダ以下に置く
・UnityのEditorフォルダ以下に「PostprocessBuildPlayer」というファイルを拡張子なしで作成する
PostprocessBuildPlayerを書く
UnityのEditorフォルダ以下にPostprocessBuildPlayerというファイルを置いておくだけでビルド後に勝手に実行されます
こいつは基本的にどんな言語でも書けるらしいのですが、今回はmod-pbxprojがPythonで書かれてるのでこいつもPythonです。マジカヨ...
#!/usr/bin/env python import os, sys from mod_pbxproj import * proj = XcodeProject.Load(proj_path + '/Unity-iPhone.xcodeproj/project.pbxproj') PROJ_ROOT = proj.source_root #ファイルが存在するかチェック test_framework_is_readable = os.access(proj_path + '/Libraries/TestFramework', os.R_OK) if compliance_sdk_is_readable: #TestFrameworkをグループとして取り込み proj.add_folder(PROJ_ROOT + '/Libraries/TestFramework', parent = lib_group) #取り込んだframeworkのファイルに「-fobjc-arc」を付与してARC有効にする fileNameList = [] fileNameList.append('TestFrameworkViewController.m') fileNameList.append('TestFrameworkController.m') fileNameList.append('TestFrameworkVerificationViewController.m') fileNameList.append('TestFrameworkAgreementManager.m') for fileName in fileNameList: fileId = proj.get_files_by_name(fileName) files = proj.get_build_files(fileId[0].id) for f in files: f.add_compiler_flag('-fobjc-arc')
あとはビルドを実行するだけでこいつが勝手に動いてくれるはず
mod_pbxprojの詳しい使い方はgithubを読むとなんとなくわかるはず