Submit Search
NPAPIを使ったandroid標準ブラウザの拡張方法
3 likes
•
4,132 views
Naruto TAKAHASHI
1 of 34
Download now
Downloaded 15 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
More Related Content
What's hot
(20)
ODP
Fuchsia概略その1
l_b__
PDF
Windows で PHP をビルドしてみた
y-uti
PDF
Djangoフレームワークの紹介
Shinya Okano
PDF
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
PDF
AndroidとSELinux
android sola
PDF
JIT for PHP を試した
y-uti
PPTX
Jenkins と groovy
Kohsuke Kawaguchi
PDF
PHP カンファレンス福岡 参加報告
y-uti
PDF
Android,Brillo,ChromeOS
l_b__
PDF
Go MobileでAndroidアプリ開発
Takuya Ueda
PDF
ABS2015 のセッション紹介
l_b__
PDF
KEONとPEAKが無くてもFirefox OS開発出来る
android sola
PDF
What makes pyramid unique
Atsushi Odagiri
PDF
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
ODP
Yapf2013
l_b__
PDF
映画にでてくるハッカーになりたい - YAPC Asia 2010
Hiroh Satoh
PDF
Chrome Apps のデバイスAPI
yoshikawa_t
PDF
Redmineを快適に使うためのおすすめ初期設定
Go Maeda
PDF
Dexcs2021 of install2
Etsuji Nomura
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
Fuchsia概略その1
l_b__
Windows で PHP をビルドしてみた
y-uti
Djangoフレームワークの紹介
Shinya Okano
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
AndroidとSELinux
android sola
JIT for PHP を試した
y-uti
Jenkins と groovy
Kohsuke Kawaguchi
PHP カンファレンス福岡 参加報告
y-uti
Android,Brillo,ChromeOS
l_b__
Go MobileでAndroidアプリ開発
Takuya Ueda
ABS2015 のセッション紹介
l_b__
KEONとPEAKが無くてもFirefox OS開発出来る
android sola
What makes pyramid unique
Atsushi Odagiri
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
Yapf2013
l_b__
映画にでてくるハッカーになりたい - YAPC Asia 2010
Hiroh Satoh
Chrome Apps のデバイスAPI
yoshikawa_t
Redmineを快適に使うためのおすすめ初期設定
Go Maeda
Dexcs2021 of install2
Etsuji Nomura
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
Viewers also liked
(20)
PDF
How to add nfc web api to android by using npapi
Naruto TAKAHASHI
PDF
Tizenについて
Naruto TAKAHASHI
PDF
Rust samurai lightning talk
Naruto TAKAHASHI
PDF
Tizen web app を FireFox OS へ移植する方法を考えた
Naruto TAKAHASHI
PDF
Tizen & Crosswalk
Naruto TAKAHASHI
PDF
Report of linuxcon japan 2013
Naruto TAKAHASHI
PDF
Tizen の未来と可能性
Naruto TAKAHASHI
PDF
猫でも分かる Android WebKit
Naruto TAKAHASHI
PDF
Japanese input environment on Tizen 2.0 Alpha
Naruto TAKAHASHI
PDF
せっかくだから俺はこの NPAPI の話をするぜ
Naruto TAKAHASHI
PDF
Tizen 2.0 overview
Naruto TAKAHASHI
PDF
Characterization of biodegradable poly(3 hydroxybutyrate-co-butyleneadipate) ...
Giuseppe Puzzo
DOCX
Prakt.jarkom2 jefri tugas ke 1_KONFIGURASI STATIC ROUTING DI MIKROTIK OS
Jefri Fahrian
PPTX
2013_Expanded_Employment_Law_Update_New_Developments_and_Trends
Parsons Behle & Latimer
PPTX
Rishikesh Sharma Portfolio
sharmarishikesh
PDF
Hoa phuong
seophuong
PDF
MyRingCard #bigliettodavisitaelettronico
Francesco Pieragostini
PDF
Livro Digital - História de 50 metros e outras histórias crônicas
Luiz Henrique F Cunha
PDF
Social Issues
LorenaBustosGarcia
PDF
Catálogo plotter print
Plotterprint
How to add nfc web api to android by using npapi
Naruto TAKAHASHI
Tizenについて
Naruto TAKAHASHI
Rust samurai lightning talk
Naruto TAKAHASHI
Tizen web app を FireFox OS へ移植する方法を考えた
Naruto TAKAHASHI
Tizen & Crosswalk
Naruto TAKAHASHI
Report of linuxcon japan 2013
Naruto TAKAHASHI
Tizen の未来と可能性
Naruto TAKAHASHI
猫でも分かる Android WebKit
Naruto TAKAHASHI
Japanese input environment on Tizen 2.0 Alpha
Naruto TAKAHASHI
せっかくだから俺はこの NPAPI の話をするぜ
Naruto TAKAHASHI
Tizen 2.0 overview
Naruto TAKAHASHI
Characterization of biodegradable poly(3 hydroxybutyrate-co-butyleneadipate) ...
Giuseppe Puzzo
Prakt.jarkom2 jefri tugas ke 1_KONFIGURASI STATIC ROUTING DI MIKROTIK OS
Jefri Fahrian
2013_Expanded_Employment_Law_Update_New_Developments_and_Trends
Parsons Behle & Latimer
Rishikesh Sharma Portfolio
sharmarishikesh
Hoa phuong
seophuong
MyRingCard #bigliettodavisitaelettronico
Francesco Pieragostini
Livro Digital - História de 50 metros e outras histórias crônicas
Luiz Henrique F Cunha
Social Issues
LorenaBustosGarcia
Catálogo plotter print
Plotterprint
Ad
Similar to NPAPIを使ったandroid標準ブラウザの拡張方法
(20)
PDF
20200516 selenium-meetup-winappdriver
Hiroko Tamagawa
PDF
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
PDF
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
PPTX
Windows Azure PHP Tips
Microsoft Openness Japan
PDF
Android4.2徹底解剖!
leverages_event
PPTX
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
PPTX
Phone gap+javascriptスマホアプリ開発(入門編)
Monaca
PDF
Firefox os hackathon
dynamis
PDF
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
PDF
Firefox OS - Blaze Your Own Path
dynamis
PDF
TestFlight自動化でらくらくチームテスト
Yoichiro Sakurai
PPTX
Cordovaコトハジメ( Html5fun×senchUG )
Masayuki Abe
PPTX
Android勉強会 1
shotaueda3
PPTX
ngCore engine for mobage platform
Toru Yamaguchi
PDF
Adobe Edge Inspectを利用してデバッグ
Keisuke Todoroki
PDF
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
PPTX
C#の書き方
信之 岩永
PPTX
C#の書き方
信之 岩永
PDF
さわってみよう Firefox OS in 大阪
Honma Masashi
20200516 selenium-meetup-winappdriver
Hiroko Tamagawa
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
Windows Azure PHP Tips
Microsoft Openness Japan
Android4.2徹底解剖!
leverages_event
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
Phone gap+javascriptスマホアプリ開発(入門編)
Monaca
Firefox os hackathon
dynamis
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
Firefox OS - Blaze Your Own Path
dynamis
TestFlight自動化でらくらくチームテスト
Yoichiro Sakurai
Cordovaコトハジメ( Html5fun×senchUG )
Masayuki Abe
Android勉強会 1
shotaueda3
ngCore engine for mobage platform
Toru Yamaguchi
Adobe Edge Inspectを利用してデバッグ
Keisuke Todoroki
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
C#の書き方
信之 岩永
C#の書き方
信之 岩永
さわってみよう Firefox OS in 大阪
Honma Masashi
Ad
More from Naruto TAKAHASHI
(11)
PPTX
CMake multiplatform build-tool
Naruto TAKAHASHI
PDF
Tizen API
Naruto TAKAHASHI
PDF
猫でも分かる Android WebKit ice break
Naruto TAKAHASHI
PDF
Tizen 2.0 alpha でサポートされなかった native api
Naruto TAKAHASHI
PDF
Tizen 2.0 alpha でサポートされなかった native api icebreak
Naruto TAKAHASHI
PDF
Tizen application
Naruto TAKAHASHI
PPTX
Tizen web app
Naruto TAKAHASHI
PDF
Tizen native application
Naruto TAKAHASHI
PPTX
Html5 でアプリを作るということ
Naruto TAKAHASHI
PPTX
Tizen web app について調べたよ
Naruto TAKAHASHI
PPTX
Linux ユーザーからみた tizen
Naruto TAKAHASHI
CMake multiplatform build-tool
Naruto TAKAHASHI
Tizen API
Naruto TAKAHASHI
猫でも分かる Android WebKit ice break
Naruto TAKAHASHI
Tizen 2.0 alpha でサポートされなかった native api
Naruto TAKAHASHI
Tizen 2.0 alpha でサポートされなかった native api icebreak
Naruto TAKAHASHI
Tizen application
Naruto TAKAHASHI
Tizen web app
Naruto TAKAHASHI
Tizen native application
Naruto TAKAHASHI
Html5 でアプリを作るということ
Naruto TAKAHASHI
Tizen web app について調べたよ
Naruto TAKAHASHI
Linux ユーザーからみた tizen
Naruto TAKAHASHI
Recently uploaded
(6)
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
PDF
Google Driveハブ型Obsidian同期環境:PC編集とモバイル閲覧を安全・効率的に実現するクロスデバイス構築ガイド
honeshabri
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
Google Driveハブ型Obsidian同期環境:PC編集とモバイル閲覧を安全・効率的に実現するクロスデバイス構築ガイド
honeshabri
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
NPAPIを使ったandroid標準ブラウザの拡張方法
1.
横浜Androidプラットフォーム部 第24回勉強会
Naruto TAKAHASHI 2012/09/29
2.
Naruto TAKAHASHI(@TNaruto) ◦
[email protected]
◦ http://eflmemo.hatenablog.com Tizen 推し Android も触ります 仕事歴も Android の方が長いよ(´・ω・`)
3.
Tizen や Firefox OS ◦ HTML5 Platform ◦ Javascript でデバイスを触れる。 Telephony Bluetooth NFC Etc, etc Android ◦ non-HTML5 Platform ◦ Javascript でデバイスは触れない。 ◦ 世界で1,2のシェアを誇るプラットフォームがそのザマか! ◦ ないなら作っちゃえ
4.
What’s NPAPI? ◦ NPAPI とはなにかのご紹介 NPAPI Usage ◦ NPAPI の使い方、作り方のご紹介 Android NPAPI ◦ Andorid の NPAPI の独自拡張についてご紹介 ◦ Android で NPAPI 開発時の注意点など
5.
What’s Netscape Plugin
API?
6.
Netscape Plugin のフレームワーク ◦ ブラウザの機能拡張 実装例 ◦ Adobe Flash Player ◦ Gecko Media Player ◦ VLC Media Player ◦ Isis(web browser of WebOS) フル HTML で UI が作られている web browser UI 部分と HTML 描画部分のプロセス切り分けに使用
7.
Scripting をサポート ◦ JavaScript から Netscape Plugin のオブジェクトのメソッド を実行することができる C/C++ で実装 ◦ OS のリソースを使用、参照可能 システムコールの実行 ファイルシステムの参照、変更 デバイスを触れる NPAPI を使えば OS のリソースを参照、変更する Javascript API を拡張可能!
8.
How to use
plugin and develop plugin.
9.
html で <object> タグで MIME を指定 getElementById() で DOM を取得する DOM のメソッドを実行する! <object id=‘plugin‘ type="application/x-tss-nfc-access-plugin“ height=0 width=0></object> // プラグインの DOM を取得 var nfc_obj = document.getElementById(‘plugin’); // プラグインのメソッドを実行 alert(nfc_obj.version());
11.
プラグイン作成手順を書くには狭すぎる… JavaScript メソッド のつくり方について紹介 例として Kernel のバージョンを返すメソッド version() を作成します。 プラグインのつくり方については下記を参照 ◦ NPAPI document https://developer.mozilla.org/en-US/docs/Plugins
12.
NPObject の二つのコールバック関数へ処理を追加 hasMethod コールバック関数 ◦ メソッド名を追加する。 Invoke コールバック関数 ◦ メソッドの処理を実装する。
13.
“version” という文字列がきたら true を返す bool plugin_has_method(NPObject *obj __UNUSED__, NPIdentifier methodName) { // NPIdentifier を文字列へ変換 NPUTF8 *name = NPN_UTF8FromIdentifier(methodName); bool ret = false; // version であれば true if(strcmp(name,”version”) == 0) { ret = true; } // 文字列の解放 NPN_MemFree(name); return ret; }
14.
“version” の文字列がきたら実行 /proc/version の中身を文字列として返す char buf[256]; // /proc/version をオープン FILE *fp = fopen("/proc/version", "r"); if(!fp) goto end; // /proc/version を読み込んで buf 格納する memset(buf, 0, sizeof(buf)); fread(buf, 256, 1, fp); fclose(fp); // buf を NPVARIANT 型として返す STRINGZ_TO_NPVARIANT(strdup(buf), *result);
15.
Android is complex
platform
16.
Android のシステムは Java 実装 ◦ ブラウザも Java 実装 NPAPI は C/C++ 実装 NPAPI から Android のリソースへのアクセス方法は どうなってんの?
17.
Android のリソースにアクセスする方法は二つ ◦ android_npapi.h を使用する ◦ JNI でアクセスする
18.
Android の API のラッパー ◦ 実行API ◦ 取得API ◦ 設定API 例: ログ ブラウザのライフサイクルイベント定義 ブラウザや WebView の Context の取得
19.
Android での JNI の普通な使い方 ◦ アプリの特定の部分をCやアセンブラで実装して高速化 ◦ ハードへのアクセスをJava側に提供する センサ Java から C を実 OS 内部 行する Application(Java) JNI Native Code(C)
20.
Plugin は C/C++ から Java を実行します。 ◦ Android Framework のリソースを取得 ◦ サービスとやりとりする C から Java を実 行する Plugin(Native Code) JNI Android Frameworks(Java)
21.
例: FeliCa リーダのFD(ファイルディスクリプタ)が欲し い ◦ FeliCa リーダのデバイスファイルを open() すれば? /dev/bus/usb/xxx/xxx 2.3 以降から Android USB 機能が搭載 ◦ USB Accessor でユーザから許可取らないと /dev/bus/usb 以下を触れない仕様 ◦ 許可取ってからじゃないと FD も取得できない…
22.
Android のリソース ◦ Java でしか触れない。 ◦ 郷に入れば郷に従え C から Java を実行 ◦ USB のアクセス許可+FDを返すクラスを実装 Plugin の中でクラスをインスタンスを管理
23.
Browser Plugin
JNI Android Framework kernel Device
24.
USB アクセス許 Browser
可を取得 Plugin JNI Android Framework kernel Device
25.
ブラウザが USB のアクセス許可のダイヤログを表示
26.
FD を取得 Browser Plugin
JNI Android Framework kernel Device
27.
デバイスへアクセ
ス! Browser Plugin JNI Android Framework kernel Device
28.
Android では Plugin のロードを制限している。 ◦ セキュリティホールになるため ロードするための二つの解決方法 ◦ PluginManager.java へ公開署名のシグネチャを追加 ◦ insecure boot で起動
29.
Webkit の Plugin のロードを管理しているところ ◦ ${ANDROID_SRC}/frameworks/base/core/java/andr oid/webkit/PluginManager.java ◦ 噂によると SIGNATURE_1 は Adobe さんの公開署名? Flash Player って無条件にロードできるよね… private static final Signature[] SIGNATURES = new Signature[] { new Signature(SIGNATURE_1) }; boolean signatureMatch = false; for (int i = 0; i < SIGNATURES.length; i++) { if (SIGNATURES[i].equals(signature)) { signatureMatch = true; break; }} if (!signatureMatch) {return false;}
31.
What’s NPAPI? ◦ ブラウザの機能を拡張できます。 ◦ javascript から OS のリソースを参照、変更する API を作 成できます。 NPAPI Usage ◦ 使うには DOM のメソッドを実行 ◦ メソッドは hasMethod と Invoke へ処理を追加
32.
Android NPAPI ◦ android_npapi.h でリソースへ触れる。 ◦ android_npapi.h 外の触りたい場合は JNI(C->Java) 触る機能について完全把握すること 例として Android での USB のリソースの持ち方 Android での NFC の動作の仕様 C から Java の呼び出しを使いこなせるように。 ◦ デフォルトだとプラグインはロードできない。 PluginManager へ公開署名のシグネチャを追加できる人でな いと使うのは難しい。 あるいは insecure boot…
33.
NPAPI document ◦ https://developer.mozilla.org/en-US/docs/Plugins ◦ Mozilla さんに NPAPI のドキュメントがたくさんあります NPAPI SDK ◦ http://code.google.com/p/npapi-sdk/ ◦ まずは気軽に PC で Netscape Plugin を作ってみよう Andorid 用 NPAPI サンプル ◦ ${ANDROUD_SOURCE}/development/samples/Brows erPlugin
34.
Android with NPAPI
で面白いこ とできませんかね
Download