Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Library project build version higher than projects using it

I am using Android Library Project. I have set my library project build target to say 11 to use api 11 and to have forward compatibility and I am putting check for min sdk version so that app will not crash when run on os < 11

My other projects have build target set to 8 so I want to know is it the correct way to set library project build version higher than the projects with lower build target going to use it?

right now I haven't observed any crash. Just wanted to know can the library with higher build version be used in projects with lower build sdk version than library.

Thanks in advance.:)

like image 411
Harshawardhan Avatar asked Mar 11 '12 19:03

Harshawardhan


3 Answers

It is probably doable by branch checking SDK version in code level like if android.os.Build.VERSION.SDK_INT < 11 then do not run this, but not recommended by dev guide:

Platform version must be lower than or equal to the Android project

A library is compiled as part of the dependent application project, so the API used in the library project must be compatible with the version of the Android library used to compile the application project. In general, the library project should use an API level that is the same as — or lower than — that used by the application. If the library project uses an API level that is higher than that of the application, the application project will not compile. It is perfectly acceptable to have a library that uses the Android 1.5 API (API level 3) and that is used in an Android 1.6 (API level 4) or Android 2.1 (API level 7) project, for instance.

like image 98
yorkw Avatar answered Oct 30 '22 10:10

yorkw


It is possible for you to use library supporting higher minSdkVersion than that in your project. To do so, in your projects manifest file add tools:overrideLibrary="<libraries packagename>" manifest element uses-sdk

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

like image 45
Ian Pinto Avatar answered Oct 30 '22 11:10

Ian Pinto


Using a library with higher API level than the application is not recommended. If you referenced any API 11 only features in library and then use API 8 to compile with your app, then it should not compile at all. Do you actually have API 11 references in your library's code?

See Android docs:

In general, the library project should use an API level that is the same as — or lower than — that used by the application. If the library project uses an API level that is higher than that of the application, the application project will not compile.

like image 21
XiaoChuan Yu Avatar answered Oct 30 '22 11:10

XiaoChuan Yu