我最近一直在学习Android系统,我有一个关于新Android系统库的问题。据我所知,AndroidX只是对支持库的一个新升级,其重点是为早期的Android SDK提供向后兼容性。
但是,Google要求"如果你想在一个新项目中使用AndroidX,你需要将编译SDK设置为Android 9.0(API级别28)或更高版本"。我在这里感到困惑。这是否意味着AndroidX实际上使用了一些仅在Android 9.0或更高版本上可用的API方法或功能?如果是这样,它如何为无法访问这些高级API方法的旧API提供向后兼容性?
我认为支持库对compileSdkVersion没有任何要求。
我在这里感到困惑,这是否意味着AndroidX实际上使用了一些仅在Android 9.0或更高版本上可用的API方法或功能?
没有AndroidX
可用于向后兼容的Android版本
阅读AndroidX概述
AndroidX
与Android操作系统分开发布,并提供跨Android版本的向后兼容性。有关更多信息,请阅读Android开发者关于Hello World、AndroidX的博客
还可以阅读更多关于compileSdkVersion
compileSdkVersion
compileSdkVersion
是告诉GradleAndroid SDK编译应用的方式。使用新的Android SDK是使用该级别中添加的任何新API的要求
我以前也有同样的问题。关键是,不要将minSdkVersion
与compileSdkVersion
混淆。如果你的minSdkVersion
是16,那么你的应用程序将支持Android API版本16。但要使用AndroidX,您需要确保compileSdkVersion
为28。你通常在编译应用程序时使用最新的Android SDK版本,所以这并不是什么新鲜事。
下面是一个应用程序构建示例。使用AndroidX的gradle文件。请注意带有compileSdkVersion
版本号的minSdkVersion
。
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
在IDE上开发应用程序时,需要使用编译版本。根据这个答案。
因此,在哪个SDK上编写代码并不重要。它将始终提供向后兼容性。
我将把我的Android项目从Ant转换为Gradle。 我的Eclipse工作区非常简单: 当我添加构建时。MyApp中的gradle文件,我想引用我的Android库项目: 当我运行gradle build时,出现了一个错误“Project with path”:在根项目中找不到MyApp AndroidLibrary“,我在Google上搜索了一下,发现我需要在我的工作区目录中设置一个“se
问题内容: 为了运行ssh守护程序服务,必须在/etc/pam.d/sshd中将entry设置为可选,如Ubuntu 13.10 的官方示例中所述。 此项对于Ubuntu的早期版本是否可选?它甚至在Ubuntu 13.10之前存在吗? 什么是设置到的意思是,无论如何? 我的ssh配置在这方面的安全性要差得多吗? 问题答案: 用于在用户通过SSH,X或类似方式登录时设置进程的审核属性。然后,审核框架
在我的Java项目中,我使用Lombok工具生成getter和setter<它与Maven完美配合,无需任何配置。 为什么我需要为龙目岛配置Eclipse<我已经知道如何配置Eclipse:https://projectlombok.org/download.html 为什么我必须在我的eclipse.ini中添加以下行?
将清单中的compileSdkVersion设置为小于最新的api内部版本号有什么好处吗,还是您应该始终将其设置为最新的api内部版本? 我说的优势是指应用程序的性能、应用程序的编译时间、apk的大小等。当然,我指的是你可以把它设置得更低的情况--例如,一个应用程序不使用共享转换或任何Lollipop的功能。
编辑:哎呀,毕竟安装了铬。
互联网是超文本标记语言(HTML)页面的集合,它们彼此链接以形成概念性信息网络。随着时间的推移,静态资源数量增加,图像等更丰富的项目开始成为Web结构的一部分。 高级服务器技术允许动态服务器页面 - 其内容基于查询生成的页面。 很快,需要拥有更多动态网页才能获得动态超文本标记语言(DHTML)。一切都归功于JavaScript。在接下来的几年中,我们看到了跨帧通信,试图避免页面重新加载,然后在帧内