背景:
阅读新闻

AndroidのcompileSdkVersionとかbuildToolsVersionとか

  作者: 今日评论: [字体: ]

build.gradleに指定する、compileSdkVersionやtargetSdkVersionなどの説明。

compileSdkVersion

Javaのソースをコンパイルするときに使うSDKのバージョン。新しいSDKではAPIやandroid.R.id.xxxの定義が追加されていたりする。

例えば、ViewのrequestUnfufferedDispatchはAPIレベル21で追加されているので、このAPIを使う場合にはcompileSdkVersionは21以上にする必要がある。

buildToolsVersion

ビルドに使うツールチェイン(aapt/dxなど)のバージョン。上位互換なので、最新バージョンを追っていってもあまり問題はない。

SDKバージョンと連動していて、あるバージョンのSDKがリリースされると、一緒に対応する.0.0のバージョンのbuildToolsがリリースされる。例えばAPI 20がリリースされたときには、20.0.0のbuildToolsがリリースされた。

compileSdkVersionの値以上にする必要がある。

minSdkVersion

このバージョン未満の端末には、アプリをインストールできなくなる。アプリの動作には影響はない。

targetSdkVersion

targetという意味が分かりにくいが、どのバージョンの端末を念頭に置いて開発されたかを表す。この値を変えると、アプリの見た目や挙動が変わるので注意が必要。

例えば、targetSdkVersionが19(Kitkat)の場合、

  • 端末バージョンが19以下の場合、特に影響はない。
  • 端末バージョンが20(Lollipop)以上の場合には、19互換モードでアプリが動く。アプリの見た目は19の見た目になり、20で新たに導入された挙動はOFFになる。


targetSdkVersionで挙動が変わる例:

  • 19以上の端末でtargetSdkVersionを19以上にすると、AlarmManagerのset()でセットしたアラームのなるタイミングは若干不正確になる(バッテリ消費を抑えるため)
  • 14以上の端末でtargetSdkVersionを14以上にすると、hardware accelerationがデフォルトでONになる。
  • 10以上の端末でtargetSdkVersionを10以上にすると、UIスレッドでネットワークアクセスできなくなる。

公式ドキュメントのtargetSdkVersionには、テストした端末のバージョンを書けと書いてあるが、まさにその通り。20の端末でしかテストしていないのにtargetSdkVersionを21にすると、21の端末で動かない可能性がある。

来源:http://assam-at-night.blogspot.jp/2015/05/androidcompilesdkversionbuildtoolsversi.html
录入日期:[2016/11/10 0:15:00]
收藏 推荐 打印 | 录入:mikebai | 阅读:
文章评论      
正在加载评论列表...
评论表单加载中...