compileSdkVersion, minSdkVersion 和 targetSdkVersion的选择
2016-11-21 16:55
363 查看
compileSdkVersion
指定apk编译时的用的哪个 Android SDK 版本, compileSdkVersion 不会改变apk运行时的行为,不会被编译到 APK 中:它只是在编译的时候使用。minSdkVersion
apk只能运行在版本>=minSdkVersion的Android手机上,其中v4和v7包的 minSdkVersion 分别是 4和7 ,也就是说v4包只能在API 4以上的手机上才能运行,所以你的应用的minSdkVersion要>=4targetSdkVersion
targetSdkVersion 是 Android 提供向前兼容的主要依据(md,什么意思啊),先看代码理解一下吧,源码来自AlarmManager.java,compileSdkVersion = 23private final boolean mAlwaysExact; private final int mTargetSdkVersion; /** * package private on purpose */ AlarmManager(IAlarmManager service, Context ctx) { mService = service; mTargetSdkVersion = ctx.getApplicationInfo().targetSdkVersion; mAlwaysExact = (mTargetSdkVersion < Build.VERSION_CODES.KITKAT); } private long legacyExactLength() { return (mAlwaysExact ? WINDOW_EXACT : WINDOW_HEURISTIC); } ... public void set(int type, long triggerAtMillis, PendingIntent operation) { setImpl(type, triggerAtMillis, legacyExactLength(), 0, 0, operation, null, null); } private void setImpl(int type, long triggerAtMillis, long windowMillis, long intervalMillis, int flags, PendingIntent operation, WorkSource workSource, AlarmClockInfo alarmClock) { if (triggerAtMillis < 0) { /* NOTYET if (mAlwaysExact) { // Fatal error for KLP+ apps to use negative trigger times throw new IllegalArgumentException("Invalid alarm trigger time " + triggerAtMillis); } */ triggerAtMillis = 0; } try { mService.set(type, triggerAtMillis, windowMillis, intervalMillis, flags, operation, workSource, alarmClock); } catch (RemoteException ex) { } }
代码中可以看出当targetSdkVersion小于19时windowMillis = WINDOW_EXACT, 而大于等于19时windowMillis = WINDOW_HEURISTIC。也就是说当targetSdkVersion<19的时候,及时手机android版本>19,也不会运行最新的api。
即在应用的 targetSdkVersion 没有更新之前系统不会应用最新的行为变化
这里再多说一嘴,都知道android6.0后,是运行时权限,但是想要实现运行时权限需要满足下面两个条件:
android版本6.0以上的手机
targetSdkVersion更新到23以上
support 路径以及版本号:
D:\AppData\Local\Android\sdk\extras\android\m2repository\com\android\support
相关文章推荐
- Android Studio 使用教程(二十)之如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- android开发如何选择compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- [置顶] 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- android开发如何选择compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- compileSdkVersion,minSdkVersion,targetSdkVersion作用和如何选择关系
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- Android学习笔记 ----如何选择compileSdkVersion, minSdkVersion 和 targetSdkVersion区别
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion