android如何将自定义库的支持库与应用程序库合并?

时间:2016-11-29 07:11:15

标签: android android-support-library android-library aar

我有一个在gradle中具有ggplot(tt, aes(Var2, Freq, fill=Var1)) + geom_bar(stat='identity') + xlab('Variable') + guides(fill=guide_legend("Variable")) 依赖关系的android库,其compliedSDK为23

我有以下怀疑

案例1)假设任何使用不同版本com.android.support:appcompat-v7:23.0.1的应用程序使用我的库。

  1. android采取哪个版本?低一或高一?我怎么看?
  2. 当任何应用使用我的库时,如何确保v7 appcompat没有冲突?
  3. 案例2)假设任何具有不同版本com.android.support:appcompat-v7:23.3.0com.android.support:appcompat-v7:25.0.1的应用程序和不同的编译后的SDK(24或25)使用我的库。

    我知道com.android.support:appcompat-v7:24+

    1. android如何现在合并支持库? (由于我的库的支持库版本(The support library should not use a different version than the compileSdkVersion)与应用程序的已编译的SDK(25)不同)
    2. 当任何应用使用我的库时,如何确保v7 appcompat没有冲突?
    3. 任何人请清除我的怀疑

1 个答案:

答案 0 :(得分:0)

  
      
  1. android采取哪个版本?低一或高一?我怎么看?
  2.   

构建库时,您将依赖项显式放在build.gradle中。 app的创建者也是这样做的,它使用你的库作为他build.gradle中声明的依赖。如果创建者显式声明支持库作为依赖项,则采用该版本(无论依赖项声明的版本)。如果他不这样做,则会采用任何依赖项声明的最高版本(此类支持库被视为传递依赖项)。

示例:您的图书馆使用appcompat-v7:23.3.0。 app的创建者声明appcompat-v7:25.0.1。简单案例:appcompat-v7:25.0.1被采用。

示例2 :您的图书馆使用appcompat-v7:23.3.0。应用的创建者不使用appcompat-v7appcompat-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版本将出现在输出应用中。

希望你明白。

  
      
  1. 当任何应用使用我的库时,如何确保v7 appcompat没有冲突?
  2.   

你无法保证。这就是为什么你应该总是在库中放置最高版本的支持库。我甚至不能保证支持库保持向后兼容性。 Here就是他们没有的例子。

  

我知道支持库不应该使用与compileSdkVersion不同的版本。

这只是一个建议。但是,你应该遵守它,但你不必这样做。