It has been a long road since June but here it is, 2.0. If you checked out our alpha back in October things are looking better. We've fixed a few bugs, updated a few docs, made a bunch of demos, and are ready to share with the world!
Android has a 16-bit method limit in its dex file format. In service to this we have broken the library up into smaller modules. Now you only need pipes you won't also include the data store. Encryption won't require OAuth2, etc. Each module is now it its on github repository :
Module | Repository | Depends on |
---|---|---|
core | https://github.com/aerogear/aerogear-android-core | |
pipe | https://github.com/aerogear/aerogear-android-pipe | core |
auth | https://github.com/aerogear/aerogear-android-auth | pipe |
security | https://github.com/aerogear/aerogear-android-security | core |
push | https://github.com/aerogear/aerogear-android-push | pipe |
store | https://github.com/aerogear/aerogear-android-store | security |
authz | https://github.com/aerogear/aerogear-android-authz | pipe, store |
Since 1.4 AAR has become the official, supported library package format for Android. As such apklib has been deprecated and removed. AAR's of 1.3 and 1.4 were released prior as a preview technology and are now stable and default.
Out are the old FooConfig beans and in are fluent builders!
Pipeline pipeline = new Pipeline(SOME_URL);
PipeConfig config = new PipeConfig("myPipeName", MyModel.class);
config.setFoo(foo);
config.setBar(bar);
Pipe pipe = pipeline.pipe(config);
/* snip */
Pipe pipeInAnotherPlace = pipeline.get("name");
Now things look like this:
PipeManager.config("gp-upload", RestfulPipeConfiguration.class)
.module(AuthorizationManager.getModule(MODULE_NAME))
.withUrl(new URL("https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart"))
.requestBuilder(new GoogleDriveFileUploadRequestBuilder())
.forClass(PhotoHolder.class);
/*snip*/
Pipe pipe = PipeManager.get("gp-upload");
It is much easier to enhance the manager classes and add new configurations. Before you had to not only write a factory method but also call super classes and such nonsense to make sure you didn't accidentally break the default classes. Now you just include a static block in your configuration class and everything is gravy!
static {
AuthenticationManager.registerConfigurationProvider(CustomConfiguration.class, new ConfigurationProvider<CustomConfiguration>() {
@Override
public CustomConfiguration newConfiguration() {
return new CustomConfiguration();
}
});
}
All of our integration tests for modules are included in the modules project. Before these were a separate project (and a pain to maintain).
Among other things this includes a new project source layout, lots of AAR compatibility fixes, deprecation of APKLIB, and many other minor fixes and cleanups. For us it means better support for use in Android Studio projects.
All methods marked @Deprecated
in 1.4 have been removed. A few other methods which SHOULD have been deprecated have also been removed. Additionally, all former factory methods deprecated by the new builder pattern have been removed.
We're dropping support for Gingerbread, Honeycomb, and Ice Cream Sandwich. AeroGear Android is now only supporting Android 4.1+.
We support Android Lollipop. All of our builds and tests run against the Lollipop APIs and VM.
We no longer use Guava internally. This will VASTLY reduce the number of methods in use. Since we no longer support Gingerbread, the support-v4 dependency has also been removed.
The OAuth2 module works with Facebook.
The URL you use to fetch refresh tokens has been made configurable. Before it was the same as the access token endpoint.
EncryptedSQLStore now has methods for opening and closing a la SQLStore.
Seriously, look at our JIRA
All modules are build and tested in Travis-CI with each commit. This is still ongoing as android support in Travis is quite new.
We've ported all of our demos to Android studio and added demos for Social media uploads, KeyCloak, and Android Wear.
You can checkout the code in GitHub
Ever wanted a Reddit browser meant to show of AeroGear's support for paged data sources and authentication? Well here is your chance!
Chuck Norris doesn't need his wrists to tell you jokes. He has yours. And you will thank him.
Take a picture and put it on our favorite social media sites or your own private server secured by KeyCloak.
Auth, Store, and OAuth demos are still there as well.
We've started working on a sync library to work with the aerogear-sync-server. This is scheduled to be the big new feature of 2.1. You can track our progress in our JIRA.
And as a sneak peek
For 2.2 we are going to enhance our authorization suppport. We will include more OAuth2 providers, better KeyCloak support, better Android account integration, and support for custom authentication and authorization through intents in addition to our current WebView approach. Again, you can follow our Jira.
Version 2.0 represents a huge cleanup and leap forward for the project. We hope that you will take some time to look at it and provide feedback. As always you can reach us via:
- Our mailing lists
- IRC (#aerogear on FreeNode)
- Twitter(@aerogears).
The link to aerogear-sync-server can no point to: https://github.com/aerogear/aerogear-sync-server, instead of my fork