Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
74
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
4
4.2k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
80
[shibuya.apk #41] Jetpack Composeでグリッドに柔軟にスペースを入れたい
syarihu
0
3.4k
[DroidKaigi 2022] 詳解Google Playの新しい定期購入 ~オファーの活用や実装例を添えて~
syarihu
0
3.9k
5分で分かるGoogle Playの新しいサブスクリプション / Google Play new subscription 2022
syarihu
1
1.9k
[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
600
[Android 11 Meetups] Google Play Commerce からのアップデート / Android 11 Meetups Google Play Commerce
syarihu
4
2.9k
Other Decks in Technology
See All in Technology
SREには開発組織全体で向き合う
koh_naga
0
310
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
6
1.5k
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
2
190
エンジニアリングをやめたくないので問い続ける
estie
2
1.2k
第4回 「メタデータ通り」 リアル開催
datayokocho
0
130
2025年 開発生産「可能」性向上報告 サイロ解消からチームが能動性を獲得するまで/ 20251216 Naoki Takahashi
shift_evolve
PRO
1
160
IAMユーザーゼロの運用は果たして可能なのか
yama3133
1
350
[JAWS-UG 横浜支部 #91]DevOps Agent vs CloudWatch Investigations -比較と実践-
sh_fk2
2
260
WordPress は終わったのか ~今のWordPress の制作手法ってなにがあんねん?~ / Is WordPress Over? How We Build with WordPress Today
tbshiki
1
780
評価駆動開発で不確実性を制御する - MLflow 3が支えるエージェント開発
databricksjapan
1
190
AWS Trainium3 をちょっと身近に感じたい
bigmuramura
1
140
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
460
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
How STYLIGHT went responsive
nonsquared
100
6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Context Engineering - Making Every Token Count
addyosmani
9
510
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Why Our Code Smells
bkeepers
PRO
340
57k
Navigating Team Friction
lara
191
16k
Agile that works and the tools we love
rasmusluckow
331
21k
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
ありがとうございました