UnityでPostprocessBuildPlayerを使ってXcodeに外部frameworkを取り込んでみた
情報が既出してあったので自分が作成したSampleも書いておく。
最近はUnityのコンパイルサーバー作ってAssetBundleも一緒に出力したり、課金処理書いたりしてます。
- Assets/Editor に下記2ファイルを設置
- mod_pbxproj.py
- PostprocessBuildPlayer
#!/usr/bin/env python from mod_pbxproj import XcodeProject import sys import os import os.path selfpath = sys.argv[0] installpath = sys.argv[1] target = sys.argv[2] print "Postprocess Build Target: " + target + "\n" buildpath = os.path.join(os.path.dirname(selfpath),'../../Builds') if target == "iPhone": projpath = installpath + "/Unity-iPhone.xcodeproj/project.pbxproj" print ".pbxproj " + projpath + "\n"; project = XcodeProject.Load(projpath) project.add_file(buildpath + '/Nakamap.framework') if project.modified: project.backup() project.save() cmd = '/usr/libexec/PlistBuddy -c "Add CFBundleURLTypes:0:CFBundleURLSchemes:0 string nakamapId" ' + buildpath + '/info.plist' os.system(cmd)
あと、Assets/BuildsフォルダはUnityに取り込まれないのでframeworkはそこに置く事にした。
2013/06/01追記
project.pbxprojのFRAMEWORK_SEARCH_PATHSを追加しないと外部フレームワークが機能しなかった。
mod_pbxproj.pyを一部修正して対応した。
調べたところ、mod_pbxproj.pyのFRAMEWORK_SEARCH_PATHS対応版もあることが解った。
https://github.com/OpenKit/openkit-unity/blob/master/Assets/Plugins/OpenKit/PostbuildScripts/mod_pbxproj.py
https://github.com/kronenthaler/mod-pbxproj/blob/master/mod_pbxproj.py