【问题标题】:change targets API level to 28 SDK [duplicate]将目标 API 级别更改为 28 SDK [重复]
【发布时间】:2020-01-27 04:16:58
【问题描述】:

为了将目标 SDK 更改为 28,我在 build.gradle 中做了以下操作:

android {
      compileSdkVersion 28

      defaultConfig {
        targetSdkVersion 28

   ...
      dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'com.android.support:appcompat-v7:28.0.0' //-- line with error
implementation 'com.android.support:design:28.0.0' //-- line with error
implementation 'com.android.support:support-annotations:28.0.0'

implementation 'com.squareup.okhttp3:okhttp:3.9.1'
implementation "com.google.code.gson:gson:2.8.2"
implementation files('libs/commons-io-2.4.jar')
implementation files('libs/WebtrendsAndroidClientLib.jar')

// Urban Airship  -- Start
api 'com.urbanairship.android:urbanairship-sdk:9.0.0'

// Recommended for in-app messages
implementation 'com.android.support:cardview-v7:28.0.0' //-- line with error

// We need to add these to force Urban AirShip and Google play services to use latest version.
implementation 'com.android.support:animated-vector-drawable:28.0.0' //-- line with error
implementation 'com.android.support:mediarouter-v7:28.0.0' //-- line with error

implementation "com.google.android.gms:play-services:11.8.0"

// Urban Airship  -- End

//-- third party lib
implementation 'com.github.barteksc:android-pdf-viewer:2.4.0'
implementation 'com.sothree.slidinguppanel:library:3.3.0'
implementation 'com.google.maps.android:android-maps-utils:0.5+'

//api 'at.favre.lib', name: 'bytes', version: '0.2.0'
api 'at.favre.lib:bytes:0.2.0'

implementation 'com.android.support.constraint:constraint-layout:1.1.3'

}

但在 Android Studio IDE 中,它显示行错误:

     com.android.support:appcompat-v7:28.0.0

和描述:

如果我评论这一行,下一行“28.0.0”也会有同样的错误。所以看起来“28.0.0”的那些都没有生效。

我做错了什么?

不是

更新了“依赖项”中的全部内容,并标记了每个将出现错误的实现。每个错误都与图片中的描述完全相同

顺便说一句,尝试了以下网址中的解决方案:All com.android.support libraries must use the exact same version specification,但它对我根本不起作用,并且发生了同样的错误。

** Note on Note **:网址中的解决方案:All com.android.support libraries must use the exact same version specification 确实有效。您需要“同步”项目。

谢谢,

肖恩

【问题讨论】:

  • 您可能依赖于本身依赖于support-v4:25.2.0 的东西。你检查过你的传递依赖吗?
  • 例如,如果您依赖一个生成四舍五入的ImageViews 或类似的开源库,则该库本身可能依赖于旧版本的支持库。跨度>
  • @Ben,如何检查传递依赖?我更新了“依赖项”的全部内容。谢谢。

标签: android target android-api-levels


【解决方案1】:

编辑 在你的依赖项中使用它

implementation 'com,android.support:support-v4:28.0.0'

试试这个,如果解决了问题,请告诉我。

【讨论】:

  • 同样的错误。根据图像中的错误消息,它说:所有 com.android.support 库必须使用完全相同的版本规范(混合版本会导致运行时崩溃。)找到版本 28.0.0、25.2.0。示例包括 com.android.support:animated-vector-drawable:28.0.0 和 com,android.support:support-v4:25.2.0 ...但我根本找不到 25.2.0。
  • 对不起,我犯了一个错误。编辑了答案。试试看,让我知道。
  • 添加这个实现 'com.android.support:support-v4:28.0.0' 确实有效。我需要“同步”才能使其工作。谢谢!
【解决方案2】:

此警告表明您使用的库版本可能会发生冲突并导致一些运行时问题。虽然这不是错误 - 您仍然可以构建和运行项目 - 但它在某些情况下可能会出现异常。

要消除警告,您必须将所有的谷歌库更新到相同的版本。

正如我从问题中看到的那样 - 你已经做到了。但是有一个问题-您正在使用的其他库可能做得不是很彻底(或者这是它们的本质),并且它们正在泄漏其内部的谷歌库依赖项。它们肯定是因为在您更改了 gradle 中的所有显式警告后,此警告仍然存在。

你有几个选项来处理这个错误

  • 尝试将所有第三方库更新到最新版本 - 也许他们的开发人员已经更新了它们
  • 找出导致此警告出现的库,然后更新、删除或将其更改为与您应用的当前目标 API 兼容的类似库。
  • 使用
{
    transitive = false;
}

对于导致中断的库,如果库设计精良,警告将消失,您的代码将保持其工作状态。 (极不可能)

  • 最后一个选项是不要太在意。通常我使用这个选项。我从来没有遇到过它的麻烦。

希望对你有帮助。

【讨论】:

  • 这个transitive = false应该放在哪里?
  • 谷歌它。它还将为您提供有关依赖项如何工作的良好背景。
猜你喜欢
  • 1970-01-01
  • 2011-05-03
  • 2019-05-15
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
相关资源
最近更新 更多