Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AndroidXに移行するために
Search
syarihu
July 26, 2018
Technology
5
17k
AndroidXに移行するために
potatotips #53で発表した資料です。
syarihu
July 26, 2018
Tweet
Share
More Decks by syarihu
See All by syarihu
Recap #io25 What's new in Google Play
syarihu
0
94
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
4
4.8k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
100
[shibuya.apk #41] Jetpack Composeでグリッドに柔軟にスペースを入れたい
syarihu
0
3.5k
[DroidKaigi 2022] 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
syarihu
0
3.9k
5分で分かるGoogle Playの新しいサブスクリプション / Google Play new subscription 2022
syarihu
1
2k
[DroidKaigi 2021] Google Play 定期購入 比例配分モード完全攻略ガイド / Google Play Subscription Proration Mode Complete Guide
syarihu
1
8k
[Money Forward Tech Drive] What's new in Google Play [Recap #io21]
syarihu
0
610
[Android 11 Meetups] Google Play Commerce からのアップデート / Android 11 Meetups Google Play Commerce
syarihu
4
3k
Other Decks in Technology
See All in Technology
ソフトウェアアーキテクトのための意思決定術: Create Decision Readiness—The Real Skill Behind Architectural Decision
snoozer05
PRO
8
2.1k
AIエージェントで変わる開発プロセス ― レビューボトルネックからの脱却
lycorptech_jp
PRO
2
690
2026年のAIエージェント構築はどうなる?
minorun365
10
2.3k
Getting started with Google Antigravity
meteatamel
0
360
俺の失敗を乗り越えろ!メーカーの開発現場での失敗談と乗り越え方 ~ゆるゆるチームリーダー編~
spiddle
0
310
I tried making an AI manzai comedy act with "boke" and "tsukkomi" using Strands Agents
zzzzico
1
180
インシデント対応入門
grimoh
7
5.1k
NW構成図の自動描画は何が難しいのか?/netdevnight3
corestate55
2
440
技術選定 したい人 したくない人
shirayanagiryuji
0
380
LY Tableauでの Tableau x AIの実践 (at Tableau Now! - 2026-02-26)
yoshitakaarakawa
0
310
Claude Codeで実践するスペック駆動開発入門 / sdd-with-claude_code
yoshidashingo
3
4.5k
欲しいを叶える個人開発の進め方 / How to Run an Indie Project That Brings Your Ideas to Life
endohizumi
0
350
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
620
Discover your Explorer Soul
emna__ayadi
2
1.1k
How to build a perfect <img>
jonoalderson
1
5.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
63
53k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
280
YesSQL, Process and Tooling at Scale
rocio
174
15k
The SEO Collaboration Effect
kristinabergwall1
0
370
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Transcript
AndroidXに移行するために 2018/07/26 (Thu) potatotips #53 @syarihu
Taichi Sato (@syarihu) • Money Forward, Inc. ◦ Android Engineer
• TechBooster
Support Library
Support Library • Android Framework の API に下位互換性 を保つために 7
年以上前から開発されて いる • さまざまな機能が含まれている ◦ 端末固有の UX ◦ デバッグ ◦ テスト ◦ その他ユーティリティ
Support Library • 現在ほとんどの Android アプリで Support Library が導入されている •
長年のアップデートによるライブラリの成 長が開発者に混乱をもたらしている ◦ サポートされているのは v14 以降だけ ど、パッケージ名は v7 など
AndroidX
AndroidXとは • Android の新しい拡張機能ライブラリ • Support Library は v28 で終了し、今後は
AndroidX に移行する必要がある • AndroidX のバージョンは v1.0.0 から 新たに始まる ◦ 2018 年 7 月現在の最新は beta01 • パッケージ名も androidx になる
android.*とandroidx.* • android.* ◦ プラットフォームにバンドルされている API • androidx.* ◦ すべての
Android バージョンで可能な 限り一貫して動作する機能を提供する
AndroidXへの移行
AndroidXへの移行 • AndroidX への移行には移行ツールが 用意されている • 試しに Money Forward の
Android アプリ を AndroidX に移行してみる
build.gradle buildscript { dependencies { classpath "com.android.tools.build:gradle:3.3.0-alpha03"
app/build.gradle android { compileSdkVersion 28 buildToolsVersion "28.0.0"
いざビルド!
None
None
None
shortcuts.xml • App Shortcuts のための設定ファイル • Build Variants によってパッケージ名を分けてお り、
shortcuts.xml 内に記述するパッケージ名をビ ルド後のファイルを replace することで動的に切り替 えられるようにしていた
aapt2 • Android Asset Packaging Tool 2.0 • リソース処理の改善 •
Android Gradle Plugin 3.0.0 からデフォルトで有効 ◦ android.enableAapt2=false で無効にできた • Android Gradle Plugin のアップデートにより enableAapt2 のプロパティが削除された
aapt2 • リソースの出力が生の xml ファイルではなく、圧縮 された flat ファイルが生成される • そのため、
shortcuts.xml を動的に変更することが できなくなった • パッケージごとに手動で shortcuts.xml を 作らないとダメそう …
とりあえず動的変更部分を 修正することで回避…
Migrate to AndroidX
Migrate to AndroidX • Android Studio 3.2 Canary 14 以降で利用できる
Android X への移行ツール • 今回は Android Studio 3.3 Canary 3 を使用
Refactor -> Migrate to AndroidX…
None
None
いざビルド!
* What went wrong: A problem occurred configuring project ':app'.
> Could not resolve all files for configuration':app:xxxxxxxxxxCompileClasspath'. > Failed to transform file 'xxxxxxxxxx.aar' to match attributes {artifactType=processed-aar}using transform JetifyTransform > Failed to transform
android.useAndroidX=true android.enableJetifier=true gradle.properties
enableJetifier • AAR/JAR のマイグレーションツール • ライブラリ内部で使用されている Support Library などを AndroidX
に置き換えてく れる • エラー出たライブラリ内部で利用されている Support Library がうまく置き換え出来なかったぽ い
とりあえずエラー出たライブラリを 使わないようにして回避…
もう一回ビルド!
/app/build/generated/source/kapt/xxxxx/xxxxx/DeepLinkDelegate.java:8: エラー : シンボルを見つけられません import android.support.v4.app.TaskStackBuilder; ^ シンボル : クラス
TaskStackBuilder 場所 : パッケージ android.support.v4.app
DeepLinkDispatch • このライブラリが自動生成する java ファイルが Support Library のクラスを出力してしまっていたた めにエラーが発生していた
https://github.com/airbnb/DeepLinkDispatch/issues/222
https://github.com/airbnb/DeepLinkDispatch/pull/223
PRは上がってたけどCI周りの問題が あるっぽく、6月から何も動いてなかった…
\(^o^)/
AndroidX移行差分 • 今回ビルドは通せませんでしたが、参考程度に …
まとめ • Android X への移行には Android Studio の移行 ツールを使う •
compileSdkVersion 28 以上必須なので、 27 以下のアプリはその対応も必要 ◦ 特に 25 -> 26 へ上げるのが大変なので早めに やっておいたほうがよい ◦ どちらにせよ今後のアップデートでは必須
まとめ • 移行ツールを使っても、手直しはだいたい 必要になる
まとめ • 特に OSS をたくさん利用している プロジェクトは注意! ◦ 今回紹介した以外にも問題はたくさん出てくる と予想できる ◦
利用している OSS が AndroidX 対応していない 場合はコントリビュートの機運 … ?
まとめ • 正式リリースはまだだが、 Beta が出ているためそろそろ準備をしておいたほ うがよさそう ◦ 少なくとも、とりあえず試しにやってみて、どれく らい工数がかかりそうかは見ておいたほうがよさ そう
コントリビュートもできるらしい • AOSP AndroidX Contribution Guide ◦ https://android.googlesource.com/platform/framewo rks/support/+/androidx-master-dev/README.md https://twitter.com/yuichi_araki/status/1021607877801168896?s=21
参考資料 • Google Developers Japan: AndroidX の紹介 https://developers-jp.googleblog.com/2018/05/hello-world-androidx.h tml
ありがとうございました