くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

XamarinでJarファイルを取り込む

Xamarinで特定のJarファイルを取り込んで、ライブラリを使用したい場合があります。

今回は、取り込む一連の流れを記載しようと思います。

環境はVisual Studioをつかうので、それを元に進めていきます。

①ライブラリ用のプロジェクトの作成

まずは、ライブラリを入れるプロジェクトを作成します。

ここはAndroidStudioと違うところですが、ライブラリ用のプロジェクトを作る必要があるみたいです。

f:id:kumaskun:20200105012134p:plain

プロジェクト作成の際に、バインディングライブラリを選択して、プロジェクトを作成します。

②Jarファイルを入れてビルド

次に、①で作成したプロジェクトにJarファイルを入れて、ビルドします。

Jarsというフォルダがあるはずなので、その配下に取り込むJarファイルを入れます。

余談ですが、JarファイルはInput JarReference Jarsの2種類あって、今回はC#にバインドするので、Reference Jarsにあたるみたいです。

詳細はAboutJars.txtに記載されているので、確認してみるといいかもしれません。

f:id:kumaskun:20200105012658p:plain

Jarファイルを取り込んだら、そのJarファイルを右クリックで、ビルドアクションを選択します。

EmbededJarを選択してください。

その後、プロジェクトをビルドします。

成功すれば奇跡なくらいエラーが出るはず。。。。

私もエラーが出て、苦労しました。。。。。。

よく出るのはThe type or namespace name '×××××' does not exist in the namespace '××××××'みたいな参照できません系のものです。

今回は必要のないクラスだったので、remove-nodeで対処しましたが、果たして良かったのか?(一般的にはそのクラスをpublicにするというものらしいですが、うまくいきませんでした。)

他にもエラーの種類は色々あると思いますが、今回は割愛させていただきます。

Androidのプロジェクトを作成

ビルドが成功したら、Androidのプロジェクトを作成します。

②で作ったプロジェクトをVisual Studioで開いている状態で、ファイル→新しいソリューションを開きます。

テンプレートは必要なものを選択して、アプリ名を決めるとプロジェクトが作成されます。

②で作成したプロジェクトと同じフォルダに作成されれば、成功です。

作成されたプロジェクトの参照フォルダを右クリックし、参照の編集を選択し、②で作成したプロジェクト名を選択して、インポートできるように設定します。

これで、using~でインポートできるようになったと思います。

おそらくというかほぼビルドエラーに時間を食われることになると思うので、覚悟して挑みましょう!

参照

.JAR のバインド

Approaching a Xamarin.Android Bindings Case

2014-08-01 Xamarin でJavaライブラリを使う際のエラー:「アクセシビリティに一貫性がありません。 '(クラス名)' のアクセシビリティは (フィールド名やメソッド名) よりも低く設定されています。 」