Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Dynamic Feature Modules 入門
Search
punchdrunker
June 07, 2018
Technology
2.8k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dynamic Feature Modules 入門
umeda.apk #4 で発表した、Dynamic Feature Modulesについての資料です
punchdrunker
June 07, 2018
More Decks by punchdrunker
See All by punchdrunker
Kotlin2.0以降の新機能
punchdrunker
0
64
DnD in Compose
punchdrunker
0
350
what's new in Material Design で気になったトピック
punchdrunker
1
650
7カ国語に対応したサービスでの翻訳管理システムの改善事例
punchdrunker
1
1.7k
Java Bytecode Vertical Tasting
punchdrunker
2
1.6k
getting started with dark theme
punchdrunker
2
1.1k
Practical Activity Transition in Android
punchdrunker
0
1.3k
今時のProgress indicator / Replacing ProgressDialog with ProgressBar
punchdrunker
0
750
レビュー評価4.7の秘密 / The Secret To A Better Reputation
punchdrunker
2
2.1k
Other Decks in Technology
See All in Technology
When Does a Local Qwen Start to Break
morshoto
0
200
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
160
2026/09/10 Spring Bootから Jakarta EE/MicroProfileへの移行
megascus
0
300
ASTを使って影響範囲を特定する
nealle
0
140
10分で知る最近のOmarchy
komagata
0
240
omasushiというライブラリを作った
polidog
PRO
0
190
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
0
1.4k
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
310
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
190
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
370
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
120
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
300
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
[SF Ruby Conf 2025] Rails X
palkan
2
1.4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
480
The Limits of Empathy - UXLibs8
cassininazir
1
650
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Transcript
Dynamic Feature Module を使ってみた @punchdrunker
自己紹介 • @punchdrunker / 七尾 貴史 • 普段は、Android > iOS
> Rails • 株式会社ミクシィで、 みてねというアプリを作っています • DroidKaigiでも働いてます • shibuya.apkではライブ配信係
今日話すこと Android App Bundleの中の目玉機能の1つである、Dynamic Feature Modulesを 使ったアプリを実際にリリースして、どのような使い心地になるかを体験してみようという お話しです。 aabの作り方とか、その他の詳しい話は割愛します。 前回の里山さんの資料に色々まとまっています。
https://www.slideshare.net/nsface/app-bundle
Android App Bundle概要 アプリをいままでよりスマートに配信する事が出来る機能群の総称 • Multiple APKの代替(何らかの理由で端末別にapkを用意できる仕組み) • APKサイズの最適化(aab) •
必要になった時に追加でモジュールをインストールできる ◦ Dynamic Feature Moduleとしてベータ公開中 • アプリをインストールしていなくてもモジュール単位で利用可能になる ◦ instant enableとして近日公開予定 (AndroidStudio 3.2 RC14以降でしか使えない)
aabの構造
今日のテーマ
Dynamic Feature Module? アプリのインストール後に、必要になった時に機能やリソースを事後的にインストール (Dynamic Delivery)する事ができる仕組みのこと。 一部の端末やユーザー向けのものはアプリインストール後に必要になったときにインス トールできるようにする事で、その機能が必要の無いユーザーに対してはストレージ使 用量を抑えられる。 また回線速度に依存するが、モジュールのインストールには数秒以上かかると思った方
がよい。 必要なくなったらuninstallすることも出来る。
Dynamic Feature Moduleの使い道 - 有料コンテンツやプレミアム機能 - 有料登録時にインストールできれば良い - ゲームのステージ情報 -
ステージが進んだ時にインストールすれば良い - とにかく大きな画像などのリソースをたまに使う - 必要だとわかったらインストールすれば良い - 利用者が少なく、ある程度分離された機能 - 他サービスとの連携する機能など (あくまで自分の妄想です)
どんな対応が必要か • play coreライブラリを利用 ◦ com.google.android.play.core.splitinstall.* • SplitInstallManager を使って、利用可能なモジュールの確認やインストールを行う ◦
確認: SplitInstallManager.getInstalledModules() ◦ 追加: SplitInstallManager.startInstall(module) ◦ 削除: SplitInstallManager.deferredUninstall(modules) • インストール完了したら(SplitInstallStateUpdatedListener)、使うだけ ◦ パッケージ名を指定して、startActivity()やcreatePackageContext()するだけ
デモ 1. 設定アプリでhochoアプリのストレージ使用量を確認 2. hochoアプリを起動 3. メニューからDynamic Feature Moduleを選択 4.
写真一覧が表示されるまで待機 5. 写真一覧が表示されたら再度設定アプリでhochoのストレージ使用量を確認 サンプルアプリ インストールURL →
aab的にはどうなるのか(時間があれば) bundletoolでどんなapkが生成されるか手元で確認できます https://github.com/google/bundletool/releases 具体的な手順はcodelabがわかりやすいです https://codelabs.developers.google.com/codelabs/your-first-dynamic-app/index.ht ml?index=..%2F..%2Fio2018#4
ハマりどころ(1) Modules 'base' and 'gallery' contain entry 'res/layout/activity_main.xml' with different
content. → 別モジュールでも同じリソース名は不可 オンデマンド モジュールのタイトルのリソース ID には、ベース モジュールで定義された文字列を指 定する必要があります。無効なモジュールは「 gallery」です →ベースとなるアプリ側でリソースIDを定義しておく必要がある(feature_names.xml) implementationで利用するライブラリを定義すると、 dynamic feature module側から使えない → apiでロードするようにしたら使えた
ハマりどころ(2) ベータ機能なので、申請フォームに記入が必要 →半日くらい待つと使えるようになっていた aabでリリースしたらminSdkVersion21なのに、hdpi端末でベクターがぼやけた(伝聞) →VectorDrawableCompatのissueが上がっているので、その内直りそう
参考資料 • codelab ◦ https://goo.gl/h17V6Y • sample app ◦ https://github.com/googlesamples/android-dynamic-features
• hochoでの実装 ◦ https://github.com/punchdrunker/hocho/pull/33/files