我有一个包含多个实用程序类的自定义库。到目前为止,我在min SDK 21
的单个项目中使用它。
现在,我想重用另一个项目中的一个类,它有min SDK 14
。版本14的类代码很好,但是Gradle不喜欢库的min SDK是21。
这种问题的推荐方法是什么?我想重复使用代码,而不是重复代码。
答案 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" />
...