質問: ### 前提・実現したいこと Xamarin.formsのコードからネーティブ言語(Objective-CやJava)で書かれた関数を呼べるようにしようと勉強していたところ、まずはObjective-Cに関しては、Objective Sharpieというものを使って、ファイルを自動生成する必要があることはわかりました。(Javaは後回し) 参考: http://mattsudev.hatenablog.com/entry/2015/09/25/193859 http://qiita.com/iseebi/items/7e645bde85a04ebef371 幾つかのサイトを見ても sharpie xcode -sdks を実行すると、なにかしらの情報が取得できるようですが、なぜか自分の環境ではなにも表示されません。 それが原因かわかりませんが、適当にosのバージョンを決め打ちして sharpie bind を実行してもエラーになってしまいます。 とりあえず、 sharpie xcode -sdks がなにも返さない原因としてどのようなことが考えられますでしょうか? ### 発生している問題・エラーメッセージ ``` MacBook-Pro:tmp $ sharpie bind -output Output -namespace TmpTmp -sdk iphoneos9.1 header/*.h [ERROR] FATAL UNHANDLED EXCEPTION: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Sharpie.Tooling.Tool+ExitException: Exception of type 'Sharpie.Tooling.Tool+ExitException' was thrown. at Sharpie.ParseTool+ParseOptionSection.SetTargetSdk (System.String sdkIdentifier) <0x1146e72e0 + 0x00176> in :0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) <0x1146e6650 + 0x000bb> in :0 --- End of inner exception stack trace --- at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) <0x1146e6650 + 0x00139> in :0 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) <0x1146e72a0 + 0x0002a> in :0 at Sharpie.Tooling.ReflectionBoundOption.Bind (System.String value) <0x1146dcc80 + 0x00309> in :0 at Sharpie.Tooling.Tool.ProcessArgument () <0x1146d3850 + 0x0058b> in :0 at Sharpie.ParseTool.ProcessArgument () <0x1146dab50 + 0x00086> in :0 at Sharpie.Tooling.Tool.ProcessArguments () <0x1146d37d0 + 0x0002d> in :0 at Sharpie.Tooling.Tool.Run (IEnumerable`1 args) <0x1146cdcc0 + 0x00637> in :0 at Sharpie.Tooling.ToolRunnerTool.Run () <0x1146d8f80 + 0x00289> in :0 at Sharpie.Entry+SharpieToolRunnerTool.Run () <0x1146d8eb0 + 0x0002c> in :0 at Sharpie.Tooling.Tool.Run (IEnumerable`1 args) <0x1146cdcc0 + 0x0064a> in :0 at Sharpie.Tooling.ToolRunnerTool.Run (IEnumerable`1 args, System.Action`1 aboutToRunToolHandler) <0x1146cdc20 + 0x0005c> in :0 at Sharpie.Entry.Main (System.String[] args) <0x110ec4e60 + 0x0032b> in :0 ``` ### 試したこと -sdkのあとのiphoneosのバージョンを適当に変えてみても結果は変わりませんでした。 ### 補足情報(言語/FW/ツール等のバージョンなど) Object Sharpie 3.3.0 Xamarin 6.1.3(build 19) Mac Note Pro OS X Yosemite(10.10.5)
回答: Objective Sharpie は利用できる Xcode の位置に制限があり、`/Applications/Xcode*.app` に配置される必要があります。 Objective Sharpie のドキュメント に以下のように記載されています。 > > Objective Sharpie looks for SDKs installed in any Xcode*.app under the /Applications directory > > > ですので、otaota さんの環境ですと現在の `/Applications/_Xcode/Xcode721/Xcode.app` から `/Applications/Xcode.app` とか `/Applications/Xcode721.app` 等に移動させる必要があります。