库项目构建版本高于使用它的项目

时间:2012-03-11 19:32:44

标签: android project

我正在使用Android库项目。我已经将我的库项目构建目标设置为11以使用api 11并具有向前兼容性,并且我正在检查min sdk版本,以便app在os<上运行时不会崩溃11

我的其他项目已将目标设置为8,所以我想知道将库项目构建版本设置为高于具有较低构建目标的项目使用它的正确方法是什么?

现在我没有发现任何崩溃。只是想知道具有更高版本的库可以用于构建版本低于库的项目。

提前致谢。)

4 个答案:

答案 0 :(得分:7)

这可能是通过分支检查代码级别的SDK版本来实现的,就像android.os.Build.VERSION.SDK_INT< 11然后不要运行它,但不是dev guide推荐的:

  

平台版本必须低于或等于Android项目

     

库是作为依赖应用程序项目的一部分编译的,因此库项目中使用的API必须与用于编译应用程序项目的Android库的版本兼容。通常,库项目应使用与应用程序使用的API级别相同或更低的API级别。如果库项目使用的API级别高于应用程序的API级别,则应用程序项目将无法编译。例如,拥有一个使用Android 1.5 API(API级别3)并在Android 1.6(API级别4)或Android 2.1(API级别7)项目中使用的库是完全可以接受的。

答案 1 :(得分:3)

您可以使用支持比项目更高的minSdkVersion的库。为此,在项目清单文件中添加tools:overrideLibrary="<libraries packagename>"清单元素uses-sdk

  

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="23" tools:overrideLibrary="<libraries packagename>" />

答案 2 :(得分:1)

建议不要使用API​​级别高于应用程序的库。如果您在库中引用了任何仅API 11的功能,然后使用API​​ 8来编译您的应用程序,那么它根本不应该编译。你的库代码中是否真的有API 11引用?

请参阅Android docs

  

通常,库项目应使用API​​级别   与应用程序使用的相同或更低。如果   库项目使用的API级别高于   应用程序,应用程序项目将无法编译。

答案 3 :(得分:0)

在清单中,您只需添加:

<uses-sdk
      tools:overrideLibrary="<libraries packagename>"
    />