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
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.7k
2019-05-18-gdg-kyoto-jakalada.pdf
jakalada
0
820
Other Decks in Technology
See All in Technology
Yamla: Rustでつくるリアルタイム性を追求した機械学習基盤 / Yamla: A Rust-Based Machine Learning Platform Pursuing Real-Time Capabilities
lycorptech_jp
PRO
4
200
論文紹介:LLMDet (CVPR2025 Highlight)
tattaka
0
280
「Chatwork」の認証基盤の移行とログ活用によるプロダクト改善
kubell_hr
1
240
LangSmith×Webhook連携で実現するプロンプトドリブンCI/CD
sergicalsix
1
180
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
120
Github Copilot エージェントモードで試してみた
ochtum
0
140
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
760
より良いプロダクトの開発を目指して - 情報を中心としたプロダクト開発 #phpcon #phpcon2025
bengo4com
1
3.2k
Core Audio tapを使ったリアルタイム音声処理のお話
yuta0306
0
160
250627 関西Ruby会議08 前夜祭 RejectKaigi「DJ on Ruby Ver.0.1」
msykd
PRO
2
440
生成AI開発案件におけるClineの業務活用事例とTips
shinya337
0
200
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
6
4.8k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Designing Experiences People Love
moore
142
24k
We Have a Design System, Now What?
morganepeng
53
7.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Why Our Code Smells
bkeepers
PRO
337
57k
Agile that works and the tools we love
rasmusluckow
329
21k
Fireside Chat
paigeccino
37
3.5k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
What's in a price? How to price your products and services
michaelherold
246
12k
Speed Design
sergeychernyshev
32
1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
240
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ͷআ
ෛ࠴ͨ͘͞ΜͬͯΔ…
͋Γ͕ͱ͏͍͟͝·ͨ͠