android 如何将自定义库的支持库与应用程序的支持库合并?
How does android merge the custom library's support library with that of application?
我有一个 android 库,在 gradle 中有 com.android.support:appcompat-v7:23.0.1
依赖,compliedSDK 为 23
我有以下疑问
案例 1) 假设任何不同版本的应用程序 com.android.support:appcompat-v7:23.3.0
使用我的库。
- android采用哪个版本?低一级还是高一级?我怎么看?
- 当任何应用程序使用我的库时,我如何确保没有 v7 appcompat 冲突?
案例 2) 假设任何具有不同版本 com.android.support:appcompat-v7:25.0.1
或 com.android.support:appcompat-v7:24+
和不同编译的 SDK(24 或 25)的应用程序使用我的库。
我知道 The support library should not use a different version than the compileSdkVersion
。
- android 现在如何合并支持库? (由于我的库的支持库版本(
appcompat-v7:23.0.1
)与应用程序编译的SDK(25)不同)
- 当任何应用程序使用我的库时,我如何确保没有 v7 appcompat 冲突?
请大家解惑
- which version does the android take? Lower one or Higher one? How do i see it?
在构建库时,您将依赖项明确地放在 build.gradle
中。 app 的创建者也是这样做的,它使用您的库作为在他的 build.gradle
中声明的依赖项。如果创建者明确声明支持库为依赖项,则采用该版本(无论依赖项声明的版本如何)。如果他不这样做,则采用任何依赖声明的最高版本(这样的支持库被视为传递依赖)。
示例: 您的图书馆使用 appcompat-v7:23.3.0
。应用的创建者声明 appcompat-v7:25.0.1
。简单的情况:appcompat-v7:25.0.1
被占用。
示例 2: 您的图书馆使用 appcompat-v7:23.3.0
。应用程序的创建者不使用 appcompat-v7
。 appcompat-v7:23.3.0
将在输出应用中。
示例 3: 您的图书馆使用 appcompat-v7:23.3.0
。另一个库使用 appcompat-v7:24.1.0
。如果创建者没有明确声明 appcompat-v7:xx.x.x
版本 appcompat-v7:24.1.0
将在输出 app.
希望你明白。
- How do i make sure there is no conflict of v7 appcompat when any app uses my library?
你不能保证。这就是为什么您应该始终将最高版本的支持库放入库中。我什至不能向您保证支持库保持向后兼容性。 Here 是他们没有的例子。
I know that The support library should not use a different version than the compileSdkVersion.
这只是一个建议。但是,你应该遵守它,但你不必这样做。
我有一个 android 库,在 gradle 中有 com.android.support:appcompat-v7:23.0.1
依赖,compliedSDK 为 23
我有以下疑问
案例 1) 假设任何不同版本的应用程序 com.android.support:appcompat-v7:23.3.0
使用我的库。
- android采用哪个版本?低一级还是高一级?我怎么看?
- 当任何应用程序使用我的库时,我如何确保没有 v7 appcompat 冲突?
案例 2) 假设任何具有不同版本 com.android.support:appcompat-v7:25.0.1
或 com.android.support:appcompat-v7:24+
和不同编译的 SDK(24 或 25)的应用程序使用我的库。
我知道 The support library should not use a different version than the compileSdkVersion
。
- android 现在如何合并支持库? (由于我的库的支持库版本(
appcompat-v7:23.0.1
)与应用程序编译的SDK(25)不同) - 当任何应用程序使用我的库时,我如何确保没有 v7 appcompat 冲突?
请大家解惑
- which version does the android take? Lower one or Higher one? How do i see it?
在构建库时,您将依赖项明确地放在 build.gradle
中。 app 的创建者也是这样做的,它使用您的库作为在他的 build.gradle
中声明的依赖项。如果创建者明确声明支持库为依赖项,则采用该版本(无论依赖项声明的版本如何)。如果他不这样做,则采用任何依赖声明的最高版本(这样的支持库被视为传递依赖)。
示例: 您的图书馆使用 appcompat-v7:23.3.0
。应用的创建者声明 appcompat-v7:25.0.1
。简单的情况:appcompat-v7:25.0.1
被占用。
示例 2: 您的图书馆使用 appcompat-v7:23.3.0
。应用程序的创建者不使用 appcompat-v7
。 appcompat-v7:23.3.0
将在输出应用中。
示例 3: 您的图书馆使用 appcompat-v7:23.3.0
。另一个库使用 appcompat-v7:24.1.0
。如果创建者没有明确声明 appcompat-v7:xx.x.x
版本 appcompat-v7:24.1.0
将在输出 app.
希望你明白。
- How do i make sure there is no conflict of v7 appcompat when any app uses my library?
你不能保证。这就是为什么您应该始终将最高版本的支持库放入库中。我什至不能向您保证支持库保持向后兼容性。 Here 是他们没有的例子。
I know that The support library should not use a different version than the compileSdkVersion.
这只是一个建议。但是,你应该遵守它,但你不必这样做。