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
81
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
4
4.5k
[shibuya.apk #46] Composableの枠を超えてアニメーションする / Animation beyond Composable
syarihu
0
82
[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
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
#22 CA × atmaCup 3rd 1st Place Solution
yumizu
1
120
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
4.2k
Eight Engineering Unit 紹介資料
sansan33
PRO
0
6.1k
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
310
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
290
Everything As Code
yosuke_ai
0
490
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
200
BidiAgent と Nova 2 Sonic から考える音声 AI について
yama3133
2
140
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
21k
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
250
2025年 山梨の技術コミュニティを振り返る
yuukis
0
150
「駆動」って言葉、なんかカッコイイ_Mitz
comucal
PRO
0
130
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
130
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
140
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
220
Designing Experiences People Love
moore
143
24k
Being A Developer After 40
akosma
91
590k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
690
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
47k
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
ありがとうございました