AeroGear Android 2.0.0-alpha.1

We’ve been doing a lot of under the hood work on our Android library the past few months, and now it is ready to share with the world at large for AeroGear Android 2.0.0-alpha.1

AeroGear Android 2.0.0-alpha.1

As befitting a 2.0 release there are lots of breaking changes. See below:

Modules

AeroGear Android is now a collection of smaller, more modular, projects. Pipes, Stores, Authentication, Authorization, Security, and Push have been broken apart. This means that existing pomfiles and gradle builds will need to reference the functionality directly.

ApkLib deprecation

We have moved to the 4.0 Android Maven Plugin. This version deprecates support for ApkLib in favor of AAR. Gradle projects already used only AAR and are unaffected, but maven projects will need to reference AAR instead.

Android Maven Plugin 4.0

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.

Fluent builders have replaced config beans.

We have replaced the config beans with fluent configuration builders.

Previously AeroGear features were accessed in this pattern:

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");

API changes and cleanups

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.

Unified project with integration tests

Integration tests are now part of the library project and no longer a separate package.

Dropping support for old Android versions

We’re dropping support for Gingerbread, Honeycomb, and Ice Cream Sandwich. AeroGear Android is now only supporting Android 4.1+.

Shoot and Share cookbook demo

We’ve made a new demo, Shoot and Share. We are still merging/documenting it but you can see the work in progress here.

New Minor Features and Bug Fixes

Facebook OAuth2 Support

The OAuth2 module works with Facebook.

OAuth2 configurable refresh token URL

The URL you use to fetch refresh tokens has been made configurable. Before it was the same as the access token endpoint.

EncryptedSQLStore has explicit open and close methods

EncryptedSQLStore now has methods for opening and closing a la SQLStore.

Android Lollipop

We support Android Lollipop. All of our builds and tests run against the Lollipop APIs and VM. The Shoot and Share demo was developed and is an example of an app running on Android 5.0.

What’s Coming

As befitting an alpha release there is still a lot of work to do (and a great opportunity to get involved with Open Source).

Documentation

All of our docs still reference the 1.x way of doing things. We are going to be reviewing all the docs and replacing them with newer examples.

More bug fixes

Seriously, just look at our JIRA.

Sync library

We’ve started working on a sync library to work with the aerogear-sync-server. This is not part of the 2.0.0-alpha.1 and will not be part of the 2.0.0 General release. Fortunately, because we have modularized our libraries, it can be released without a full platform refresh.

Conclusion

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:

Add comment

By Daniel Passos