Hi Artur,

Very nice report

On Fri, Aug 21, 2015 at 8:16 AM, Artur Dryomov <artur.dryomov@gmail.com> wrote:
Hi everyone,

So, I’ve just hit the famous 65 K methods count and DEX error as a sweet bonus while updating the application to latest Android 6.0-related dependencies.

Long story short, I’ve analyzed [1] dependencies [2] for the Hawkular Android Client [3]. Important notice—the application is not that big or complicated.

Methods count is below.
  • Various dependencies: 2445.
  • Java & JavaX: 1684.
  • Android Support libraries: 12988.
  • Android: 3081.
  • Google Play Services: 22022.
  • Bouncycastle: 10423.
  • Spongycastle: 10423.
  • AeroGear: 1210.
  • Application itself: 1047.
  • Total: 65346.
This is kind of disappointing. Of course I can start to blame Android Support libraries, but you clearly cannot develop apps these days without using backports and helpers. Google Play Services is a bigger deal. It is a dependency of the AeroGear Push module and you cannot live without it as well, but you can use a modular dependency. I’ve addressed this in an issue [4] which leads to another one [5]. It was fixed (there is Google Play Services 7.8.0 already though), but not released. Bouncycastle and Sprongycastle are related to security and are dependencies of the AeroGear Store module which is a dependency of the AeroGear Authz module. I’m not really sure I need this at all.

Unfortunately (or not) yes, you need this all.

TL;DR: Authz need a server token to communicate with the server, we need store this token so, authz need store lib as dependency. This token need to be stored encrypted so, store need security and castles. Makes sense?

Let’s count again.
  • The current application: 65346 methods.
  • The application without Google Play Services and Castles: 22478.
The application can be (65346 ÷ 22478 = 2.9) times smaller.

What do you think about? Is there any chance to ditch these Castle dependencies and release the new Push version?

About push, we don't have plan to release the play module until version 3.0.0

Anyway you can fix the problem easily using multidex[1]

[1] https://developer.android.com/tools/building/multidex.html

aerogear-dev mailing list

-- Passos