在具有不同SDK min版本的项目中使用相同的自定义库

时间:2017-09-27 05:57:17

标签: android android-library

我有一个包含多个实用程序类的自定义库。到目前为止,我在min SDK 21的单个项目中使用它。

现在,我想重用另一个项目中的一个类,它有min SDK 14。版本14的类代码很好,但是Gradle不喜欢库的min SDK是21。

这种问题的推荐方法是什么?我想重复使用代码,而不是重复代码。

1 个答案:

答案 0 :(得分:1)

您可以使用Manifest Merger覆盖导入库的<uses-sdk>

来自官方文件:

  

默认情况下,导入具有minSdkVersion值的库时   高于主清单文件,发生错误和库   无法导入。使合并工具忽略此冲突和   在保持应用程序的minSdkVersion值较低的同时导入库,   将overrideLibrary属性添加到标记。属性   value可以是一个或多个库包名(以逗号分隔),   指示可以覆盖主清单的库   的minSdkVersion。

例如,如果您应用的主要清单应用 overrideLibrary ,请执行以下操作:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.app"
          xmlns:tools="http://schemas.android.com/tools">
  <uses-sdk android:targetSdkVersion="22" android:minSdkVersion="2"
            tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
...

然后可以合并以下清单而不会出现有关<uses-sdk>标记的错误,并且合并后的清单会从应用清单中保留minSdkVersion="2"

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.lib1">
   <uses-sdk android:minSdkVersion="4" />
...