gpt4 book ai didi

android - Android Studio 是否向后兼容旧 API? (具体来说,需要针对 Android Studio 3.6.3 的旧 API (27))

转载 作者:行者123 更新时间:2023-12-03 05:04:28 24 4
gpt4 key购买 nike

Android Studio 是否向后兼容旧 API?

进一步来说,
我需要定位 API 27 与 Android Studio 3.6.3。

我无法这样做。为什么?

注意:我知道我无法发布到 Play 商店。这对我来说不是问题。

如此处所述 - https://developer.android.com/studio/releases/gradle-plugin

Although the Android plugin is typically updated in lock-step with Android Studio, the plugin (and the rest of the Gradle system) can run independent of Android Studio and be updated separately.



在升级 Gradle 部分的表格中

插件版本 3.2.0 - 3.2.1 适用于 Gradle 版本 4.6+

我的设置:

Settings.gradle

distributionUrl=https://services.gradle.org/distributions/gradle-4.9-bin.zip



在应用程序 build.grade:

SDK/构建工具设置为:

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"

}
}

但我得到以下信息:

The specified Android SDK Build Tools version (27.0.2) is ignored, as it is below the minimum supported version (28.0.3) for Android Gradle Plugin 3.2.1.



这是为什么?当然,我可以在旧版本的 AS 中使用该插件版本来定位 27。

当我构建时:

error: failed linking references. (No additional detail in logs)



注意:尝试使用更低版本的构建工具和 Android Gradle 插件(并针对更低的 api)会产生相同的错误。降级 gradle 版本也不起作用(尝试使用 4.6)

注意 2:尝试使用最新版本(接受 AS 3.6.3 默认为您提供的内容,即 gradle-5.6.4, buildToolsVersion "29.0.2")会出现以下错误。
这很容易重现 - 只需创建一个新项目(选择空 Activity 以减少依赖项),使用旧版支持库,并将编译和目标 SDK 更改为 27

.../appcompat-v7-28.0.0/res/values-v28/values-v28.xml:5:5-8:13: AAPT: error: resource android:attr/dialogCornerRadius not found.



这是否意味着您不能使用 AS 3.6.3 定位低于 28 的任何内容?如果这里的构建 block 是构建工具和 Android Gradle 插件(如上所述),AS 将在这里扮演什么角色,我可以随意选择,但没有效果?

并且只想说明:不,我不想更新到 api 28。我需要专门低于 28,而我当前的 AS 版本是 3.6.3。

难道没有出路,不得不使用旧的AS?如果是后者,那么 AS 在其中的作用是什么?

最佳答案

工具版本很大程度上独立于您的targetSdkVersion , 你不需要 buildToolsVersion "27.0.2"对于 27 的目标 SDK

编辑应用的 build.gradle 以使用现代版本的构建工具,然后设置 targetSdkVersion 27
请注意,您将无法使用它部署到 Play 商店,因为现在的最低目标是 28(截至 2020 年 5 月 13 日)来源:https://developer.android.com/distribute/best-practices/develop/target-sdk

以下是针对 sdk 27​​ 的有效应用程序模块 build.gradle 的一部分

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 的一部分
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
我认为这不会引起问题,但不能自信地说不会

关于android - Android Studio 是否向后兼容旧 API? (具体来说,需要针对 Android Studio 3.6.3 的旧 API (27)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61781970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com