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
mobilemethod-osaka-2018-11-09-jakalada-android
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Hideki Hamada
November 09, 2018
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
mobilemethod-osaka-2018-11-09-jakalada-android
モバイルメソッド大阪 第4回 登壇資料「AndroidアプリのターゲットAPIレベルを上げたときのなんやかんや」
Hideki Hamada
November 09, 2018
More Decks by Hideki Hamada
See All by Hideki Hamada
AndroidアプリとWebコンテンツの連携 / Sansan Tech Meetup Android
jakalada
1
1.3k
devio2019osaka_hamada_hideki.pdf
jakalada
0
1.9k
2019-05-18-gdg-kyoto-jakalada.pdf
jakalada
0
940
Other Decks in Technology
See All in Technology
SRE Lounge Hiroshimaへの招待
grimoh
0
550
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
1
150
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
710
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
130
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
3.6k
product engineering with qa
nealle
0
150
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
490
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
570
『AIに負けない』より『AIと遊ぶ』」〜ワクワクが最強のテスト・QA学習戦略_公開用
odan611
2
550
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
3
800
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
2.5k
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
2.3k
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Embracing the Ebb and Flow
colly
88
5.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Building an army of robots
kneath
306
46k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
180
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
63
55k
Amusing Abliteration
ianozsvald
1
220
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
Transcript
"OESPJEΞϓϦͷ λʔήοτ"1*ϨϕϧΛ ্͛ͨͱ͖ͷͳΜ͔Μ ϞόΠϧϝιουେࡕୈ̐ճ ాӯथ!KBLBMBEB
ࣗݾհ w ాӯथʢ·ͩͻͰ͖ʣ
ࣗݾհ w ాӯथʢ·ͩͻͰ͖ʣ w Ϋϥεϝιουגࣜձࣾ w ϞόΠϧΞϓϦαʔϏε෦ॴଐ
ࣗݾհ w ాӯथʢ·ͩͻͰ͖ʣ w Ϋϥεϝιουגࣜձࣾ w ϞόΠϧΞϓϦαʔϏε෦ॴଐ w "OESPJEΤϯδχΞ w
ϲ݄લʹೖࣾʢ݄ʣ
ࠓ͢Δ
"OESPJEΞϓϦͷ λʔήοτ"1*ϨϕϧΛ ্͛ͨͱ͖ͷͳΜ͔Μ
࣍ (PPHMF1MBZͷཁ݅มߋ ରԠͨ͠ΞϓϦ ରԠͷ֓ཁ ରԠͷৄࡉ
(PPHMF1MBZͷཁ݅มߋ
AndroidΞϓϦ։ൃͷ Ұ࣍ใ
Android Developers https://developer.android.com
Google Developers https://developers.google.com
Google Developersͷ ϒϩά
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
֓ཁ
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
APIϨϕϧΛ λʔήοτʹࢦఆ͢Δʁ
https://developer.android.com/about/versions/pie/android-9.0-changes-28
https://developer.android.com/about/versions/pie/android-9.0-changes-28
"1*Ϩϕϧະຬ͕λʔήοτͷ ΞϓϦʹద༻͞Εͳ͍ https://developer.android.com/about/versions/pie/android-9.0-changes-28
λʔήοτAPIϨϕϧཁ݅
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
UBSHFU4EL7FSTJPO λʔήοτ"1*Ϩϕϧͷ͜ͱ https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
ίʔυωʔϜͱ͓ͯ͠՛ࢠͷ໊લ͕͍ͯΔ "OESPJE$VQDBLF ΧοϓέʔΩ "OESPJE0SFP ΦϨΦ "OESPJE1JF ύΠ
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
࠷৽ͷOSʹະରԠͷ ΞϓϦެ։Ͱ͖ͳ͍
ެ։ࡁΈͷΞϓϦ ຖͷରԠ͕ඞཁ
ରԠͨ͠ΞϓϦ
ॳࣄ
None
࠷ऴߋ৽݄
࠷ऴߋ৽݄ &DMJQTF
࠷ऴߋ৽݄ &DMJQTF +BWB
࠷ऴߋ৽݄ &DMJQTF +BWB "OESPJEΛαϙʔτ
࠷ऴߋ৽݄ &DMJQTF +BWB "OESPJEΛαϙʔτ λʔήοτ"1*Ϩϕϧʜ
࠷ऴߋ৽݄ &DMJQTF +BWB "OESPJEΛαϙʔτ λʔήοτ"1*Ϩϕϧʜ
࠷ऴߋ৽݄ &DMJQTF +BWB "OESPJEΛαϙʔτ λʔήοτ"1*Ϩϕϧʜ
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
https://developers-jp.googleblog.com/2017/12/improving-app-security-and-performance.html
19→26Ҏ߱
ରԠͷ֓ཁ
։ൃڥ
։ൃڥ ରԠલ ରԠޙ *%& &DMJQTF "%5 "OESPJE4UVEJP ݴޠ +BWB ͦͷ··
։ൃڥ ରԠલ ରԠޙ *%& &DMJQTF "%5 "OESPJE4UVEJP ݴޠ +BWB ͦͷ··
ਖ਼ࣜ൛ϦϦʔε αϙʔτऴྃ
։ൃڥ ରԠલ ରԠޙ *%& &DMJQTF "%5 "OESPJE4UVEJP ݴޠ +BWB ͦͷ··
։ൃڥ ରԠલ ରԠޙ *%& &DMJQTF "%5 "OESPJE4UVEJP ݴޠ +BWB ͦͷ··
Ҡߦ͢Δͱͨ͠Β গͣͭ͠,PUMJO Ұؾʹ,PUMJO
Ϗϧυπʔϧ
Ϗϧυπʔϧ ରԠલ ରԠޙ (SBEMF ະ༻ "OESPJEQMVHJOGPS (SBEMF ະ༻
CVJME5PPMT7FSTJPO ෆ໌
Ϗϧυπʔϧ ରԠલ ରԠޙ (SBEMF ະ༻ "OESPJEQMVHJOGPS (SBEMF ະ༻
CVJME5PPMT7FSTJPO ෆ໌
Ϗϧυπʔϧ ରԠલ ରԠޙ (SBEMF ະ༻ "OESPJEQMVHJOGPS (SBEMF ະ༻
CVJME5PPMT7FSTJPO ෆ໌
Ϗϧυπʔϧ ରԠલ ରԠޙ (SBEMF ະ༻ "OESPJEQMVHJOGPS (SBEMF ະ༻
CVJME5PPMT7FSTJPO ෆ໌ "OESPJE4UVEJPͷҠߦ࣌ʹ ࠷৽൛͕ࢦఆ͞Εͨ
λʔήοτAPIϨϕϧؔ࿈
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌ λʔήοτ"1*Ϩϕϧ
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌ ίϯύΠϧʹ༻͢Δ 4%,ͷόʔδϣϯ
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌ αϙʔτϥΠϒϥϦͷͻͱͭ
build.gradle android { // ... compileSdkVersion 28 defaultConfig { //
... targetSdkVersion 28 } } dependencies { // ... implementation 'com.android.support:appcompat-v7:28.0.0' }
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌ Λ͑ͯ·Ͱ্͛ͨ
28Ͱ߹Θ͍ͤͯΔཧ༝
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌ ݹ͍4%,৽͍͠4%,ΛΒͳ͍ DPNQJMF4EL7FSTJPO UBSHFU4EL7FSTJPOҎ্
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌ όʔδϣϯ͕ҟͳΔͱ ҟৗಈ࡞͢Δʢ͔ʣ DPNQJMF4EL7FSTJPOͱ BQQDPNQBUWͷόʔδϣϯಉ͡
λʔήοτAPIϨϕϧؔ࿈ ରԠલ ରԠޙ UBSHFU4EL7FSTJPO DPNQJMF4EL7FSTJPO ෆ໌ BQQDPNQBUW
ෆ໌ ߹ΘͤͨΒͯ͢ͷ݅Λຬͨ͢
ରԠͷৄࡉ
ਐΊํ
build.gradle android { // ... compileSdkVersion 19 defaultConfig { //
... targetSdkVersion 19 } } dependencies { // ... implementation 'com.android.support:appcompat-v7:19.1.0' } ελʔτ
build.gradle android { // ... compileSdkVersion 28 defaultConfig { //
... targetSdkVersion 28 } } dependencies { // ... implementation 'com.android.support:appcompat-v7:28.0.0' } ΰʔϧ
1ݸ্ͣͭ͛Δ
https://developer.android.com/about/versions/pie/android-9.0-changes-28
ͦͷ·͑ʹ
Android StudioҠߦ࣌Ͱ ϏϧυΤϥʔ
resource android:attr/ preserveIconSpacing is private. failed linking references.
19→22 (Android 4.4→5.1) ࢀߟ: https://stackoverflow.com/questions/29248579/error-in-declare- styleable-menuview-unable-to-find-attribute-androidpreserv
ϏϧυͰ͖ͨ
1ݸ্ͣͭ͛Δ
22→23 (Android 5.1→6.0)
ϏϧυΤϥʔ 22→23
org.apache.http ͷআ 22→23
build.gradle android { // ... useLibrary 'org.apache.http.legacy' }
ϏϧυΤϥʔղܾ 22→23
࣮ߦ࣌Τϥʔ 22→23
࣮ߦ࣌ύʔϛογϣϯ ͷ༷Ճ 22→23
ϥΠϒϥϦ͕৭ʑ͋Δ 22→23
PermissionsDispatcher ͬͨ 22→23
༻ྫ @RuntimePermissions public class MainActivity extends AppCompatActivity { @NeedsPermission(Manifest.permission.CAMERA) void
showCamera() { // ... } @OnShowRationale(Manifest.permission.CAMERA) void showRationaleForCamera(final PermissionRequest request) { // ... } @OnPermissionDenied(Manifest.permission.CAMERA) void showDeniedForCamera() { // ... } @OnNeverAskAgain(Manifest.permission.CAMERA) void showNeverAskForCamera() { // ... } } https://github.com/permissions-dispatcher/PermissionsDispatcher
23→24 (Android 6.0→7.0)
ಈ࡞ɾUIͷද͕͓͔͍ࣔ͠ 23→24
ContentResolver.addPeriodicSync ͷ༷มߋ 23→24 ࢀߟ: https://developer.android.com/reference/android/content/ContentResolver.html
ࢦఆִ͕ͨؒ͠15ʹؙΊΒΕΔ 23→24 ࢀߟ: https://developer.android.com/reference/android/content/ContentResolver.html
UIͷද͚ࣔͩमਖ਼ 23→24
24→25 (Android 7.0→7.1)
OK 24→25
25→26 (Android 7.1→8.0)
ϏϧυΤϥʔ 25→26
ActionBarActivity ͷআ 25→26 ࢀߟ: https://android-developers.googleblog.com/2015/04/android-support-library-221.html
ରԠྫ import android.support.v7.app.ActionBarActivity; // ... public class BaseActivity extends ActionBarActivity
{ // ... }
ରԠྫ import android.support.v7.app.AppCompatActivity; // ... public class BaseActivity extends AppCompatActivity
{ // ... }
26→27 (Android 8.0→8.1)
OK 26→27
27→28 (Android 8.1→9.0)
࣮ߦ࣌Τϥʔ 27→28
org.apache.http.legacy ͷআ 27→28 ࢀߟ: https://developer.android.com/about/versions/pie/android-9.0-changes-28
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest ... > ... <application ...
> <uses-library android:name="org.apache.http.legacy" android:required="false"/> ... </application> </manifest> ࢀߟ: https://developer.android.com/about/versions/pie/android-9.0-changes-28
·ͱΊ
Ұཡ "1*Ϩϕϧ 04όʔδϣϯ ग़͖ͯͨ՝ PSHBQBDIFIUUQͷআ
࣮ߦ࣌ύʔϛογϣϯͷ༷Ճ $POUFOU3FTPMWFSBEE1FSJPEJD4ZODͷ༷มߋ "DUJPO#BS"DUJWJUZͷআ PSHBQBDIFIUUQMFHBDZͷআ
ෛ࠴ͨ͘͞ΜͬͯΔ…
͋Γ͕ͱ͏͍͟͝·ͨ͠