æè¡é¨ã¢ãã¤ã«åºç¤ã°ã«ã¼ãã® ããã¾ã«ã大好ã( id:nein37 ) ã§ããä»åã¯ã¯ãã¯ãããã«ããã Android ã¢ããªã® minSdkVersion ã 21 ã«ãã話ãç´¹ä»ãã¾ãã
ã¯ãã¯ãããã®ã¢ãã¤ã«ã¢ããªã§ã¯ã¦ã¼ã¶ã¼ã5%åå¨ãããã©ãããã©ã¼ã ã§ã¯ãµã¼ãã¹ãç¶æããã¨ããã«ã¼ã«ãåå¨ãã¦ãã¦ãããæ°å¹´ã¯ãã®ã«ã¼ã«ã«å¾ã£ã¦ minSdkVersion ãæ±ºãã¦ãã¾ããã æå¾ã«æ´æ°ãããã®ã¯2016å¹´7æã®ãã¨ã§ããã®ã¨ã㯠Android 4.0.x (API level 14-15) ã®ã·ã§ã¢ã 5% ãä¸åã£ããã minSdkVersion ã 16 ã«æ´æ°ãã¾ããã ãã®å¾ã Android 4.1ã(API level 16) ã®ã·ã§ã¢ã5%ãä¸åã£ãéã« minSdkVersion ãè¦ç´ãæ©ä¼ã¯ããã¾ããããåãã Jelly Bean ã§ãã 4.2 ã®ã·ã§ã¢ãé«ã 4.1 ã ããµãã¼ãå¤ã«ãã¦ããã¾ã广ãè¦è¾¼ããªããã¨ãã minSdkVersion ã®æ´æ°ã¯è¡ãã¾ããã§ããã
ãã®ãããªç¶æ³ã1å¹´è¿ãç¶ãã¦ããã®ã§ãããæè¿ã¯ãã¯ãããã¢ããªã ãã§ãªãå½å åãã¢ããªå ¨ä½ã® minSdkVersion ããªã·ã¼ãè¦ç´ãæ©ä¼ããã£ãããããã®å å®¹ãæ¸ãã¦ãããã¨æãã¾ãã
minSdkVersion ã®å®æçãªæ´æ°ãå¿ è¦ãªçç±
Android ã«ã¯ Support Library ã¨ããå¤ããã¼ã¸ã§ã³ã®OSã«æ°ããæ©è½ãããã¯ãã¼ãããããã®ã©ã¤ãã©ãªãããã¾ãã(Google I/O 2018 ã§ã¯ããã«æ°æ©è½ã追å ãã Jetpack ã¨ããæ çµã¿ãçã¾ãã¾ãã) ã¾ãã Google Play ãµã¼ãã¹ã Firebase ã¨ãã£ãã©ã¤ãã©ãªãç¬ç«ããã©ã¤ãã©ãªã¨ãã¦æä¾ããã¦ãããããAndroid 4.0 (API level 14) 以ä¸ã§ããã°ã»ã¨ãã©ã®æ©è½ãå©ç¨ãããã¨ãã§ãã¾ãã Android éçºã§ã¯ãããã®ã©ã¤ãã©ãªã«ãã£ã¦å¤ãOSã§ããã£ã¦ãããç¨åº¦ä¸èªç±ãªãéçºãéç¨ãã§ããããã«ãªã£ã¦ãã¾ããããã¯ãéçã¯åå¨ãã¦ãã¾ãã
æ°æ©è½ã®ããã¯ãã¼ããé ããã¾ãã¯ä¸ååã§ãã
æè¿ã§ã¯æ°ããOS(API level)ã® Developer Preview æä¾ã¨ã»ã¼åæã«æ°ãã Support Library ã® alpha ãæä¾ãããããã«ãªãã¾ããã
ãããããã®ä¸ã§ãå¤ãOSåãã«ããã¯ãã¼ãããã¦ããªãæ°æ©è½ããããã©ã®OSãã¼ã¸ã§ã³ã§ãææ°OSã¨åãæ©è½ãæä¾ã§ããã¨ããããã§ã¯ããã¾ããã
ãã¨ãã°ã ImageView#setImageTintList()
ã¨ããã¡ã½ãã㯠Android 5.0 (API level 21) ããæä¾ããã¦ãã¾ããã Support Library ã® AppCompatImageView
ã« setImageTintMode()
ã追å ãããã®ã¯2017å¹´7æãªãªã¼ã¹ã® v26 ããã§ã v25 ã§å
¥ã£ã background tint ã®ãµãã¼ãããã¯7ã¶æé
ãã¦ãã¾ãã
ã¾ããåããAndroid 5.0 (API level 21) ã§å°å
¥ããã JobScheduler
㯠Android 5.0 以ä¸ã§ããå©ç¨ã§ãããéå»ã®OSåãã®ããã¯ãã¼ãã§ãã GcmNetworkManager
ã Firebase JobDispatcher
ã§ãã®æ©è½ããã¹ã¦ç½®ãæãããã¨ã¯ã§ãã¾ããã
ãã®ä¸æ¹ã§ JobScheduler
以åã«å©ç¨ããã¦ãã AlarmManager
ã WakefulBroadcastReceiver
ãªã©ã®å¶éã¯OSãã¼ã¸ã§ã³ã¢ããã®ãã³ã«å³ãããªã£ã¦ãããã²ã¨ã¤ã®å®è£
ã§å
¨ã¦ã®OSã«åãæ©è½ãæä¾ãããã¨ãé£ãããªã£ã¦ãã¾ãã
ãã®ããã«å¤ãOSãåå¨ãããã¨ã§ã¢ããªã®æ§æèªä½ãè¤éåãã¦ãã£ã¦ãã¾ããããã¢ããªã®å¥å ¨ãªéçºå¹çãç¶æããããã«ã minSdkVersion ã®å®æçãªè¦ç´ãã¯å¿ è¦ã§ãã
ããã¯ãã¼ãä¸å¯è½ãªæ©è½ã®å·®ç°ãåå¨ãã
ä¾ãã°ã以ä¸ã®ãããªOSãã¼ã¸ã§ã³ãã¨ã®å·®ç°ã¯ Support Library ã§ã¯åãããã¨ãã§ãã¾ããã
- WebView ã®æå
- Android 4.4 (API level 19)ããåã®ãã¼ã¸ã§ã³ã§ã¯OSã«çµã¿è¾¼ã¾ããWebViewã³ã³ãã¼ãã³ããå©ç¨ããã
- Android 4.4 (API level 19) ã§ã¯ Chromium ãã¼ã¹ã«ãªã£ãããã¼ã¸ã§ã³ã¯åºå®ã§æ´æ°ãããªã
- Android 5.0 (API level 21) 以éã§ã¯ Chromium ãã¼ã¹ã®ææ°ã®ã³ã³ãã¼ãã³ããæä¾ããã
- ã¡ãã£ã¢ãµãã¼ã
- åç»ã鿢ç»ã®ãµãã¼ãç¶æ³ã¯OSãã¼ã¸ã§ã³ã«ãã£ã¦ç°ãªã(ãã ãã ExoPlayer ãªã©ç¬èªã®ã¡ãã£ã¢ãµãã¼ããæä¾ããã©ã¤ãã©ãªã¯åå¨ãã)
- MediaSessionãªã©ã®åçé¢é£UI㯠5.0 ãã追å ããã
- TLS 1.1, 1.2ãµãã¼ã
- TLS 1.1, 1.2 ã®å®è£ 㯠Android 4.1 ããå«ã¾ãã¦ããããããã©ã«ãã§æå¹ã«ãªã£ãã®ã¯ 5.0 ãã
ãããã®æ©è½ã«å¼·ãä¾åãããµã¼ãã¹ã®å ´åã minSdkVersion ãä¸ãã以å¤ã®é¸æè¢ã¯ãªããªãã¾ãã
ã¹ãã¼ããã©ã³ã»ã¿ãã¬ãã以å¤ã®ãã©ãããã©ã¼ã ãµãã¼ã
Android Auto ã Android TV ã¨ãã£ããã©ãããã©ã¼ã 㯠Android 5.0 (API level 5.0) ãã追å ããã¾ããããããã®æ©è½ã¯ãã minSdkVersion ã®ä½ãã¹ãã¼ããã©ã³åãã®ã¢ããªã«å梱ãããã¨ãã§ãã¾ãããããããã®æ©è½ã¯å¤ãOSã®ç«¯æ«ããå¼ã³åºããããã¨ãæ³å®ãã¦ãã¾ããã
ããã¯æ¥µç«¯ãªä¾ã§ãããAndroid TV ã§å®éã«çºçããåé¡ã«ã¤ãã¦èª¬æãã¦ã¿ã¾ããããAndroid TVã§ã¯TV端æ«ã®å¤å®ã®ããã« UI_MODE_TYPE_TELEVISION
ãåç
§ããããã«å
¬å¼ããã¥ã¡ã³ãã«æ¸ãã¦ããã¾ãã
ã¨ãããããã®ãã©ã°èªä½ã¯API level 1ããåå¨ãããã®ã§ãããä¸é¨ã®STBå端æ«ã¯ãã®ãã©ã°ãæå¹ã«ãªã£ã¦ããããã Android 4.0(API level 14) ã®ç«¯æ«ã§ããã«ãé¢ãããTV端æ«ã¨ãã¦å¤å®ããã¾ãã
é常ãTV ã¯ãã¼ã ã¢ããªãåç
§ãã category ãã¹ãã¼ããã©ã³ã»ã¿ãã¬ããã¨ç°ãªãããç»é¢ãåé¢ããã¦ãã¾ãããä¸è¨ã®ãã©ã°ã ãã«é ¼ã£ã¦ TV å¤å®ãè¡ã£ã¦ leanback ã©ã¤ãã©ãªã®æ©è½ãå¼ã³åºããããã端æ«ã®APIã¬ãã«ã«åå¨ããªãã¡ã½ãããå¼ã³åºãã¦ã¯ã©ãã·ã¥ãããã¨ãããã¾ããã(leanback ã©ã¤ãã©ãªã® minSdkVersion 㯠17 ã«è¨å®ããã¦ãããããããå¤ãOSããå¼ã³åºããå ´åã®åä½ã¯ä¿è¨¼ããã¾ãã)
ãã®ãããªäºæ ãé²ãããã«ã æ°ãããã©ãããã©ã¼ã ããµãã¼ãããå ´å㯠minSdkVersion ãè¦ç´ããã»ããè¯ãå ´åãããã¾ãã
ãµãã¼ãå¤ã¨ãªã£ãOSã¯ã©ããªãã®ãï¼
ããã¯æ°ããã¢ããªã®ãªãªã¼ã¹å¾ã以åã®APKãã©ããããã«ãã£ã¦å¤ãã£ã¦ãã¾ãã
ä½ãããªãã£ãå ´åã minSdkVersion ã uses-feature ãç°ãªãAPKãé ä¿¡ãããã¨éå»ã®APKã¨æ°ããAPKã¯åæã«é ä¿¡ããç¶ãã¾ãã ãã®ç¶æ ã§ã¯ææ°ã®APKã§ãµãã¼ãå¤ã¨ãªã£ã端æ«ã§ã以åã®APKãæ°è¦ã«ã¤ã³ã¹ãã¼ã«ã§ãã¾ãã ãã®ç¶æ ã§ã¯ã¦ã¼ã¶ã¼ããã¯æ®éã«èªåã®ç«¯æ«ã§ã¢ããªã®ã¤ã³ã¹ãã¼ã«ãå©ç¨ãã§ãããããèªèº«ã®ç«¯æ«ããµãã¼ãå¤ã¨ãªã£ããã¨ã¯ãããã¾ããã
䏿¹ãPlayã³ã³ã½ã¼ã«ããå¤ãAPKãç¡å¹ã«ãããã¨ãã§ãã¾ãã ãã®å ´åãææ°ã®APKã§ãµãã¼ããããªããªã£ã端æ«ã§ã¯ã¢ããªã®ã¤ã³ã¹ãã¼ã«ãã§ããªããªããã¢ããªã®ãµãã¼ãå¤ã§ãããã¨ããããããã«ãªãã¾ãã
OSã®ãµãã¼ããã¼ã¸ã§ã³ã夿´ããæ¹æ³ã¨ãã¦ã minSdkVersion ã®åãä¸ããè¡ãã¤ã¤å¤ãAPKã¯æå¹ã«ãã¦ãããå¤ãOSã®ã·ã§ã¢ãä½ããªã£ãæç¹ã§éå»ã®APKãç¡å¹ã«ãããã¨ãæ¹æ³ãåããã¨ãã§ãã¾ãã
minSdkVersion ãã©ã®å¤ã«ããã¹ããï¼
minSdkVersion ã®è¨å®å¤ã決ããããã®åºæºã¯2ã¤ããã¾ãã
OSãã¼ã¸ã§ã³ãä¸å®ã®ã·ã§ã¢ãä¸åã£ã¦ãããã®ããµãã¼ãå¤ã¨ãã
minSdkVersion ãä¸ããçç±ã¯ä¸»ã«éçºã»éç¨ã®å¹çåã®ããã§ãããå½ç¶ãµãã¼ãå¤ã¨ãªã£ãOSãã¼ã¸ã§ã³ã«ã¯ã¢ãããã¼ãã«ããææ°ã®ãµã¼ãã¹ãå±ãããã¨ãã§ããªããªã£ã¦ãã¾ãã¾ãã ã¾ãããµãã¼ãå¤ã¨ãªã£ãOSåãã«é ä¿¡ããã¦ããã¢ããªã«è´å½çãªãã°ããã£ãå ´åãã¢ãããã¼ãã«ãã解決ãè¡ããã¨ãã§ããªããªãã¾ãã
ãããã®åé¡ã«ããã¦ã¼ã¶ã¼ã¸ã®æªå½±é¿ãæå°éã«ãããããã¯ãã¯ãããã§ã¯å¯¾è±¡ã®OSãã¼ã¸ã§ã³ã 5% ãä¸åã£ãå ´åã« minSdkVersion ãæ´æ°ãã¦ããããã¨ããã«ã¼ã«ãè¨ãã¦ãã¾ãã ç´è¿ã§ã¯ã¯ãã¯ãããã¢ããªã®OSãã¼ã¸ã§ã³ãã¨ã®ã·ã§ã¢ã¯å¤§ã¾ãã«ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ããã
OSãã¼ã¸ã§ã³ | API level | ã·ã§ã¢ |
---|---|---|
5.0.x | 21 | 13.60% |
4.4.x | 19 | 7.9% |
4.3.x | 18 | 0.16% |
4.2.x | 17 | 3.67% |
4.1.x | 16 | 0.87% |
Android 4.1-4.3 ã¯ä¸è¬ã« Jelly Bean ã¨å¼ã°ãã¦ãããã¼ã¸ã§ã³ã§ã以忤è¨ããéã«ã¯ããµãã¼ã対象å¤ã«ããã¨ãã¯ãªãã¹ãä¸ç·ã®ã¿ã¤ãã³ã°ã§ãããããã¨ãã夿ã«ãã¦ãã¾ããã 以å㯠Andoroid 4.2(API level 17) ã®ã·ã§ã¢ã 5% ãä¸åã£ã¦ããããè¦éãã¾ããããä»å㯠Jelly Bean å ¨ä½ã§åè¨ãã¦ã 5% ãä¸åã£ã¦ããããµãã¼ãå¤ã¨ãããã¨ãã§ããããã¨ãã夿ã«ãªãã¾ãã
æ©è½é¢ã»éçºå¹çã§æ¯è¼ãã¦å¤§ããªã¡ãªããããããããªãã®ãé¾å¤ã¨ãã
åè¿°ã®éããé常㮠5% ã«ã¼ã«ã§ã¯ Jelly Bean ããµãã¼ãå¤ã«ã§ãããã¨ãããã¨ããããã¾ããã ããããAndroid 4.4 (API level 19) ãããè¦ãã¨ã·ã§ã¢ 7.9% ã¨ããä½ãã®å¤ã§ããããã²ã¨æãã¨ã« 0.5% ãä¸åããã¼ã¹ã§æ¸å°ãç¶ãã¦ãã¾ããããã®ã¾ã¾ã ã¨å年以å ã« 5% ãåãããã§ãã ããã§ã minSdkVersion ã Android 4.4 (API level 19) ã¨ããå ´å㨠Android 5.0 (API level 21) ã¨ããå ´åã§ç°¡åã«æ¯è¼ãã¦ã¿ããã¨ã«ãã¾ããã
- Android 4.4 (API level 19)
- AlarmManager ã®æå夿´ãã¹ãã¬ã¼ã¸é¢é£ã®å¤æ´ãªã©ãæå夿´ã®é¾å¤ã¨ãªãé¨åã¯å¤ãã
- ãã ã Android 5.0 ã§ã¯
JobScheduler
ãå°å ¥ããAlarmManager
ã®ç¨éãçã¾ã£ã¦ãã
- ãã ã Android 5.0 ã§ã¯
- WebView ã Chromium ãã¼ã¹ã«ãªã£ã¦ããã ã¦ã§ããã¼ã¸å´ã®æ¹ä¿®ã楽
- ãã ã WebView ã³ã³ãã¼ãã³ãã®ã¢ãããã¼ã㯠Android 5.0 ãã
- AlarmManager ã®æå夿´ãã¹ãã¬ã¼ã¸é¢é£ã®å¤æ´ãªã©ãæå夿´ã®é¾å¤ã¨ãªãé¨åã¯å¤ãã
- Android 5.0 (API level 21)
- JobScheduler ãCamera2 API ãªã©éå»ã®OSã§ã¯å©ç¨ã§ããªã大ããªå¤æ´ã夿°å«ã¾ãã¦ããã
- Material Design ã«ãã¤ãã£ã対å¿ãã¦ãããã¬ã¤ã¢ã¦ãXMLã§ã®å±æ§æå®ãªã©ã«SDKå´ã®ãã®ãå©ç¨ã§ããã
- ç¾ç¶
JobScheduler
ãå©ç¨ãã¦ããæçããããªã©ã§OSãã¼ã¸ã§ã³ãã¨ã®æ©è½å·®ãåå¨ãã¦ãããããã®ãã¼ã¸ã§ã³ã¾ã§ minSdkVersion ãå¼ãä¸ãããã¨ã§å é¨ã®åå²ããªããªã
ä¸è¨ãè¸ã¾ããã¼ã å ã§è°è«ããçµæãä»åã®è¦ç´ãã§ minSdkVersion ã Android 5.0 (API level 21) ã¨ããå ´åããã£ã¨ãéçºå¹çãå¼ãä¸ãããã¨ãã§ããã¨ããçµè«ã«ãªãã¾ãããã¡ããã©æ°è¦ã®ã¢ããªã®éçºã»ãªãªã¼ã¹ãããã¤ãæ§ãã¦ãããã¨ããããåå¹´å¾ã«å度 minSdkVersion ãè¦ç´ããããåå¹´ååãã«ãã¦ç¤¾å ã®å½å åãå ¨ã¢ããªã« minSdkVersion 21 ãé©ç¨ãããã¨ã§å¤§ããªã¡ãªãããããã¨å¤æããããã§ãã
社å ã§ã©ã®ããã«ãã¼ã¸ã§ã³ã·ã§ã¢ã®å¤æ´è°è«ãé²ããã
åè¿°ã®éããéçºå¹çã»éç¨å·¥æ°ã®æ¹åãã¨ãã観ç¹ã§ã¿ãå ´åãæã广ããããããªé¾å¤ã¯ Android 5.0 (API level 21)ã§ããããAndroid 4.4(API level 19) ã® 7.9ï¼ ã®ã¦ã¼ã¶ã¼ã¨ããã·ã§ã¢ã¯ããªã大ãããã®ã§ãã ãã§ã«å¤æ°ã®ã¦ã¼ã¶ã¼ãæ±ããã¯ãã¯ãããã¢ããªã§ã¯ãµã¼ãã¹é¢ã§ã®è²¬ä»»ããã£ã¦ããé¨ç½²ã¨ä½åº¦ãç¸è«ãéãã¦æ éã«é²ãã¦ãããã¨ã«ãªãã¾ããã
䏿¹ãããããªãªã¼ã¹ããæ°è¦ã®ã¢ããªã§ã¯æ¢åã¦ã¼ã¶ã¼ã¸ã®å½±é¿ãèããªãã¦è¯ããããã¾ãã¯ãã¡ãã®ãã¼ã ã«minSdkVersion ã 21 ããå§ãããã¨ã®ã¡ãªããã«ã¤ãã¦ãAndroid ã¢ããªã® minSdkVersion(æå°ãµãã¼ãOSãã¼ã¸ã§ã³) 㯠Android 5.0 以é ã«ãã¹ããã¨ããããã°ãæ¸ãããéçºãã¼ã ã«ç´æ¥èª¬æããããã¦å ±æãã¾ããã ãããã®åãçµã¿ã®çµæãcookpadTVã¢ããªãã¯ãã¯ãããMYãããã³ã¢ããªã®ãããã minSdkVersion 21 ããã®ã¹ã¿ã¼ãã¨ãªãã¾ãããä»å¾ãªãªã¼ã¹ãããæ°è¦ã®ã¢ããªã«é¢ãã¦ãå ¨ã¦ minSdkVersion 21 以ä¸ã¨ãªãè¦è¾¼ã¿ã§ãã
ã¯ãã¯ãããã¢ããªã«ãããé©ç¨ã¯å½å Android 4.4 (API level 19) ã®ã¦ã¼ã¶ã¼ã·ã§ã¢ 7.9% ã¨ããå²åã®å¤ãããè¦éããããã«ãªãã¾ããããã¢ããªå ¨ä½ã®ãªãã¡ã¯ã¿ãªã³ã°ã®ããã®æéãå§ã¾ããããã®æéåã«é©ç¨ãããã¨ããã¹ããªã¿ã¤ãã³ã°ã§ãããã¨ã説æããããã¦ã¼ã¶ã¼ã·ã§ã¢ã®æ¸å°çã®å¾åãWebãã¼ã¸ã®å·®ãæ¿ãã«ããæ¹åã¯å¼ãç¶ãå¯è½ã§ãããã¨ã説æããããçµå¶å±¤ã¨ã®ãã¯ãã¯ãããã¢ããªã®éçºãé«éåããããã«ã¯ã©ãããã°ããã䏿¦æ°åã度å¤è¦ãã¦èãã¦ã¿ããã¨ããå ´ã§åãä¸ãããããçµæãè¿æ¥ä¸ã« minSdkVersion 21 ã«å¼ãä¸ãããã¨ã«ãªãã¾ããã ç¾å¨ç´°ãããªãªã¼ã¹æ¥æã調æ´ä¸ã§ãéçºç°å¢ã«ãããããåæ è¦è¾¼ã¿ã§ãã minSdkVersion ã®æ´æ°å¾ã代æ¿ãªã½ã¼ã¹ã®æ´çãã¬ã¤ã¢ã¦ããã¡ã¤ã«ã®è¦ç´ããªã©ãããããã¨ããã£ã±ãã§ä»ããã¨ã¦ã楽ãã¿ã§ãã
ãã¾ã
ä»åã®åãçµã¿ã®æä¸ã« minSdkVersion ã¨ããè¬ã®ã¢ã«ã¦ã³ããå¤ã 21 ã«æ´æ°ãã¦ãã¾ããã ä¸ççã« minSdkVersion 21 ã®æµããæ¥ã¦ããã®ã ã¨æãã¾ãã
21
— minSdkVersion (@minSdkVersion) 2018å¹´4æ23æ¥
æå¾ã«
ä»åã¯ã¢ãã¤ã«åºç¤ã®åãçµã¿ã¨ãã¦Androidã¢ããªã® minSdkVersion ã 21 ã«ãã話ãç´¹ä»ãã¾ããã ã¢ãã¤ã«åºç¤ã§ã¯ä»å¾ãå¼ãç¶ãã¦ã¼ã¶ã¼ãµãã¼ãã¨ã®ãã©ã³ã¹ãåããªããéçºå¹çãé«ããåãçµã¿ãè¡ã£ã¦ããäºå®ã§ãã ã¯ãã¯ãããã§ã¯ã¢ãã¤ã«åºç¤ã¨ä¸ç·ã« minSdkVersion 21 ã§ã¢ããªéçºãè¡ããã仲éãéçºãå¹çåããä»çµã¿ã¥ããã«èå³ããã仲éãåéãã¦ãã¾ãã