SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
(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 ...
Mono
Android VM サウンドなど
各種ライブラリ
Xamarin.Android
ネイティブ
(c) 2015 ignote Co., Ltd.
Javaバインディング
Mono
Android VM サウンドなど
Xamarin.Android
ネイティブ各種ライブラリ
(c) 2015 ignote Co., Ltd.
NDKバインディング
Mono
Android VM サウンドなど
Xamarin.Android
ネイティブ各種ライブラリ
(c) 2015 ignote Co., Ltd.
使い分け
ネイティブAPI利用
OpenGL¦ES
OpenSL¦ES
OpenMAX AL
オープンソースライブラリ
Cocos2d-x
ffmpeg
※ライセンス注意
パフォーマンス
mono-VMけっこ速い!?
NDK Javaバインディング
Android向けライブラリ
広告SDK
MBaaS系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

Weitere ähnliche Inhalte

Andere mochten auch

C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションYoshito Tabuchi
 
Libqi unityの紹介など
Libqi unityの紹介などLibqi unityの紹介など
Libqi unityの紹介などFujikido
 
20141030 html5j-firefox os-deviceapi
20141030 html5j-firefox os-deviceapi20141030 html5j-firefox os-deviceapi
20141030 html5j-firefox os-deviceapiNoritada Shimizu
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介Yoshito Tabuchi
 
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPIWindows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPIOsamu Monoe
 
ウェブ標準デバイス系 API 総集編 2014
ウェブ標準デバイス系 API 総集編 2014ウェブ標準デバイス系 API 総集編 2014
ウェブ標準デバイス系 API 総集編 2014Futomi Hatano
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発友太 渡辺
 
C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)Takashi Kawasaki
 
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarinかけ算で使いこなす Xamarin
かけ算で使いこなす XamarinTatsuji Kuroyanagi
 
Prism.Formsについて
Prism.FormsについてPrism.Formsについて
Prism.Formsについて一希 大田
 
Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全Yoshito Tabuchi
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツMasuda Tomoaki
 
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)Hironov OKUYAMA
 
Xamarin の概要と活用事例
Xamarin の概要と活用事例Xamarin の概要と活用事例
Xamarin の概要と活用事例Yoshito Tabuchi
 
Chrome Apps のデバイスAPI
Chrome Apps のデバイスAPIChrome Apps のデバイスAPI
Chrome Apps のデバイスAPIyoshikawa_t
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する増田 亨
 

Andere mochten auch (17)

C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
 
Libqi unityの紹介など
Libqi unityの紹介などLibqi unityの紹介など
Libqi unityの紹介など
 
20141030 html5j-firefox os-deviceapi
20141030 html5j-firefox os-deviceapi20141030 html5j-firefox os-deviceapi
20141030 html5j-firefox os-deviceapi
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
 
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPIWindows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
 
ウェブ標準デバイス系 API 総集編 2014
ウェブ標準デバイス系 API 総集編 2014ウェブ標準デバイス系 API 総集編 2014
ウェブ標準デバイス系 API 総集編 2014
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発
 
C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)
 
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarinかけ算で使いこなす Xamarin
かけ算で使いこなす Xamarin
 
Prism.Formsについて
Prism.FormsについてPrism.Formsについて
Prism.Formsについて
 
Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全Xamarin バッドノウハウ大全
Xamarin バッドノウハウ大全
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
 
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
Xamarin によるクロスプラットフォームモバイルアプリ開発(2014.06)
 
Xamarin の概要と活用事例
Xamarin の概要と活用事例Xamarin の概要と活用事例
Xamarin の概要と活用事例
 
Chrome Apps のデバイスAPI
Chrome Apps のデバイスAPIChrome Apps のデバイスAPI
Chrome Apps のデバイスAPI
 
Xamarin 基礎講座
Xamarin 基礎講座Xamarin 基礎講座
Xamarin 基礎講座
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 

Mehr von hIDDENxv

モバイル開発に役立つAからZ - 福井技術者の集い
モバイル開発に役立つAからZ - 福井技術者の集いモバイル開発に役立つAからZ - 福井技術者の集い
モバイル開発に役立つAからZ - 福井技術者の集いhIDDENxv
 
ハッカソンの運営からその後のフォローを考えてみる
ハッカソンの運営からその後のフォローを考えてみるハッカソンの運営からその後のフォローを考えてみる
ハッカソンの運営からその後のフォローを考えてみるhIDDENxv
 
Kinect meets ミブリ・テブリ
Kinect meets ミブリ・テブリKinect meets ミブリ・テブリ
Kinect meets ミブリ・テブリhIDDENxv
 
マッシュアップセミナー in 福井 2012
マッシュアップセミナー in 福井 2012マッシュアップセミナー in 福井 2012
マッシュアップセミナー in 福井 2012hIDDENxv
 
iOSインタラクションデザイン
iOSインタラクションデザインiOSインタラクションデザイン
iOSインタラクションデザインhIDDENxv
 
UPGRADE JAPAN!! 2011
UPGRADE JAPAN!! 2011UPGRADE JAPAN!! 2011
UPGRADE JAPAN!! 2011hIDDENxv
 
「iOSアプリ×デザイン」WCAF Seminor Vol. 6
「iOSアプリ×デザイン」WCAF Seminor Vol. 6「iOSアプリ×デザイン」WCAF Seminor Vol. 6
「iOSアプリ×デザイン」WCAF Seminor Vol. 6hIDDENxv
 
嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouch嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouchhIDDENxv
 

Mehr von hIDDENxv (9)

モバイル開発に役立つAからZ - 福井技術者の集い
モバイル開発に役立つAからZ - 福井技術者の集いモバイル開発に役立つAからZ - 福井技術者の集い
モバイル開発に役立つAからZ - 福井技術者の集い
 
ハッカソンの運営からその後のフォローを考えてみる
ハッカソンの運営からその後のフォローを考えてみるハッカソンの運営からその後のフォローを考えてみる
ハッカソンの運営からその後のフォローを考えてみる
 
Kinect meets ミブリ・テブリ
Kinect meets ミブリ・テブリKinect meets ミブリ・テブリ
Kinect meets ミブリ・テブリ
 
WDF Vol.4
WDF Vol.4WDF Vol.4
WDF Vol.4
 
マッシュアップセミナー in 福井 2012
マッシュアップセミナー in 福井 2012マッシュアップセミナー in 福井 2012
マッシュアップセミナー in 福井 2012
 
iOSインタラクションデザイン
iOSインタラクションデザインiOSインタラクションデザイン
iOSインタラクションデザイン
 
UPGRADE JAPAN!! 2011
UPGRADE JAPAN!! 2011UPGRADE JAPAN!! 2011
UPGRADE JAPAN!! 2011
 
「iOSアプリ×デザイン」WCAF Seminor Vol. 6
「iOSアプリ×デザイン」WCAF Seminor Vol. 6「iOSアプリ×デザイン」WCAF Seminor Vol. 6
「iOSアプリ×デザイン」WCAF Seminor Vol. 6
 
嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouch嗚呼、素晴らしき哉 MonoTouch
嗚呼、素晴らしき哉 MonoTouch
 

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

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