記事一覧

バインドライブラリの作成方法 -Android編- | Xamarin.Forms


今回はXamarin.Androidでバインドライブラリを作成する方法をご紹介いたします。
バインドライブラリとは、Javaで作成された実行ファイル「jarファイル」やAndroid用に作成された実行ファイル「aarファイル」等、ネイティブなファイルをXamarinに取り込み、Xamarin上で動作するように変換できるライブラリです。
すなわち、ネイティブなjavaからXamarinのC#への変換ができる強力なツールとなります。
しかも、基本的にはjar/aarファイルを取り込み、少しだけ設定を行い、ビルドするだけの簡単手順で動作可能です。

尚、iOSでのバインドライブラリの作成方法は次回の記事「バインドライブラリの作成方法 -iOS編-」にてご紹介しております。



前提条件
・Windows10 Pro 64Bit
・Visual Studio 2015 Community Update3
・Xamarin 4.3.0.795 (NuGet Xamarin.Forms 2.3.4.247)



1.バインドライブラリ

(1)Visual Studioでバインドライブラリプロジェクトを作成します。
ネイティブなjarファイル/aarファイルはバインドライブラリのプロジェクトを使用すると簡単にJavaからC#に変換できます。

xamarin_nend_04.png


(2)ソリューションエクスプローラを開き、バインドライブラリ内のJarsフォルダに変換したいjar/aarファイルをドラッグ&ドロップします。
ファイル名称に文字の制限等はありません。数字・記号等含んでいても大丈夫です。

xamarin_bindlibrary_01.png



2.ビルドアクション

ビルドアクションを
jarファイルの場合は 「EmbeddedJar」に変更します。
aarファイルの場合は「LibraryProjectZip」に変更します。

※jarファイルの場合は「InputJar」でも動作可能ですが、jarファイルも出力しないといけません。設定するケースはレアでしょう。

xamarin_nend_05.png



3.NuGetパッケージ

aarファイルをバインドする場合、aarファイルから参照されているNuGetパッケージをインストールします。aarファイルにより必要なパッケージが異なりますので、aarファイルを作成されたベンダーにご確認ください。

 

4.Metadata.xml

通常は必要ありませんが、Metadata.xmlに追加が必要な場合があります。
ビルド時にjavaからC#に変換する際に競合する変数を識別するための設定です。
これが無いとビルドしてもSDKの全てのクラスライブラリを使用することができません。
以下のようにxmlに設定を追加します。

例:バインドライブラリプロジェクト\Transforms\Metadata.xml
<metadata>
  <attr path="/api/package[@name='net.nend.android']/
        interface[@name='NendAdNativeListListener']/method[@name='onDisplayAd']"
        name="argsType">NativeListListenerDisplayAdEventArgs</attr>
  <attr path="/api/package[@name='net.nend.android']/
        interface[@name='NendAdNativeListListener']/method[@name='onReceiveAd']"
       name="argsType">NativeListListenerReceiveAdEventArgs</attr>
  <attr path="/api/package[@name='net.nend.android']/
        interface[@name='NendAdNativeListener']/method[@name='onClick']"
       name="argsType">NendAdNativeListenerClickEventArgs</attr>
</metadata>



5.アプリケーションプロパティ

必要があればAndroidプロジェクトのプロパティを変更します。バインドライブラリをビルドして得られるDLLの容量が極端に少ない場合やILSpy.exeで逆コンパイルした結果内容に必要な関数が入っていない場合など、このプロパティを変更してビルドしてみると良いかもしれません。

Android Class Parser :
項目説明
jar2xmljar2xml.jar
Javaリフレクションを使用して.jarファイルから型およびメンバーを抽出するために使用します。
class-parseclass-parse.exe
JVMの助けなしに直接Javaバイトコードを解析するために使用します。この値は実験的です。

 ・デフォルト値はjar2xmlです。


Android Codegen Target :
項目説明
XamarinAndroidAndroid 1.0用のMono以降のJNIバインディングAPIを使用します。Xamarin.Android 5.0以降で構築されたバインディングアセンブリは、Xamarin.Android 5.0以降(API / ABI追加)でのみ実行できますが、ソースは以前の製品バージョンと互換性があります。
XAJavaInterop1JNI呼び出しにJava.Interopを使用します。使用しているアセンブリをバインドXAJavaInterop1するには、Xamarin.Android 6.1以降でのみビルドして実行できます。Xamarin.Android 6.1以降Mono.Android.dllはこの値にバインドされます。

 ・デフォルト値はXamarinAndroidです。

xamarin_nend_07.png

詳しくはXamarin公式ページをご確認ください。



6.ビルドと参照設定

(1)BindLibraryプロジェクトをビルドします。
(2)AndroidプロジェクトからビルドしたBindLibraryプロジェクトまたはビルドしたDLLを参照設定します。



7.実装例

実際にバインドライブラリを用いた作成例を以下の記事でご紹介しておりますので、ご参考にしてください。
「nendでバナー広告を表示する方法 -Android編-」




最後までお読みいただきありがとうございます。
当ブログの内容をまとめた Xamarin逆引きメニュー は以下のURLからご覧になれます。
http://itblogdsi.blog.fc2.com/blog-entry-81.html


関連記事

コメント

コメントの投稿

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語・データベース】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
Oracle10g SQLServer2008R2 SQLAnywhere8/11/16
ActiveReport CrystalReport ReportNet(IBM)
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。