代码之家  ›  专栏  ›  技术社区  ›  ilomambo

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

  •  0
  • ilomambo  · 技术社区  · 8 年前

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

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Prokash Sarkar    8 年前

    你可以使用, Manifest Merger <uses-sdk> 对于导入的库。

    根据官方文件:

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

    例如,如果应用程序的主清单适用 覆盖图书馆 这样地:

    <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"/>
    ...
    

    然后可以合并以下清单,而不会出现与 < 标记,合并的清单保留 minSdkVersion="2"

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