crossbario / autobahn-java

WebSocket & WAMP in Java for Android and Java 8
https://crossbar.io/autobahn
MIT License
1.52k stars 426 forks source link

Make the min Android API visible on the ReadMe #538

Closed william-ferguson-au closed 2 years ago

william-ferguson-au commented 2 years ago

It would be really useful if the min version of the Android API required for the Autobahn release was prominently displayed on the ReadMe.

I just spent several hours upgrading from the 2014 version of Autobahn to get killed by the Android 24 min API.

william-ferguson-au commented 2 years ago

Near as I can tell

Might be a good a idea to split it into 3 modules.

oberstet commented 2 years ago

as far as I can see, the min version in the build files (that is the version that has direct technical effect) is 24

https://github.com/crossbario/autobahn-java/blob/db03f7e878525e358c56c69f200df8e2390d1560/autobahn/build.gradle#L71

so I'm a bit puzzled by what you seem to hint at with "WAMP needs a min version of 26" ..


further, "prominently displayed on the ReadMe.": this would result in numbers in locations that need to be kept manually in sync. I'd rather just link into the respective line in build.gradle ...


Might be a good a idea to split it into 3 modules.

why? that sounds like work;) just buying a newer phone is easier

william-ferguson-au commented 2 years ago

The minSdkVersion that you declare in the Autobahn build.gradle is just what you declare as the min version required by the library. It's impact is that it forces clients to either upgrade their minSdkVersion to match, explicitly ignore the version declared by Autobahn, or use another library.

It doesn't guarantee that Autobahn actually conforms to that minimum. But it does allow you to easily check when building Autobahn for any code that exceeds that min SDK using the Gradle lint task.

And when you do you will see that the ArgumentUnpacker class has 3 uses that require 26. Hence WAMP needs 26.

Recommend you start using the @RequiresApi annotation to mark out sections where you step up an API so that users of the library at least get compilation warnings when they try and use the parts beyond what they are configured for.

As to why split it into 2 or 3 modules:

oberstet commented 2 years ago

The minSdkVersion ..

yes, I understand that

And when you do you will see that the ArgumentUnpacker class has 3 uses that require 26.

ok, fixed that!

As to why split it into 2 or 3 modules:

sure. however, still, that's work to do for a goal I don't care about: Autobahn was created for WAMP, and it was just the case at that time that there wasn't any WebSocket library at all for Android, so I implemented WebSocket in Autobahn as well ...