Hi Artur,
Very nice report
On Fri, Aug 21, 2015 at 8:16 AM, Artur Dryomov <artur.dryomov(a)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
--
-- Passos