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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hideki Hamada
November 09, 2018
Technology
0
1.2k
mobilemethod-osaka-2018-11-09-jakalada-android
モバイルメソッド大阪 第4回 登壇資料「AndroidアプリのターゲットAPIレベルを上げたときのなんやかんや」
Hideki Hamada
November 09, 2018
Tweet
Share
More Decks by Hideki Hamada
See All by Hideki Hamada
AndroidアプリとWebコンテンツの連携 / Sansan Tech Meetup Android
jakalada
1
1.2k
devio2019osaka_hamada_hideki.pdf
jakalada
0
1.8k
2019-05-18-gdg-kyoto-jakalada.pdf
jakalada
0
880
Other Decks in Technology
See All in Technology
vLLM Community Meetup Tokyo #3 オープニングトーク
jpishikawa
0
350
楽しく学ぼう!コミュニティ入門 AWSと人が つむいできたストーリー
hiroramos4
PRO
1
200
猫でもわかるKiro CLI(AI 駆動開発への道編)
kentapapa
0
200
情シスのための生成AI実践ガイド2026 / Generative AI Practical Guide for Business Technology 2026
glidenote
0
240
Everything Claude Code を眺める
oikon48
3
2.9k
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
430
Claude Codeの進化と各機能の活かし方
oikon48
22
13k
楽しく学ぼう!ネットワーク入門
shotashiratori
4
3.2k
楽しく学ぼう!ネットワーク入門
shotashiratori
1
330
PMとしての意思決定とAI活用状況について
lycorptech_jp
PRO
0
120
オレ達はAWS管理をやりたいんじゃない!開発の生産性を爆アゲしたいんだ!!
wkm2
4
530
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
200
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.1k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
340
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Abbi's Birthday
coloredviolet
2
5.3k
The untapped power of vector embeddings
frankvandijk
2
1.6k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
New Earth Scene 8
popppiees
1
1.7k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
720
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
220
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
990
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ͷআ
ෛ࠴ͨ͘͞ΜͬͯΔ…
͋Γ͕ͱ͏͍͟͝·ͨ͠