Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Xamarin.Androidでネイティブコードと仲良しになる方法

2,787 views

Published on

第5回 Japan Xamarin User Group Conference 西日本編で発表した、Xamarin.AndroidでのNDK利用についての導入です。

Published in: Software
  • Be the first to comment

Xamarin.Androidでネイティブコードと仲良しになる方法

  1. 1. (c) 2015 ignote Co., Ltd. Xamarin.Androidで ネイティブコードと仲良しになる方法 2015.7.11 JXUG Conference 大阪
  2. 2. (c) 2015 ignote Co., Ltd. 自己紹介 中西 孝之 むげんメモ melocy (株)ignote 代表取締役 new!
  3. 3. (c) 2015 ignote Co., Ltd. むげんメモ ほぼ無限大のキャンバスに いくらでも思いのままにメモができる 手描きメモアプリ https://www.youtube.com/watch?v=wZ2aYvRPhv8
  4. 4. (c) 2015 ignote Co., Ltd. melocy 主な機能 ・録音&投稿 ・投稿曲にコメントする ・投稿やメンバー探しのリクエスト ・ユーザーどうしのフォロー ・お気に入り曲の登録、連続再生 楽器を弾いたり、歌ったり。 これらをアプリで重ね録りして投稿することで、 仲間やファンを見つけだし、つながっていけるサービスです。
  5. 5. (c) 2015 ignote Co., Ltd. melocy.iOS Xcodeで開発 主にリアルタイム録音でのパフォーマン ス確保のため 当初はMonoTouchでプロト開発をして いた
  6. 6. (c) 2015 ignote Co., Ltd. melocy.Android Xamarin.Androidで開発 出ました! NDKでオーディオを制御 ↑今日のテーマ 広告やプッシュライブラリを Javaバインディング ↑前回のテーマ
  7. 7. (c) 2015 ignote Co., Ltd. フルC#へ...(願望)
  8. 8. (c) 2015 ignote Co., Ltd. ゴミわけるチャン 福井県オープンデータアプリ ごみ分別収集情報 フルXamarinで開発 主にサーバとの通信や データリソースを共通化
  9. 9. (c) 2015 ignote Co., Ltd. melocy.xamarin ... Mono Android VM サウンドなど 各種ライブラリ Xamarin.Android ネイティブ
  10. 10. (c) 2015 ignote Co., Ltd. Javaバインディング Mono Android VM サウンドなど Xamarin.Android ネイティブ各種ライブラリ
  11. 11. (c) 2015 ignote Co., Ltd. NDKバインディング Mono Android VM サウンドなど Xamarin.Android ネイティブ各種ライブラリ
  12. 12. (c) 2015 ignote Co., Ltd. 使い分け ネイティブAPI利用 OpenGL¦ES OpenSL¦ES OpenMAX AL オープンソースライブラリ Cocos2d-x ffmpeg ※ライセンス注意 パフォーマンス mono-VMけっこ速い!? NDK Javaバインディング Android向けライブラリ 広告SDK MBaaS系SDK 画面コンポーネント 決済系SDK 既存の資産 オリジナルフレームワーク
  13. 13. (c) 2015 ignote Co., Ltd. お品書き NDK環境を整える Androidアプリプロジェクトを作成 NDKビルド環境を作成 soファイルをプロジェクトに追加 P/Invokeコードを記述 アプリから利用...
  14. 14. (c) 2015 ignote Co., Ltd. やってみる
  15. 15. (c) 2015 ignote Co., Ltd. 助けてください! カスタムコマンドで、NDKパスを直接記述している パス変数は使えないんだろうか...
  16. 16. (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>
  17. 17. (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
  18. 18. (c) 2015 ignote Co., Ltd. まとめ NDK環境を整える Androidアプリプロジェクトを作成 NDKビルド環境を作成 soファイルをプロジェクトに追加 P/Invokeコードを記述 アプリから利用...
  19. 19. (c) 2015 ignote Co., Ltd. おまけ:ソースコード共有率 Android固有コード 87% 共有コード 13% melocy
  20. 20. (c) 2015 ignote Co., Ltd. おまけ:ソースコード共有率 Android固有コード 71% 共有コード 29% 共有コード 31% iOS固有コード 69% ゴミわけるチャン
  21. 21. (c) 2015 ignote Co., Ltd. ありがとうございました。 WE

×