首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android是否向后兼容较旧的API?(具体来说,需要使用Android 3.6.3针对旧API (27) )

Android是否向后兼容较旧的API?(具体来说,需要使用Android 3.6.3针对旧API (27) )
EN

Stack Overflow用户
提问于 2020-05-13 18:17:51
回答 1查看 405关注 0票数 0

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

和属地:

代码语言:javascript
复制
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 (项目)

代码语言:javascript
复制
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。

有没有出路,不得不用旧的作为?如果是后者,那么在这方面的作用又是什么呢?

EN

回答 1

Stack Overflow用户

发布于 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的一部分

代码语言:javascript
复制
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中构建脚本的一部分

代码语言:javascript
复制
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我不认为这会引起问题,但我不能自信地说它不会

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

https://stackoverflow.com/questions/61781970

复制
相关文章

相似问题

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