Xamarin.Androidでネイティブコードと仲良しになる方法
Transcript of Xamarin.Androidでネイティブコードと仲良しになる方法
(c) 2015 ignote Co., Ltd.
Xamarin.Androidでネイティブコードと仲良しになる方法
2015.7.11 JXUG Conference 大阪
(c) 2015 ignote Co., Ltd.
自己紹介
中西 孝之
むげんメモ melocy
(株)ignote 代表取締役
new!
(c) 2015 ignote Co., Ltd.
むげんメモほぼ無限大のキャンバスに
いくらでも思いのままにメモができる 手描きメモアプリ
https://www.youtube.com/watch?v=wZ2aYvRPhv8
(c) 2015 ignote Co., Ltd.
melocy
主な機能・録音&投稿・投稿曲にコメントする・投稿やメンバー探しのリクエスト・ユーザーどうしのフォロー・お気に入り曲の登録、連続再生
楽器を弾いたり、歌ったり。これらをアプリで重ね録りして投稿することで、
仲間やファンを見つけだし、つながっていけるサービスです。
(c) 2015 ignote Co., Ltd.
melocy.iOS
Xcodeで開発主にリアルタイム録音でのパフォーマンス確保のため当初はMonoTouchでプロト開発をしていた
(c) 2015 ignote Co., Ltd.
melocy.Android
Xamarin.Androidで開発出ました!NDKでオーディオを制御↑今日のテーマ広告やプッシュライブラリをJavaバインディング↑前回のテーマ
(c) 2015 ignote Co., Ltd.
フルC#へ...(願望)
(c) 2015 ignote Co., Ltd.
ゴミわけるチャン
福井県オープンデータアプリごみ分別収集情報フルXamarinで開発主にサーバとの通信やデータリソースを共通化
(c) 2015 ignote Co., Ltd.
melocy.xamarin ...
MonoAndroid VM サウンドなど
各種ライブラリ
Xamarin.Android
ネイティブ
(c) 2015 ignote Co., Ltd.
Javaバインディング
MonoAndroid VM サウンドなど
Xamarin.Android
ネイティブ各種ライブラリ
(c) 2015 ignote Co., Ltd.
NDKバインディング
MonoAndroid VM サウンドなど
Xamarin.Android
ネイティブ各種ライブラリ
(c) 2015 ignote Co., Ltd.
使い分け
ネイティブAPI利用OpenGL|ESOpenSL|ESOpenMAX AL
オープンソースライブラリCocos2d-xffmpeg※ライセンス注意
パフォーマンスmono-VMけっこ速い!?
NDK JavaバインディングAndroid向けライブラリ広告SDKMBaaS系SDK画面コンポーネント決済系SDK
既存の資産オリジナルフレームワーク
(c) 2015 ignote Co., Ltd.
お品書き
NDK環境を整える
Androidアプリプロジェクトを作成
NDKビルド環境を作成
soファイルをプロジェクトに追加
P/Invokeコードを記述アプリから利用...
(c) 2015 ignote Co., Ltd.
やってみる
(c) 2015 ignote Co., Ltd.
助けてください!カスタムコマンドで、NDKパスを直接記述しているパス変数は使えないんだろうか...
(c) 2015 ignote Co., Ltd.
助けてください!
CookieManager.RemoveAllCookie()をコールするとtry/catchでも捕捉できないエラーが発生。アプリが落ちてしまう>ω<
Stacktrace:at <unknown> <0xffffffff>at (wrapper managed-to-native) object.wrapper_native_0x40a1639f (intptr,intptr,intptr) <0xffffffff>at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr) <0x0007f>at Android.Webkit.CookieManager.RemoveAllCookie () <0x000ab>
(c) 2015 ignote Co., Ltd.
記述がシンプル
int Java_com_example_native_Sample_add( JNIEnv* env, int a, int b );
Java+NDK
int add( int a, int b );
Xamarin+NDK
(c) 2015 ignote Co., Ltd.
まとめ
NDK環境を整える
Androidアプリプロジェクトを作成
NDKビルド環境を作成
soファイルをプロジェクトに追加
P/Invokeコードを記述アプリから利用...
(c) 2015 ignote Co., Ltd.
おまけ:ソースコード共有率
Android固有コード87%
共有コード13%
melocy
(c) 2015 ignote Co., Ltd.
おまけ:ソースコード共有率
Android固有コード71%
共有コード29%
共有コード31%
iOS固有コード69%
ゴミわけるチャン
(c) 2015 ignote Co., Ltd.
ありがとうございました。
WE