Android是否向后兼容较旧的API?
更具体地说,我需要使用AndroidStudio3.6.3. API 27作为目标。
我不能这样做。为什么?
注意:我意识到我无法出版“游戏商店”。这对我来说不是问题。
如前所述- https://developer.android.com/studio/releases/gradle-plugin
虽然安卓插件通常是通过Android进行锁定更新的,但是插件(以及Gradle系统的其他部分)可以独立于Android运行,并且可以单独更新。
在升级级部分,在表中
插件版本3.2.03.2.1适用于分级版本4.6+
我的设置:
Settings.gradle
distributionUrl=https://services.gradle.org/distributions/gradle-4.9-bin.zip
应用程序中的 build.grade:
SDK/Build工具设置为:
compileSdkVersion 27 buildToolsVersion "27.0.2“
minSdkVersion 27 targetSdkVersion 27
和属地:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'com.android.support:appcompat-v7:27.1.0' i
implementation 'com.android.support:design:27.1.0'Build.gradle (项目)
buildscript {
ext.kotlin_version = '1.3.71'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}但我得到了以下信息:
指定的Android构建工具版本(27.0.2)被忽略,因为它低于Android插件3.2.1支持的最低版本(28.0.3)。
为什么会这样呢?当然,我能够在老版本的AS中使用那个插件版本来瞄准27。
当我建造:
错误:链接引用失败。(日志中没有其他细节)
注意:尝试使用更低版本的构建工具和Android插件(并针对更低的api)也会出现同样的错误。降级的分级版本也不起作用(尝试用4.6)
注2:尝试使用最新版本(默认情况下接受3.6.3提供的内容,即gradle-5.6.4,buildToolsVersion "29.0.2")会出现以下错误。这很容易复制--只需创建一个新项目(选择空活动以减少依赖),使用遗留支持库,并将编译和目标SDK更改为27。
.../appcompat-v7-28.0.0/res/values-v28/values-v28.xml:5:5-8:13::
::/dialogCornerRadius未找到。
这是否意味着你不能以3.6.3的标准瞄准任何低于28的目标?如果这里的构建块是构建工具和Android Gradle插件(如前所述),我可以随意选择,但没有效果,那么这里将扮演什么角色呢?
我只想指出:不,我不想更新到api 28。我需要具体低于28,我目前的版本是3.6.3。
有没有出路,不得不用旧的作为?如果是后者,那么在这方面的作用又是什么呢?
发布于 2020-05-13 23:11:03
工具版本在很大程度上独立于您的targetSdkVersion,对于目标sdk 27,您不需要buildToolsVersion "27.0.2"
编辑应用程序的build.gradle以使用现代版本的构建工具,然后设置targetSdkVersion 27
请注意,您将无法部署到Play Store,因为现在的最小目标是28 (当前为2020年5月13日)。
以下是有效的应用程序模块build.gradle定位sdk 27的一部分
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.mikedg.dekudeals"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}下面是与它一起工作的项目build.gradle中构建脚本的一部分
buildscript {
ext.kotlin_version = '1.3.71'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}如果上面的方法不起作用,我建议您考虑迁移到androidx库,而不是旧的支持库。https://developer.android.com/jetpack/androidx/migrate#additional_resources我不认为这会引起问题,但我不能自信地说它不会
https://stackoverflow.com/questions/61781970
复制相似问题