gpt4 book ai didi

android - 如何在我自己的 Android 库中使用 Android 支持库

转载 作者:搜寻专家 更新时间:2023-11-01 08:19:53 25 4
gpt4 key购买 nike

我的公司有一个 android 库(一个 SDK),我们分发给第三方。它使用了 Android 支持库的一些功能——特别是(但不限于)android.support.annotationandroid.support.v4.content.LocalBroadcastManager

问题是,如果我们针对(比如)com.android.support:appcompat-v7:27.1.1 编译我们的库,而第三方针对(比如)com 进行编译。 android.support:appcompat-v7:28.0.0 然后第三方应用程序收到 All com.android.support libraries must use the exact same version specification警告。

如果我们正在开发一个独立的应用程序,那么修复就很明确了;只需更新所有内容即可使用最新 (28) 版本的支持库。如果我们要迁移到 androidX,也是一样。

但是,对于可能已过时的可再分发库(第三方可以在其发布 18 个月后使用我们的 SDK),我们不能这样做。

据我所知,这里没有关于做什么的指导。我能想到的选项:

  1. 什么都不做。第三方可以忽略该警告。这是我们过去一直在做的事情,看起来确实不错,但我不喜欢运送会向我们的客户发出警告的东西的想法。

  2. 从我们的 SDK 中删除对 com.android.support 的所有引用。这是非常痛苦的,因为 LocalBroadcastmanager 只存在于支持库中,它不是 Android 本身的一部分,而且我们使用 @NonNull@Nullable 广泛。它们非常擅长防止错误,对 Kotlin 支持很重要,我不想失去它们。

  3. 从我们的 SDK 中删除对 com.android.support 的所有引用,但为 豁免 com.android.support:support-annotations @Nullable。也许这会使警告消失?不过,丢失 LocalBroadcastManager 并不是一件好事。这样还可以吗?

  4. 始终发布针对最新支持库编译的 SDK,并积极插入第三方进行更新。像这样插入第三方感觉不太好,这也意味着如果我们在 9 个月内没有发布,我们将不得不发布临时版本以跟上 Android 支持库的更新。

  5. 并行发布针对不同支持库编译的 SDK 的不同版本,第三方可以从中选择他们想要的版本。这是很多工作(我们要回溯多少个版本?)而且我想这会很困惑。

  6. 放弃并只支持 iOS(笑)

无论如何 - 如前所述,我一直无法找到有关如何处理此类事情的任何指导。任何反馈将不胜感激

最佳答案

选项 7 怎么样?

您的实现并不总是与用户的实现相匹配,这只是生活中的一个事实(?)。

我遇到了有些过时的库(使用支持 25.1.3 或其他),并且我遇到了这个错误。但是有一个非常简单的修复方法。您只需稍微修改一下实现:

implementation ("com.my:project:project-name:1.0.0") {
exclude group: "com.android.support"
}

它应该是不言自明的,但这只是告诉 Gradle 忽略库的支持实现并改用应用程序的实现。

这有一个潜在的问题,如果用户没有实现您使用的支持库之一,他们将无法构建,直到他们自己实现它。但这也很容易解决:

implementation ("com.my:project:project-name:1.0.0") {
exclude group: "com.android.support" module: "support-annotations"
}

那样的话,只有 support-annotations 被排除在实现中,其余的都保持不变。

我认为解决这个问题的一个好方法是做两件事:

  1. 修改您的自述文件以说明您使用的支持库。
  2. 指导用户如何从您的库的实现中排除他们当前在其应用中使用的那些(只需为每个库复制上面的“排除”行)。

PS,如果我实现的库使用的支持库版本高于我自己的,我认为我从来没有遇到过问题。这可能只是 lint 中的一个错误。

关于android - 如何在我自己的 Android 库中使用 Android 支持库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52693065/

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