首页 文章

什么是compileSdkVersion?

提问于
浏览
2

昨天刚刚从Eclipse迁移到Android工作室,我正在努力解决所有问题 . 在我的构建等级中,我现在看到“compileSdkVersion”,我似乎无法弄清楚它是什么 . 我知道minSdk告诉GooglePlay该应用程序可以处理的设备有多大 . 而且targetSdk告诉设备天气是否应切换到向前兼容性 . 但我不知道compileSdk是什么以及我应该怎么做 . 另外,作为一个附带问题,如果我将targetSdk设置为21,则在sdk 16上运行的设备将以兼容模式运行?谢谢你的帮助!对此,我真的非常感激!

编辑:我恳请不要将我链接到Android开发者网站 . 我已经阅读了它,我不明白为什么编译不同的sdk会产生差异,如果已经有min,max和target sdk版本 . 再次,非常感谢您的帮助!

这是gradle代码 .

apply plugin: 'com.android.application'

android {
compileSdkVersion 17 
buildToolsVersion "19.1.0"

defaultConfig {
    applicationId "com.devname.myapp"
    minSdkVersion 10
    targetSdkVersion 21
}

buildTypes {
    release {
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
    }
}
}

dependencies {
compile 'com.android.support:support-v4:21.0.0'     
compile files('libs/libGoogleAnalyticsServices.jar')
}

5 回答

  • 4

    compileSdkVersion 指定了编译目标here

  • 0

    Android版本,将用于编译 . 所以最好不要担心,并把它与目标一样 . 祝一切顺利;)

  • 0

    compileSdkVersion 是API的版本,将用于编译以达到某些兼容性目的,正如其他回答fellas所说的那样

    例如:预蜂窝设备有“选项”(设置?)按钮,所有这些按钮都有物理键 . 如果你有一个没有物理键的设备(仅在屏幕上,蜂窝状和向上),当你使用API 8进行编译时,你会得到切换应用程序按钮(右上角)旁边的菜单指示器(三个点按钮),但是当用11编译它时将会消失 - 这三个点应该在你的ActionBar上(或者用于打开菜单的任何方法)

    另外:如果你在Eclipse中寻找 compileSdkVersion 这个数字是右键单击项目 - >属性 - > Android(并在列表中)或者你可能只需打开 project.properties 文件(pre-ics default.properties )并寻找 target (是的,在这里命名为 target

  • 4

    对我的帖子的回复很棒,但是我需要它对我愚蠢 .

    My long in-dept explanation is here.

    TL;DR of my in-depth explanation

    targetSdk 表示您已在该设备上对其进行了测试,并且您的应用程序 guaranteed 可以在每台设备上运行 . 它基本上是一个"heads up"到android说你的应用程序将在所有事情上工作 . If the device version is higher that this, android会自动将兼容性设置应用于相关设备 . If the android version is lower than this, 它会正常工作,因为targetSdk意味着UP TO你的应用程序设置为什么版本 . 如果我设置了targetSdk 16,则所有16个以上的设备都能正常工作,所有使用16以上API版本的设备都会自动进入兼容模式,以使其正常工作 .

    compileSdk =您的应用使用了多少功能 . 如果它在Android L上使用 only available 的功能,那么您必须使用API 21编译您的应用程序,因为这是Android L的API版本 . 如果您使用较低的compileSdk版本,您的应用程序赢得了't build because it won' t能够找到的功能你的应用程序已经没有那些较低版本的功能 . 如果你的应用程序 does not 在更高版本上使用了 specifically 的功能,那么你可以不管它 . 平均而言,如果您的应用不使用新Android版本独有的任何内容,那么只需将compileSdk设置为17即可 .

    Wait, but what's the difference between targetSdk and compileSdk?

    好问题 . targetSdk基本上是Android操作系统的首选,“嘿,这个应用程序保证适用于所有设备,因为我测试了它 . ”

    compileSdk基本上与Android开发软件交谈“嘿,当你构建这个应用程序时,请确保你包含这个Android版本的所有功能,因为我需要这些功能才能让应用程序运行 .

    This is only if you use the features from that Android release!

    如果您没有在Lollipop中使用功能,那么没有理由将compileSdk设置为21!你为什么这样?您不需要它,因此没有理由使用所有这些额外功能来构建它 .

  • 0

    compileSDKVersion是您要编译的Android SDK(本质上是Android本身的版本)的版本 . 如果您使用较新的版本(更高的数字)进行编译,那么您将获得更多功能,但您需要记住,较新版本的android在较少的设备上运行,运行较旧版本的设备无法访问这些功能 . 最好的办法是将compileSDKVersion保持在最高版本以访问所有功能,但是然后将minSDKVersion设置为您计划支持的最低版本 .

    一个例子是将compileSDKVersion设置为21(最新的5.0Lollipop)然后将minSDKVersion设置为14(版本4.0,Ice Cream Sandwich) . 这样做可以为你提供5.0棒棒糖的所有功能,但允许它在4.0及以上的任何设备上运行,你需要做的就是确保你使用任何更新的功能支持旧版本应用可能正在运行 .

相关问题