首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在安卓中以编程方式获取"CompileSdkversion“

如何在安卓中以编程方式获取"CompileSdkversion“
EN

Stack Overflow用户
提问于 2021-11-11 21:29:55
回答 3查看 96关注 0票数 2

我在我的应用程序中有一个关于框,它显示关于应用程序、电话和它使用的数据的信息。当用户遇到问题时,它非常有用。我可以通过"android.os.Build.VERSION.SDK_INT“获取手机的SDK版本。然而,我还没有找到一种方法来获取"CompileSdkversion“的值,该值表示应用程序编译时使用的SDK版本。这是在build.gradle文件中设置的值。

EN

回答 3

Stack Overflow用户

发布于 2021-11-11 21:43:21

虽然安卓操作系统的版本因用户而异,但compileSdkVersion并非如此。对于应用程序的X.Y.Z版本,compileSdkVersion是您在编译该应用程序版本时所说的任何内容。只要你的about框包含应用程序版本,你就知道你使用了什么compileSdkVersion,如果你跟踪它的话(例如,检查它在你的版本控制系统中是什么)。

但是,如果您真的想让它在运行时可用,您有两个选择。

如果您的minSdkVersion31或更高版本,您可以使用use compileSdkVersion on ApplicationInfo。然而,最有可能的是,如果你在2026年之前阅读这篇文章,你的minSdkVersion会低于那个数字。

对于比Android12更老的设备,你可以为它添加一个BuildConfig字段,至少在新版本的Android Gradle插件中是这样的:

代码语言:javascript
运行
复制
android {
  compileSdk 31

  defaultConfig {
    applicationId "com.commonsware.android.myapplication"
    minSdk 23
    targetSdk 31
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    buildConfigField "int", "COMPILE_SDK_VERSION", "$compileSdk"
  }

  // other stuff goes here
}

这将获取您为compileSdk定义的值,并将其提升到BuildConfig.COMPILE_SDK_VERSION中,以便您可以在运行时引用它。这是使用一个废弃的北极福克斯项目,使用Android Gradle插件的Gradle 7.0.2和7.0.3进行测试的。

票数 3
EN

Stack Overflow用户

发布于 2021-11-12 01:32:34

下面是这三个值之间的关系:

minSdkVersion (尽可能低) <= targetSdkVersion == compileSdkVersion (最新的SDK)

CompileSdkVersion与设备可以和不能运行你的应用程序无关。通常,您将其设置为Android SDK的最新版本。

targetSdkVersion应该经过全面测试,小于或等于compileSdkVersion。(这取决于你的应用程序)

如果您使用的是API级别26的功能,那么您需要使用compileSdkVersion 26,较低的版本会给您一个错误。Android支持向后兼容(即在26上编译的应用程序也可以在API级别为26或更低的手机上运行)。

票数 1
EN

Stack Overflow用户

发布于 2021-11-11 21:35:56

考虑到您的用例,显示当前应用程序版本不是更好的方法吗?如果你知道版本,你可以查询它是如何/何时创建的(例如,通过git标签),然后找出编译它时使用的SDK版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69935139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档