Closed Bug 1389990 Opened 7 years ago Closed 7 years ago

Android builds are going to permafail when Gecko 57 merges to Beta on 2017-09-20

Categories

(Firefox Build System :: Android Studio and Gradle Integration, defect)

55 Branch
Unspecified
Android
defect
Not set
blocker

Tracking

(fennec+, firefox55 unaffected, firefox56 verified, firefox57blocking verified)

VERIFIED FIXED
mozilla57
Tracking Status
fennec + ---
firefox55 --- unaffected
firefox56 --- verified
firefox57 blocking verified

People

(Reporter: RyanVM, Assigned: maliu)

Details

(Whiteboard: [FNC][SPT57.2][MVP])

Attachments

(3 files)

[Tracking Requested - why for this release]: Broken Android builds on the next merge day.

Using the patches on top of m-c rev 59594b3879cc as shown in this push:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=719d759c4fd12922ca7c8312f5840c9d8cf1c79f

https://treeherder.mozilla.org/logviewer.html#?job_id=122803828

01:35:29     INFO -  trouble writing output: Too many field references: 66723; max is 65536.
01:35:29     INFO -  You may try using --multi-dex option.

Sebastian, can you please take a look or refer this over to someone else who can? Thanks!
Flags: needinfo?(s.kaspari)
Max, Jing-Wei: We have a problem. Backing out ConstraintLayout helped us in central - but as soon as we merge to Beta we run into the "Too many field references" problem again. I assume the Beta build configuration is slightly different (Maye Adjust?).
tracking-fennec: --- → ?
Flags: needinfo?(topwu.tw)
Flags: needinfo?(max)
Using https://github.com/mihaip/dex-method-counts with --count-fields
I can remove some from Leanplum(91).
I wonder maybe exoplayer2(4408) and measurement(1064) could be our target

Just got the field count on central
<root>: 64997
    <default>: 1
    android: 23302
        accessibilityservice: 6
        accounts: 23
        animation: 53
        app: 378
        appwidget: 6
        content: 426
            pm: 38
            res: 103
        database: 127
            sqlite: 46
        graphics: 373
            drawable: 131
                shapes: 4
            pdf: 3
        hardware: 51
            display: 6
            fingerprint: 11
            input: 2
        location: 44
        media: 391
            audiofx: 9
            browse: 17
            session: 91
        net: 82
            http: 2
            nsd: 14
            wifi: 12
        nfc: 4
        opengl: 5
        os: 290
        preference: 82
        print: 23
            pdf: 5
        provider: 17
        speech: 6
            tts: 6
        support: 18687
            annotation: 20
            customtabs: 105
            design: 1758
                internal: 187
                widget: 1556
            graphics: 303
                drawable: 303
                    animated: 1
            v4: 9026
                accessibilityservice: 41
                animation: 62
                app: 1635
                content: 293
                    pm: 1
                    res: 20
                database: 3
                graphics: 316
                    drawable: 261
                hardware: 85
                    display: 19
                    fingerprint: 66
                internal: 74
                    view: 74
                media: 1463
                    session: 818
                net: 64
                os: 68
                print: 84
                provider: 96
                speech: 14
                    tts: 14
                text: 103
                util: 284
                view: 2937
                    accessibility: 1116
                    animation: 29
                widget: 1403
            v7: 7475
                app: 1398
                appcompat: 15
                cardview: 8
                graphics: 216
                    drawable: 69
                media: 772
                mediarouter: 16
                palette: 1
                recyclerview: 7
                text: 3
                transition: 2
                util: 140
                view: 744
                    menu: 588
                widget: 4153
                    helper: 150
                    util: 5
        system: 1
        telephony: 54
            cdma: 3
            gsm: 3
        text: 127
            format: 13
            method: 11
            style: 13
        transition: 17
        util: 75
        view: 1074
            accessibility: 239
            animation: 53
            inputmethod: 28
        webkit: 47
        widget: 833
    ch: 5262
        boye: 5262
            httpclientandroidlib: 5262
                androidextra: 41
                annotation: 1
                auth: 117
                    params: 5
                client: 600
                    cache: 53
                    config: 41
                    entity: 74
                    methods: 169
                    params: 25
                    protocol: 75
                    utils: 104
                concurrent: 14
                config: 63
                conn: 472
                    params: 38
                    routing: 73
                    scheme: 64
                    socket: 8
                    ssl: 133
                    util: 7
                cookie: 68
                    params: 3
                entity: 267
                    mime: 153
                        content: 61
                impl: 2650
                    auth: 222
                    client: 993
                        cache: 494
                    conn: 664
                        tsccm: 124
                    cookie: 235
                    entity: 17
                    execchain: 96
                    io: 195
                    pool: 20
                io: 24
                message: 231
                params: 110
                pool: 97
                protocol: 195
                util: 106
    com: 15877
        booking: 81
            rtlviewpager: 81
        google: 11002
            android: 11002
                exoplayer2: 4408
                    audio: 307
                    decoder: 77
                    drm: 191
                    extractor: 881
                        flv: 49
                        mkv: 84
                        mp3: 36
                        mp4: 169
                        ogg: 128
                        rawcc: 10
                        ts: 236
                        wav: 28
                    mediacodec: 114
                    metadata: 269
                        emsg: 14
                        id3: 136
                        scte35: 74
                    source: 645
                        chunk: 99
                        hls: 233
                            playlist: 90
                    text: 457
                        cea: 123
                        dvb: 38
                        subrip: 10
                        ttml: 72
                        tx3g: 17
                        webvtt: 114
                    trackselection: 164
                    upstream: 447
                        cache: 172
                        crypto: 17
                    util: 284
                    video: 125
                gms: 6594
                    actions: 4
                    ads: 23
                        identifier: 23
                    auth: 342
                        api: 180
                            credentials: 2
                            signin: 178
                                internal: 46
                        firstparty: 42
                            shared: 42
                    base: 13
                    cast: 1118
                        games: 55
                        internal: 302
                    clearcut: 53
                    common: 2057
                        api: 693
                            internal: 471
                        data: 141
                        images: 108
                        internal: 654
                            safeparcel: 80
                        server: 187
                            converter: 45
                            response: 132
                        stats: 87
                    dynamic: 213
                    dynamite: 1
                        descriptors: 1
                            com: 1
                                google: 1
                                    android: 1
                                        gms: 1
                                            flags: 1
                    flags: 27
                        impl: 27
                    gcm: 249
                    iid: 114
                    internal: 1070
                    measurement: 1064
                        internal: 1008
                    playlog: 75
                        internal: 75
                    security: 13
                    signin: 145
                        internal: 145
        googlecode: 68
            eyesfree: 68
                braille: 68
                    selfbraille: 68
        jakewharton: 98
            disklrucache: 98
        leanplum: 1554
            activities: 91
            annotations: 14
            callbacks: 32
            internal: 674
            messagetemplates: 191
            utils: 22
            views: 26
        squareup: 3074
            haha: 2312
                guava: 1733
                    base: 170
                    collect: 1560
                    primitives: 3
                perflib: 324
                    analysis: 16
                    io: 33
                trove: 255
            leakcanary: 405
                analyzer: 1
                internal: 129
                watcher: 1
            picasso: 357
    java: 1818
        io: 213
        lang: 507
            ref: 11
            reflect: 40
        math: 18
        net: 146
        nio: 95
            channels: 5
            charset: 24
        security: 66
            cert: 4
            interfaces: 11
            spec: 7
        text: 28
        util: 745
            concurrent: 166
                atomic: 34
                locks: 8
            jar: 9
            logging: 4
            regex: 17
            zip: 34
    javax: 70
        crypto: 29
            spec: 3
        net: 35
            ssl: 32
        security: 3
            auth: 3
                x500: 3
        xml: 3
            parsers: 3
    org: 18660
        json: 190
            simple: 129
                parser: 62
        lucasr: 37
            dspec: 37
        mozilla: 18134
            apache: 393
                commons: 393
                    codec: 393
                        binary: 136
                        digest: 39
                        language: 132
                        net: 67
            gecko: 17073
                activitystream: 344
                    homepanel: 253
                        menu: 57
                        model: 43
                        stream: 26
                        topsites: 41
                        topstories: 9
                    ranking: 65
                adjust: 16
                animation: 62
                annotation: 6
                background: 375
                    common: 119
                        log: 94
                            writers: 68
                    db: 11
                    fxa: 186
                        oauth: 42
                        profile: 6
                    nativecode: 7
                    preferences: 50
                bookmarks: 222
                browserid: 85
                    verifier: 26
                cleanup: 11
                customtabs: 104
                dawn: 4
                db: 804
                deeplink: 1
                delegates: 54
                distribution: 97
                dlc: 146
                    catalog: 77
                feeds: 142
                    action: 56
                    knownsites: 14
                    parser: 37
                    subscriptions: 11
                firstrun: 102
                fxa: 642
                    activities: 118
                    authenticator: 149
                    devices: 65
                    login: 106
                    receivers: 30
                    sync: 118
                gcm: 15
                gfx: 454
                health: 42
                home: 1928
                icons: 244
                    decoders: 46
                    loader: 34
                    preparation: 18
                    processing: 12
                    storage: 32
                lwt: 38
                mdns: 41
                media: 1017
                menu: 278
                mma: 28
                mozglue: 94
                notifications: 49
                overlays: 172
                    service: 52
                        sharemethods: 39
                    ui: 119
                permissions: 37
                preferences: 467
                process: 67
                promotion: 81
                prompts: 153
                push: 136
                    autopush: 51
                reader: 38
                restrictions: 63
                search: 52
                sqlite: 55
                switchboard: 30
                sync: 2249
                    crypto: 57
                    delegates: 33
                    middleware: 85
                        storage: 11
                    net: 227
                    repositories: 1034
                        android: 517
                        delegates: 86
                        domain: 133
                        downloaders: 43
                        uploaders: 96
                    setup: 13
                        activities: 11
                    stage: 249
                    synchronizer: 109
                    telemetry: 21
                tabqueue: 94
                tabs: 467
                telemetry: 188
                    measurements: 16
                    pingbuilders: 47
                    schedulers: 5
                    stores: 31
                text: 28
                thirdparty_unused: 15
                tokenserver: 41
                toolbar: 681
                trackingprotection: 21
                updater: 96
                util: 440
                    publicsuffix: 10
                webapps: 46
                widget: 927
                    themed: 249
            geckoview: 2
            mozstumbler: 405
                service: 405
                    mainthread: 6
                    stumblerthread: 276
                        blocklist: 13
                        datahandling: 62
                        scanners: 157
                            cellscanner: 80
                    uploadthread: 42
                    utils: 42
            search: 261
                autocomplete: 74
                ui: 26
        w3c: 9
            dom: 9
        webrtc: 268
            videoengine: 44
            voiceengine: 161
        xmlpull: 22
            v1: 22
    sun: 2
        misc: 1
        nio: 1
            ch: 1
Whiteboard: [FNC][SPT57.2][MVP]
Hi Joe, Andreas, Blake, Snorp,

Based on the build fail log, I did some summarize and breakdown numbers.(check attachment)

Though we know that the long-term solution is moving on to Gradle build with multi-dex process enabled, and uplifting Gradle build architecture to 56 is obviously impossible even if we push Gradle to land on 58.

So after a little digging on telemetry with Joe, I guess the possible workaround is to disable ChromeCast support temporary between 56~58(after Gradle land), or we deprecate ChromeCast permanently.
https://sql.telemetry.mozilla.org/dashboard/fennec-46-feature-updates

We need Product's call. And also Media team's comment, mobile platform.
Assignee: nobody → max
Flags: needinfo?(snorp)
Flags: needinfo?(max)
Flags: needinfo?(jcheng)
Flags: needinfo?(bwu)
Flags: needinfo?(abovens)
Will block the 57beta release, tracking with the appropriate flag
Can we just turn off Leanplum until we get the gradle build going? It doesn't make sense to disable product features when we can just kill the retention tool that we aren't even using yet...
Flags: needinfo?(snorp)
I guess exoplayer would be my next target, as it's only used for a new feature that we haven't shipped yet (HLS support).
I agree with James. Rather than turning off existing functionality, I'd rather delay introducing new stuff, meaning Leanplum or exoplayer. Let me investigate.
Flags: needinfo?(abovens)
squareup/haha and squareup/leakcanary can be removed from production builds, I would think, which should get us under the limit.
we have very minimal usage on chromecast. There has been discussions around disabling chromecast support in the past so it may be a right time to do so. We are getting positive initial results from retention campaigns we run on beta so I'd want to keep LeanPlum much more than Chromecast
Flags: needinfo?(jcheng)
if exoplayer is the HLS support (and nothing else?), I agree it is also a candidate we can think about postponing
Folks, sorry that I'm late to this party.  I wasn't aware that there was urgency to the Gradle work, and -- sod's law -- it came when I'm on parental leave :)

I would like to raise the possibility of "just using the existing Gradle builds", and accepting some risk.  Nightly and Beta have been building APKs using Gradle, and we're not _aware_ of issues with crossing over.  We (really, I) have been extremely cautious about crossing over because I didn't think we had QA and testing resources to actually verify that we hadn't broken anything.  But the effort going into work-arounds and testing might just be similar to the effort going into cutting over Nightly and figuring out what (if anything!) breaks, and then cutting over Beta, etc.

That is, there's very little _technical_ barrier to just using the Gradle builds, and all sorts of testing/process/risk mitigation barriers.  (It might be that the Gradle builds require work to sign correctly, but I doubt that work is significant.)  But we can cross those barriers with sufficient effort and incentive.  I think this is that incentive, but it's not my decision to make.

(In reply to Nevin Chen [:nechen] from comment #2)
> Using https://github.com/mihaip/dex-method-counts with --count-fields
> I can remove some from Leanplum(91).
> I wonder maybe exoplayer2(4408) and measurement(1064) could be our target
> 
> Just got the field count on central

These numbers look like they come from a Gradle build.  Can you link the APK(s) that you used to generate them?

I wouldn't expect com.squareup.haha to appear in the non-Gradle list, for instance.
(In reply to Nick Alexander :nalexander [parental leave until September 15th] from comment #11)
> (In reply to Nevin Chen [:nechen] from comment #2)
> > Using https://github.com/mihaip/dex-method-counts with --count-fields
> > I can remove some from Leanplum(91).
> > I wonder maybe exoplayer2(4408) and measurement(1064) could be our target
> > 
> > Just got the field count on central
> 
> These numbers look like they come from a Gradle build.  Can you link the
> APK(s) that you used to generate them?
> 
> I wouldn't expect com.squareup.haha to appear in the non-Gradle list, for
> instance.

I asked Nevin yeserday morning, and the apk is from local build. So you are correct, "haha" does not exist in by breakdown sheet.


(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) from comment #5)
> Can we just turn off Leanplum until we get the gradle build going? It
> doesn't make sense to disable product features when we can just kill the
> retention tool that we aren't even using yet...
I guess removing Leanplum can only save us 136 field count, we are still 1051 shortage(66723 - 65536 - 136)
Also, "squareup.haha" does not exist on beta build, leakcannery only contribute 1 field, picasso contributes 190 fields.


(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) from comment #6)
> I guess exoplayer would be my next target, as it's only used for a new
> feature that we haven't shipped yet (HLS support).

I checked the config status of exoplayer,it was switched from nightly only to enable by default on Aug.1st (Bug 1365505). I would also target exoplayer though we will only have 1959 field buffer before overflow.
Flags: needinfo?(kikuo)
IIUC, now we consider deferring HLS to 58?
Cc John Lin and cancel the ni for me since kikuo is ni-ed.
Flags: needinfo?(bwu)
[Triage@0816] No doubt tracking-fennec:+ with P1, Max would you help update the flag? Thanks.
Flags: needinfo?(max)
(In reply to Max Liu [:maliu] from comment #12)
> (In reply to James Willcox (:snorp) (jwillcox@mozilla.com) from comment #6)
> > I guess exoplayer would be my next target, as it's only used for a new
> > feature that we haven't shipped yet (HLS support).
> 
> I checked the config status of exoplayer,it was switched from nightly only
> to enable by default on Aug.1st (Bug 1365505). I would also target exoplayer
> though we will only have 1959 field buffer before overflow.

Per discussion offline with maliu and bwu, we could temporarily fix this bug by backing out Bug 1365505.
Exoplayer source code then won't be included in beta.

Max, do you know who could help on this ?
Flags: needinfo?(max)
Flags: needinfo?(kikuo)
tracking-fennec: ? → +
I've updated Trello cards to reflect that HLS support (exoplayer) will be targeted for 58, given the discussion on this bug.
Comment on attachment 8898664 [details]
Bug 1389990 - back out d5210a2cb19a (Bug 1365505 - Part1-Make the feature flag be exposed not only on nightly. ) "

https://reviewboard.mozilla.org/r/170038/#review175240
Attachment #8898664 - Flags: review?(kikuo) → review+
Comment on attachment 8898663 [details]
Bug 1389990 - back out 80491c51a8e7 (Bug 1365505 - Part2-Turn on the pref for hls not only on nightly.) "

https://reviewboard.mozilla.org/r/170036/#review175242
Attachment #8898663 - Flags: review?(kikuo) → review+
Pushed by max@mxli.us:
https://hg.mozilla.org/integration/autoland/rev/3bf1126bddd8
back out 80491c51a8e7 (Bug 1365505 - Part2-Turn on the pref for hls not only on nightly.) r=kikuo"
https://hg.mozilla.org/integration/autoland/rev/b5fa1d07ad05
back out d5210a2cb19a (Bug 1365505 - Part1-Make the feature flag be exposed not only on nightly. ) r=kikuo"
Comment on attachment 8898663 [details]
Bug 1389990 - back out 80491c51a8e7 (Bug 1365505 - Part2-Turn on the pref for hls not only on nightly.) "

Approval Request Comment
[Feature/Bug causing the regression]: Bug 1365505
[User impact if declined]: Failed to build beta
[Is this code covered by automated tests?]: No
[Has the fix been verified in Nightly?]: Yes
[Needs manual test from QE? If yes, steps to reproduce]: No
[List of other uplifts needed for the feature/fix]: Same bug the other bug
[Is the change risky?]: No
[Why is the change risky/not risky?]: Back out build config
[String changes made/needed]: No
Attachment #8898663 - Flags: approval-mozilla-beta?
Attachment #8898663 - Flags: review?(jolin)
Attachment #8898664 - Flags: review?(jolin)
The backout was merged to m-c.

https://hg.mozilla.org/mozilla-central/rev/b5fa1d07ad05
https://hg.mozilla.org/mozilla-central/rev/3bf1126bddd8
Status: NEW → RESOLVED
Closed: 7 years ago
Flags: needinfo?(topwu.tw)
Flags: needinfo?(s.kaspari)
Resolution: --- → FIXED
Target Milestone: --- → Firefox 57
Status: RESOLVED → VERIFIED
Comment on attachment 8898663 [details]
Bug 1389990 - back out 80491c51a8e7 (Bug 1365505 - Part2-Turn on the pref for hls not only on nightly.) "

Backout to build beta. Beta56+.
Attachment #8898663 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Hi Max,

It seems we can only enable bug 1365505 again on "58".

Could you please help us to set the bug dependency that we can be notified when I can re-land bug 1365505?

Please let us know which bug is the blocker for turning on this feature.

Thank you.
Flags: needinfo?(max)
(In reply to James Cheng[:JamesCheng] from comment #26)
> Hi Max,
> 
> It seems we can only enable bug 1365505 again on "58".
> 
> Could you please help us to set the bug dependency that we can be notified
> when I can re-land bug 1365505?
> 
> Please let us know which bug is the blocker for turning on this feature.
> 
> Thank you.

Hi James,

I have update the your exoplayer patch to depend on bug 1254353, bug 1286677. Let's keep the bug on the loop. Thanks!
Flags: needinfo?(max)
James, I learned from Max that even there are some minor remaining work about Gradle, it's now ready for you to bring HLS back since Fennec 59. Please go ahead and you may consult Max shall you have any question about the setup w/ Gradle. Thanks.

(In reply to James Cheng[:JamesCheng] from comment #26)
> Hi Max,
> It seems we can only enable bug 1365505 again on "58".
> Could you please help us to set the bug dependency that we can be notified
> when I can re-land bug 1365505?
> Please let us know which bug is the blocker for turning on this feature.
> Thank you.
Flags: needinfo?(jacheng)
Sure,

Thanks for your notification. I have no bandwidth recently...

Kilik can do the following work to make Bug 1365505 re-land.

ni? kikuo
Flags: needinfo?(jacheng) → needinfo?(kikuo)
(In reply to James Cheng[:JamesCheng] from comment #29)
> Sure,
> 
> Thanks for your notification. I have no bandwidth recently...
> 
> Kilik can do the following work to make Bug 1365505 re-land.
> 
> ni? kikuo

Just FYI, I expected this to require Bug 1414054 but when I went to check that was the case, I found that enabling HLS at build time did not actually bloat the DEX method count past the limit!  I think that just using Gradle avoids the DEX field count bloat (from all the R.java files) and that allows HLS to just be enabled with no multi-dexing required.

I'd appreciate if somebody else can try this and verify that it works on devices.  I still expect we will need to disable HLS on Bng (non-Gradle builds).  (Note that Bng builds are still confusingly labeled as android-api-16-gradle; it's not worth renaming them before we remove them in Bug 1414415.)
(In reply to Nick Alexander :nalexander from comment #30)
> (In reply to James Cheng[:JamesCheng] from comment #29)
> > Sure,
> > 
> > Thanks for your notification. I have no bandwidth recently...
> > 
> > Kilik can do the following work to make Bug 1365505 re-land.
> > 
> > ni? kikuo
> 
> Just FYI, I expected this to require Bug 1414054 but when I went to check
> that was the case, I found that enabling HLS at build time did not actually
> bloat the DEX method count past the limit!  I think that just using Gradle
> avoids the DEX field count bloat (from all the R.java files) and that allows
> HLS to just be enabled with no multi-dexing required.

See try pushes like https://treeherder.mozilla.org/#/jobs?repo=try&revision=d5aefd953850a86395ecce5f76b939fee331cd35.
(In reply to Nick Alexander :nalexander from comment #30)
> (In reply to James Cheng[:JamesCheng] from comment #29)
> > Sure,
> > 
> > Thanks for your notification. I have no bandwidth recently...
> > 
> > Kilik can do the following work to make Bug 1365505 re-land.
> > 
> > ni? kikuo
> 
> Just FYI, I expected this to require Bug 1414054 but when I went to check
> that was the case, I found that enabling HLS at build time did not actually
> bloat the DEX method count past the limit!  I think that just using Gradle
> avoids the DEX field count bloat (from all the R.java files) and that allows
> HLS to just be enabled with no multi-dexing required.
> 
> I'd appreciate if somebody else can try this and verify that it works on
> devices.  I still expect we will need to disable HLS on Bng (non-Gradle
> builds).  (Note that Bng builds are still confusingly labeled as
> android-api-16-gradle; it's not worth renaming them before we remove them in
> Bug 1414415.)

IIRC, the DEX field count bloat happens on Beta build because some google-related stuff are included.
I'll try to verify that. Thanks for the information.
Flags: needinfo?(kikuo)
Hi Nick,

I dexdump the generated apk under obj-dir/dist/. Here's the result I got.

Nightly            : method_ids_size - 60642
Beta               : method_ids_size - 53122  (Works on device)
Beat(no exoplayer) : method_ids_size - 48785

I built Fennec Beta with the following configs.

'''
ac_add_options --with-branding=mobile/android/branding/beta
ac_add_options --enable-official-branding
export MOZILLA_OFFICIAL=1
'''

I'm not sure if there's any configuration I missed for Fennec Beta.
But it looks like we're not bloating the dex for now : )
You probably want to change the version number in config/milestone.txt to 59.0 (removing the a1) as well, which will force the NIGHTLY_BUILD & RELEASE_OR_BETA ifdefs to change.
(In reply to Ryan VanderMeulen [:RyanVM] from comment #34)
> You probably want to change the version number in config/milestone.txt to
> 59.0 (removing the a1) as well, which will force the NIGHTLY_BUILD &
> RELEASE_OR_BETA ifdefs to change.

Thanks RyanVM.  Kilik, can you try this?  I wasn't involved in the initial backouts so I don't know the details of the DEX bustage.
Flags: needinfo?(kikuo)
Could you try adjust and leanplum stuff with their API keys?
Thanks!
(In reply to Nevin Chen [:nechen] from comment #36)
> Could you try adjust and leanplum stuff with their API keys?
> Thanks!

Hi Nevin,

I'm not familiar with adust/leanplum stuff, how to set API keys for these ? 
Could you elaborate more ? Any documents will be appreciated.
(In reply to Kilik Kuo [:kikuo] from comment #37)
> (In reply to Nevin Chen [:nechen] from comment #36)
> > Could you try adjust and leanplum stuff with their API keys?
> > Thanks!
> 
> Hi Nevin,
> 
> I'm not familiar with adust/leanplum stuff, how to set API keys for these ? 
> Could you elaborate more ? Any documents will be appreciated.

Ah, I just followed Ryan's suggestion and got some errors while rebuilding.

According to the error messages, I think 

this (https://firefox-source-docs.mozilla.org/mobile/android/fennec/adjust.html)
and 
this (https://firefox-source-docs.mozilla.org/mobile/android/fennec/mma.html)

is what nechen metioned. I'll set these tokens and give it a try.
Flags: needinfo?(kikuo)
(In reply to Kilik Kuo [:kikuo] from comment #33)
> Hi Nick,
> 
> I dexdump the generated apk under obj-dir/dist/. Here's the result I got.
> 
> Nightly            : method_ids_size - 60642
> Beta               : method_ids_size - 53122  (Works on device)
> Beat(no exoplayer) : method_ids_size - 48785
> 

After changing the version in config/milestone.txt 
from 59.0a1
to   50.0

and set these configuration in mozconfig 
'''
ac_add_options --with-branding=mobile/android/branding/beta
ac_add_options --enable-official-branding

export MOZILLA_OFFICIAL=1
export MOZ_INSTALL_TRACKING=1
export MOZ_NATIVE_DEVICES=1
export MOZ_ANDROID_MMA=1

ac_add_options --with-adjust-sdk-keyfile="$topsrcdir/mobile/android/base/adjust-sdk-sandbox.token"
ac_add_options --with-leanplum-sdk-keyfile="$topsrcdir/mobile/android/base/leanplum-sdk-sandbox.token"
'''

The dex method count is as below

Beta                     : method_ids_size     - 61374 (Works on device)
Beta (without exoplayer) : method_ids_size     - 57059
This is really good news.  I'm not 100% sure why building with Gradle alone fixed this, since it doesn't appear to be the field count that overflowed earlier.  There are a number of changes internally that could be responsible, and since we're so close to the limit, multi dex (Bug 1414054) is still important.  Now that I think about it... I removed a lot of code for the Search Activity in the 58 window; it's possible that and other clean ups for removing Australis are responsible for the method count drop.
(In reply to Nick Alexander :nalexander from comment #40)
> This is really good news.  I'm not 100% sure why building with Gradle alone
> fixed this, since it doesn't appear to be the field count that overflowed
> earlier.  There are a number of changes internally that could be
> responsible, and since we're so close to the limit, multi dex (Bug 1414054)
> is still important.  Now that I think about it... I removed a lot of code
> for the Search Activity in the 58 window; it's possible that and other clean
> ups for removing Australis are responsible for the method count drop.

Sweat! Nick Thanks !
Btw, is there chance that Bug 1414054 can ride the train 59 or do you know is there any other Fennec features which are about to land in 59 that may increase the method count ?

I'm thinking that if Bug 1414054 can ride the train 59 and there's no other features which may increase the method count dramatically, I'd like to flip the default pref on and make exoplayer included on all brandings soon. (Bug 1365505)
(In reply to Kilik Kuo [:kikuo] (PTO:11/23~11/27) from comment #41)
> (In reply to Nick Alexander :nalexander from comment #40)
> > This is really good news.  I'm not 100% sure why building with Gradle alone
> > fixed this, since it doesn't appear to be the field count that overflowed
> > earlier.  There are a number of changes internally that could be
> > responsible, and since we're so close to the limit, multi dex (Bug 1414054)
> > is still important.  Now that I think about it... I removed a lot of code
> > for the Search Activity in the 58 window; it's possible that and other clean
> > ups for removing Australis are responsible for the method count drop.
> 
> Sweat! Nick Thanks !
> Btw, is there chance that Bug 1414054 can ride the train 59 or do you know
> is there any other Fennec features which are about to land in 59 that may
> increase the method count ?

Fennec development has really slowed, so my expectation is that HLS/exoplayer2 could ride the 58 train if you really wanted it to.  But the 59 train should definitely be fine from a technical perspective, and as far as I know product wants HLS ASAP.

> I'm thinking that if Bug 1414054 can ride the train 59 and there's no other
> features which may increase the method count dramatically, I'd like to flip
> the default pref on and make exoplayer included on all brandings soon. (Bug
> 1365505)

I think that should be fine.  I expect that you will need to disable HLS/exoplayer2 in the non-Gradle build, which is confusingly controlled in https://searchfox.org/mozilla-central/source/mobile/android/config/mozconfigs/android-api-16-gradle.  (We just haven't changed the names; we're hoping to delete that build configuration Real Soon Now: Bug 1414415.)
Product: Firefox for Android → Firefox Build System
Target Milestone: Firefox 57 → mozilla57
You need to log in before you can comment on or make changes to this bug.