Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
mobilemethod-osaka-2018-11-09-jakalada-android
Search
Hideki Hamada
November 09, 2018
Technology
1.4k
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
950
Other Decks in Technology
See All in Technology
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.4k
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
250
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
3
240
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
440
Tab5をRubyで動くパソコンにする
kishima
2
280
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
1
1.1k
Webとヘルスデータ
yukukotani
1
200
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
610
プロダクトエンジニアに必要な「いい感じ」に作る能力 〜たくさん作れる時代に、どこまで作るかの決め方〜
jnishime_dresscode
2
1.4k
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
340
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
400
module Synths; end
asonas
1
130
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
820
Balancing Empowerment & Direction
lara
6
1.3k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
270
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
480
Are puppies a ranking factor?
jonoalderson
2
3.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
A Tale of Four Properties
chriscoyier
163
24k
A better future with KSS
kneath
240
18k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
730
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ͷআ
ෛ࠴ͨ͘͞ΜͬͯΔ…
͋Γ͕ͱ͏͍͟͝·ͨ͠