Closed
Bug 1139567
Opened 9 years ago
Closed 7 years ago
Figure out split apk + single locale stuff for Fennec releases
Categories
(Release Engineering :: Release Automation: Other, defect)
Tracking
(Not tracked)
RESOLVED
WONTFIX
People
(Reporter: bhearsum, Assigned: kmoir)
References
Details
Attachments
(1 file)
2.24 KB,
patch
|
bhearsum
:
review+
|
Details | Diff | Splinter Review |
Split APK rode to Beta with Gecko 37 but it doesn't look like the release data submission works correctly. We have a single blob that only has api-11 and x86 in it. I'm guessing that we need to have a separate blob for api-9, but I'm not sure. Do we even do single locale repacks for api-9? Should we? I don't think these updates are fully supported yet, so I've left the beta channel rule pointing at 36.0b10 for the time being.
Assignee | ||
Comment 1•9 years ago
|
||
That's strange. x86 should not be in it, and I believe we need a separate blob for api-9. Investigating.
Assignee: nobody → kmoir
Assignee | ||
Comment 2•9 years ago
|
||
I think this is because I didn't add the rules and channels in the release configs for fennec on release because I was waiting for testing in bug 1117831 to confirm they worked in beta. Will attach patches.
Updated•9 years ago
|
Blocks: splitapk
Status: NEW → ASSIGNED
Summary: figure out split apk + single locale stuff for fennec releases → Figure out split apk + single locale stuff for Fennec releases
Assignee | ||
Comment 3•9 years ago
|
||
Ben, I added new rules for release on Fennec bug can't see the id in the balrog ui or by viewing source. And I don't have the credentials to the balrog db. Is there another way to see the ids of the rules I just added so I can create patches?
Flags: needinfo?(bhearsum)
Reporter | ||
Comment 4•9 years ago
|
||
(In reply to Kim Moir [:kmoir] from comment #3) > Ben, I added new rules for release on Fennec bug can't see the id in the > balrog ui or by viewing source. And I don't have the credentials to the > balrog db. Is there another way to see the ids of the rules I just added so > I can create patches? Booooo, we should probably show this in the UI somewhere....I filed bug 1146496 for this. In the meantime, here's a dump from the db: mysql> select rule_id, product, channel from rules where product="Fennec" order by product, channel; +---------+---------+-------------------+ | rule_id | product | channel | +---------+---------+-------------------+ | 8 | Fennec | aurora | | 106 | Fennec | aurora | | 15 | Fennec | auroratest | | 91 | Fennec | beta | | 120 | Fennec | beta* | | 90 | Fennec | beta-cdntest | | 89 | Fennec | beta-localtest | | 4 | Fennec | nightly | | 87 | Fennec | nightly | | 83 | Fennec | nightly-ash | | 82 | Fennec | nightly-ash | | 6 | Fennec | nightly-cedar | | 86 | Fennec | nightlytest | | 24 | Fennec | nightlytest | | 121 | Fennec | release* | | 125 | Fennec | release-cdntest | | 124 | Fennec | release-localtest | +---------+---------+-------------------+
Flags: needinfo?(bhearsum)
Assignee | ||
Comment 5•9 years ago
|
||
Attachment #8581837 -
Flags: review?(bhearsum)
Reporter | ||
Updated•9 years ago
|
Attachment #8581837 -
Flags: review?(bhearsum) → review+
Reporter | ||
Comment 6•9 years ago
|
||
Wait...I just realized this is about split apk stuff. I don't think we're done here. AFAIK, we need multiple blobs for split APK to work, because api-11 and api-9 both use the same build target. I suspect they're stomping on each other in the current Fennec blobs.
Assignee | ||
Comment 7•9 years ago
|
||
notes from #releng kmoir: so, do we need to make sure that these rules stay up to date now? we've been ignoring them on the beta channel for releases.... bhearsum things have gotten more complicated with split apk, too jlund|mergeduty hmm, because 'android' doesn't exist anywhere anymore? would have thought it still be there for esr so would still need to be in prod-masters rail no android on esr bhearsum i have no idea about thi sone kmoir bhearsum: yes I think they should stay up to date rail jlund|mergeduty: maybe, I was just guessing rail jlund|mergeduty: ah, yes, we updated the template, but not the config rail release-fennec-mozilla-release.py.template vs release-fennec-mozilla-release.py rail and the latter is what used by buildbot bhearsum kmoir: i think we have a problem... jlund|mergeduty right. verifyConfigs still shows android key kmoir bhearsum: what's the problem? bhearsum kmoir: AFAICT, both api-11 and api-9 send data to the same fennec blobs bhearsum which means they override one another bhearsum on nightly and aurora, we have separate blobs for them IIRC kmoir looks bhearsum eg: bhearsum Fennec-mozilla-aurora-nightly-latest and bhearsum Fennec-mozilla-central-api-9-nightly-latest bhearsum or whatever, the branch names bhearsum the fennec release blobs point at files like: "*": "http://download.mozilla.org/?product=fennec-36.0.2&os=%OS_BOUNCER%&lang=%LOCALE%" bhearsum which...i have no idea what that is bhearsum http://download.mozilla.org/?product=fennec-36.0.2&os=android&lang=eo is a 404 bhearsum and even if it wasn't, the we'd end up sending either api-11 or api-9 people to the wrong build.... bhearsum it sounds like the split apk stuff really threw a wrench in this plan jlund|mergeduty bhearsum: right, this hack: http://mxr.mozilla.org/build/source/tools/lib/python/balrog/submitter/cli.py#269 bhearsum yes bhearsum which we've never had to deal with for release builds before jlund|mergeduty bhearsum: in other news, looks like we need to give this file http://mxr.mozilla.org/build/source/buildbot-configs/mozilla/release-fennec-mozilla-release.py the https://bug1119237.bugzilla.mozilla.org/attachment.cgi?id=8578880 treatment (we only patched the template) kmoir I'll fix my patches bhearsum kmoir: i don't think it's as simple as changing buildbot-configs rail I also notices that sentry was trying to get android files with :lang not replaced rail *noticed bhearsum there's a whole bunch of stuff that needs to change, and i'm not sure the best way to go about it bhearsum release automation isn't going to cope with a system that needs multiple rule ids per channel right now
Reporter | ||
Comment 8•9 years ago
|
||
I don't know what the right thing to do here is. The difficulty arises from the fact that we use the same build target for API 11 and API 9, and use OS Version to distinguish them. Balrog doesn't support multiple binaries for the same build target in the same blob. For nightly-style updates we use separate blobs for these. In theory, we could do the same for release builds, but release automation scripts currently have an assumption of one release name per release. Eg, both api-11 and api-9 builds submit to releases like Firefox-36.0.4-build1. We could submit data to two different releases easily enough, but getting release automation to point the correct rules at the correct releases could prove tricky. We could make humans do that for now, though it's far less than ideal. Something we've talked about a little bit before is adding support for different OS Versions in the blob. We've never really scoped this out well, so it's not clear how much work it is. There's certainly going to be issues that arise from OS Versions needing to be partial matches (ie, "Android 4.2.2" and "Android 4.2.1" are to be treated the same, generally) instead of full matches like build targets. No matter what we do with the Balrog side of things, we need to submit separate bouncer entries for api-11 and api-9. We currently submit things to products like Fennec-36.0.4 with OS "android", and point at locations like: /mobile/releases/36.0.4/android/:lang/fennec-36.0.4.:lang.android-arm.apk. These are 404s in a split apk world.
Comment 9•9 years ago
|
||
It might be worth considering as you scope out a solution for this that APK splits can, and eventually probably will, occur along multiple boundaries -- for example, we might go so far as to split on region, screen density, and form factor. Facebook ships sixteen different APKs to Play for each of its releases, and they're not all API-level splits. Of course, not all of these are currently reflected in the updater URL, and Play might well support options that our own updater infra will not (so we'd have to not do those splits, or ship different code to Play versus our own distributions). A solution based on including the Android SDK int (I wouldn't call it "OS version") will suffice for now, but is definitely kicking the can down the road.
Reporter | ||
Comment 10•9 years ago
|
||
(In reply to Richard Newman [:rnewman] from comment #9) > It might be worth considering as you scope out a solution for this that APK > splits can, and eventually probably will, occur along multiple boundaries -- > for example, we might go so far as to split on region, screen density, and > form factor. It's great to have some sort of idea of what the future looks like, thank you. > Facebook ships sixteen different APKs to Play for each of its releases, and > they're not all API-level splits. > > Of course, not all of these are currently reflected in the updater URL, and > Play might well support options that our own updater infra will not (so we'd > have to not do those splits, or ship different code to Play versus our own > distributions). > > A solution based on including the Android SDK int (I wouldn't call it "OS > version") will suffice for now, but is definitely kicking the can down the > road. So, Nick and I were chatting about this a bit last night, and it seems to us that the thing that best fits our existing model for updates is to ensure that we have a unique build target (that's the Android_arm-eabi-gcc3 bit) for each stream of builds. It's an assumption that the update code has made for quite some time, and the fact that we're using the same one for api-11 and api-9 right now is the main source of pain here. Had we gone we separate build targets for these, this bug would be trivial. Eg, something like: Android_arm-eabi-gcc3-api9 Android_arm_eabi-gcc3-api11 What do you think about adjusting it, Richard? Obviously we'll need to do something special for the builds that have already shipped, but doing that as one-off isn't a big deal. And on a sidenote, if there's things we may want to split on in the future, adding them to the update URL now would let us fork those users onto new streams of builds later without them needing to opt-in. We could have things like: Android_arm-eabi-gcc3-api9-smallscreen Android_arm-eabi-gcc3-api9-bigscreen Android_arm-eabi-gcc3-api11-smallscreen Android_arm-eabi-gcc3-api11-bigscreen etc. The only restriction here is that it would be a bad idea to use fully dynamic information to avoid exploding the number of possibilitie too muchs. Eg: the client could make the call about whether to send smallscreen or bigscreen based on dpi or something. Sending the raw dpi or actual screen size would give us 100s (if not thousands) of possibilities, which becomes unmanageable. We probably want to move this out to a different bug.
Flags: needinfo?(rnewman)
Comment 11•9 years ago
|
||
(In reply to Ben Hearsum [:bhearsum] from comment #10) > Android_arm-eabi-gcc3-api9 > Android_arm_eabi-gcc3-api11 > > What do you think about adjusting it, Richard? That seems pretty straightforward from an implementation standpoint. That string is computed here: .replace("%BUILD_TARGET%", "Android_" + AppConstants.MOZ_APP_ABI + pkgSpecial) so I think this is as simple as putting something in AppConstants.MOZ_PKG_SPECIAL (and figuring out what scheme to use, obv.) **However** -- and this is a big however -- the SDK version is something that we *want* to be dynamic. Users upgrade their device OS, at which point the updater needs to run and fetch a *different* build. So it's not enough to say "here's the build I'm running", because that's not necessarily the build the user *should* be running. (That's on reason why I suggested a few months ago ripping out the OS version from the updater path and replacing it with the SDK int. Same thing but more precise, easier to map to a build.) Screen dimensions etc. should be immutable, and the EABI likely is, but some of these could vary. That implies that a solution here is not a solution like a fixed file hierarchy, but a computed lookup. "Oh, you're using API21 on an ARMv7 tablet? Here's our standard API11+ build."
Flags: needinfo?(rnewman)
Reporter | ||
Comment 12•9 years ago
|
||
(In reply to Richard Newman [:rnewman] from comment #11) > (In reply to Ben Hearsum [:bhearsum] from comment #10) > > > Android_arm-eabi-gcc3-api9 > > Android_arm_eabi-gcc3-api11 > > > > What do you think about adjusting it, Richard? > > That seems pretty straightforward from an implementation standpoint. That > string is computed here: > > .replace("%BUILD_TARGET%", "Android_" + AppConstants.MOZ_APP_ABI > + pkgSpecial) > > so I think this is as simple as putting something in > AppConstants.MOZ_PKG_SPECIAL (and figuring out what scheme to use, obv.) > > > **However** -- and this is a big however -- the SDK version is something > that we *want* to be dynamic. Users upgrade their device OS, at which point > the updater needs to run and fetch a *different* build. > > So it's not enough to say "here's the build I'm running", because that's not > necessarily the build the user *should* be running. > > (That's on reason why I suggested a few months ago ripping out the OS > version from the updater path and replacing it with the SDK int. Same thing > but more precise, easier to map to a build.) Right, so the Build Target doesn't necessary have to be a static thing. I guess it's not quite accurate to say "one build target per stream of binaries", it's more like "no build target should be used for multiple *different* binaries". The "api" specification should be dynamically calculated based on what the user is running. As an example, we do this for our Desktop Firefox OS X builds. The browser could send one of the following, depending on the arch of the platform its running on: Darwin_x86_64-gcc3-u-i386-x86_64 Darwin_x86-gcc3-u-i386-x86_64 And I assume we could something similar here, where the updater decides whether to send api-9 or api-11 based on the Android version. > That implies that a solution here is not a solution like a fixed file > hierarchy, but a computed lookup. "Oh, you're using API21 on an ARMv7 > tablet? Here's our standard API11+ build." I think we're on the same page here -- this is exactly what we want to do. We have the ability to do it with Build Target, but not with OS Version.
Comment 13•9 years ago
|
||
Gotcha. So if we sent Android_arm-eabi-gcc3_api21 would you expect that to work (i.e., to serve the API 11+ build)? (The alternative is that the client is responsible for figuring out which build it should request, which of course will be wrong if we introduce or remove a split since that build was made.)
Reporter | ||
Comment 14•9 years ago
|
||
(In reply to Richard Newman [:rnewman] from comment #13) > Gotcha. So if we sent > > Android_arm-eabi-gcc3_api21 > > would you expect that to work (i.e., to serve the API 11+ build)? We can make that work. We just need to know all of the possible build targets are (which is why I was talking about making them not "fully" dynamic in a prior comment). We map the build platforms to build targets over here: https://github.com/mozilla/build-tools/blob/master/lib/python/release/platforms.py#L22 -- so as long as those are set-up correctly we can serve the right update to each of them. To be a little more explicit about this, I would imagine that the pseudocode would look something like: if android_version < foo: api_level = 9 elif android_version < bar: api_level = 11 elif android_version < baz: api_level = 14 else: api_level = 16 ...as opposed to: api_level = android_version It gets a bit more complicated when we add new api_level definitions, of course. The way we've dealt with this in the past is "watersheding" people through a version that sets them correctly. Eg, if we add api_level 18 in Firefox 40, users on 39 (or earlier) + api level 16 would first get an update to 40, and then their next update check would correctly specify api_level 16 or 18, and we'd offer them the correct update to 41, 42, 43, etc. > > (The alternative is that the client is responsible for figuring out which > build it should request, which of course will be wrong if we introduce or > remove a split since that build was made.) Yeah, this seems bad to me. We explicitly want to be able to tell the client what to do from the server, otherwise it's easy to get into cases where the client gets stuck.
Comment 15•9 years ago
|
||
(In reply to Ben Hearsum [:bhearsum] from comment #14) > ...as opposed to: > api_level = android_version Makes perfect sense to me. > It gets a bit more complicated when we add new api_level definitions, of > course. The way we've dealt with this in the past is "watersheding" people > through a version that sets them correctly. Eg, if we add api_level 18 in > Firefox 40, users on 39 (or earlier) + api level 16 would first get an > update to 40, and then their next update check would correctly specify > api_level 16 or 18, and we'd offer them the correct update to 41, 42, 43, > etc. In theory this isn't necessary (and of course chained updates are a pain for users; each is a 35MB download!); so long as the device sends its api_level as part of the update request, it can jump right to the end state, regardless of how many splits we've added. The only situation I think we need watershedding is if we change the update URL itself, or the semantics of its fields -- so if we added is_tablet, say, we'd need to get you to the first release that knows how to send that, then after the next update check you might get another build that switched on that flag. If by "api_level definitions" you mean that kind of addition, rather than just new numeric API level splits, then I think we're saying the same thing :D
Comment 16•9 years ago
|
||
I'm gonna put together a list of dispatchable fields some time today.
Flags: needinfo?(rnewman)
Reporter | ||
Comment 17•9 years ago
|
||
(In reply to Richard Newman [:rnewman] from comment #15) > (In reply to Ben Hearsum [:bhearsum] from comment #14) > > > ...as opposed to: > > api_level = android_version > > Makes perfect sense to me. > > > > It gets a bit more complicated when we add new api_level definitions, of > > course. The way we've dealt with this in the past is "watersheding" people > > through a version that sets them correctly. Eg, if we add api_level 18 in > > Firefox 40, users on 39 (or earlier) + api level 16 would first get an > > update to 40, and then their next update check would correctly specify > > api_level 16 or 18, and we'd offer them the correct update to 41, 42, 43, > > etc. > > In theory this isn't necessary (and of course chained updates are a pain for > users; each is a 35MB download!); so long as the device sends its api_level > as part of the update request, it can jump right to the end state, > regardless of how many splits we've added. Hmmm. I think the "else" case from my previous comments means that version higher than some value (the maximum one that we specify) will all be the same thing. Eg, api_level 16 in Firefox 38 might be the maximum one we define. This means that Firefox 38 running on Android with api level 16 or *higher* would look the same to the update server. If we want to give api level 18 users their own build, we'd have to ship the Firefox 38 users a build that can specify api level 18 (say, in Firefox 39), and then we'd be able to distinguish those two populations for Firefox 40. Now, if we're forward looking enough that we define all the useful api levels ahead of time, this might not be an issue. > The only situation I think we need watershedding is if we change the update > URL itself, or the semantics of its fields -- so if we added is_tablet, say, > we'd need to get you to the first release that knows how to send that, then > after the next update check you might get another build that switched on > that flag. > > If by "api_level definitions" you mean that kind of addition, rather than > just new numeric API level splits, then I think we're saying the same thing > :D api_level was just an example, actually. I'm talking about the situation I spelled out more above, or things like this where we add a totally new thing.
Comment 18•9 years ago
|
||
(In reply to Ben Hearsum [:bhearsum] from comment #17) > Hmmm. I think the "else" case from my previous comments means that version > higher than some value (the maximum one that we specify) will all be the > same thing. Eg, api_level 16 in Firefox 38 might be the maximum one we > define. This means that Firefox 38 running on Android with api level 16 or > *higher* would look the same to the update server. Doesn't have to. Remember, clients will all report their true API level. The update server can change over time, so right now we'll have: if x86 apk = (x86, *) else if (sdk_int < 11) apk = (arm, 9) else apk = (arm, 11) and we can seamlessly add new clauses whenever we have new split builds to offer. > If we want to give api > level 18 users their own build, we'd have to ship the Firefox 38 users a > build that can specify api level 18 (say, in Firefox 39), and then we'd be > able to distinguish those two populations for Firefox 40. That's why I suggested that clients truthfully report their metadata, and we do the mapping in the update server. Adding an API 18 split simply means adding a clause to that lookup table above; the clients don't need to change at all. On the topic of future splits, here are the splits that Play supports: --- Support different OpenGL texture compression formats with each APK. Support different screen sizes and densities with each APK. Support different device feature sets with each APK. Support different platform versions with each APK. Support different CPU architectures with each APK (such as for ARM, x86, and MIPS, when your app uses the Android NDK). --- I've seen reports of people doing per-country distributions, but I believe this is only at the listing level. We could do it for our own updater if we wish. The fields I think we should support eventually: - CPU arch. We already do. - Platform (SDK) version. This has been the subject so far. - Screen size. small, normal, large, xlarge. The first two mean phones, the last two mean tablets. We'll need to do a little work here to decide how to make this attribute match Play. Splitting between tablet and phone will buy us a fair amount of space. This split would only meaningfully affect 11+. - Screen density. In theory this allows us to craft APKs for each of ldpi up to xxxhdpi, and include only the necessary image resources. This would make a request like: Android_arm_eabi-gcc3-api21-large-xxhdpi for which we would currently return: http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mozilla-central-android-api-11/fennec-39.0a1.multi.android-arm.apk and eventually perhaps return: http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mozilla-central-android-api-19-tablet-xxhdpi/fennec-42.0a1.multi.android-arm.apk (I think the CPU specifier should really be Androidy -- "armeabi-v7a", but I guess we must already ship code to translate that into Mozilla-ey, or rely on it never changing.) Does that make sense?
Flags: needinfo?(rnewman)
Comment 19•9 years ago
|
||
Could you remind me of the reward for providing single-locale apks ? There's a reasonable amount of work ahead to support multiple splits like this in the update server, and I just want to check there's enough bang for that time-buck, as it were.
Assignee | ||
Comment 20•9 years ago
|
||
The original request for single locale updates is documented here https://bugzilla.mozilla.org/show_bug.cgi?id=1019724#c6 "More specifically, the Maithili community is planning on pointing users to single locale builds which will not have any update mechanism.... Beyond the Maithili community, non-play-store updates will allow us to address non-play-store devices like the Kindle Fires and phones in China."
Reporter | ||
Comment 21•9 years ago
|
||
(In reply to Richard Newman [:rnewman] from comment #18) > (In reply to Ben Hearsum [:bhearsum] from comment #17) > > > Hmmm. I think the "else" case from my previous comments means that version > > higher than some value (the maximum one that we specify) will all be the > > same thing. Eg, api_level 16 in Firefox 38 might be the maximum one we > > define. This means that Firefox 38 running on Android with api level 16 or > > *higher* would look the same to the update server. > > Doesn't have to. Remember, clients will all report their true API level. The > update server can change over time, so right now we'll have: > > if x86 > apk = (x86, *) > else if (sdk_int < 11) > apk = (arm, 9) > else > apk = (arm, 11) > > and we can seamlessly add new clauses whenever we have new split builds to > offer. > > > > If we want to give api > > level 18 users their own build, we'd have to ship the Firefox 38 users a > > build that can specify api level 18 (say, in Firefox 39), and then we'd be > > able to distinguish those two populations for Firefox 40. > > That's why I suggested that clients truthfully report their metadata, and we > do the mapping in the update server. Adding an API 18 split simply means > adding a clause to that lookup table above; the clients don't need to change > at all. Ah, I see. I had it in my head that we'd map API levels to our own values. Not doing that should be fine as long as the list doesn't get too far out of control. > I've seen reports of people doing per-country distributions, but I believe > this is only at the listing level. We could do it for our own updater if we > wish. Per-country isn't something we support right now. That's bug 858114. > The fields I think we should support eventually: > > - CPU arch. We already do. > - Platform (SDK) version. This has been the subject so far. > - Screen size. small, normal, large, xlarge. The first two mean phones, > the last two mean tablets. We'll need to do a little work here to decide how > to make this attribute match Play. Splitting between tablet and phone will > buy us a fair amount of space. This split would only meaningfully affect 11+. > - Screen density. In theory this allows us to craft APKs for each of ldpi > up to xxxhdpi, and include only the necessary image resources. > > > This would make a request like: > > Android_arm_eabi-gcc3-api21-large-xxhdpi > > for which we would currently return: > > > http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mozilla-central- > android-api-11/fennec-39.0a1.multi.android-arm.apk > > and eventually perhaps return: > > > http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mozilla-central- > android-api-19-tablet-xxhdpi/fennec-42.0a1.multi.android-arm.apk > > > (I think the CPU specifier should really be Androidy -- "armeabi-v7a", but I > guess we must already ship code to translate that into Mozilla-ey, or rely > on it never changing.) > > > Does that make sense? Yeah, sounds pretty reasonable to me. (In reply to Nick Thomas [:nthomas] from comment #19) > Could you remind me of the reward for providing single-locale apks ? There's > a reasonable amount of work ahead to support multiple splits like this in > the update server, and I just want to check there's enough bang for that > time-buck, as it were. This is a good point. I think we _do_ need to move the api level to the build target to fix this bug, but before we start adding all sorts of other bits we should probably get this answered.
Reporter | ||
Comment 22•9 years ago
|
||
> (In reply to Nick Thomas [:nthomas] from comment #19)
> > Could you remind me of the reward for providing single-locale apks ? There's
> > a reasonable amount of work ahead to support multiple splits like this in
> > the update server, and I just want to check there's enough bang for that
> > time-buck, as it were.
>
> This is a good point. I think we _do_ need to move the api level to the
> build target to fix this bug, but before we start adding all sorts of other
> bits we should probably get this answered.
Mark, can you answer this?
Flags: needinfo?(mark.finkle)
Reporter | ||
Comment 23•9 years ago
|
||
(In reply to Ben Hearsum [:bhearsum] from comment #22) > > (In reply to Nick Thomas [:nthomas] from comment #19) > > > Could you remind me of the reward for providing single-locale apks ? There's > > > a reasonable amount of work ahead to support multiple splits like this in > > > the update server, and I just want to check there's enough bang for that > > > time-buck, as it were. > > > > This is a good point. I think we _do_ need to move the api level to the > > build target to fix this bug, but before we start adding all sorts of other > > bits we should probably get this answered. Catlee pointed out that this potentially affects more than just single locale, because even multilocale builds on Nightly/Aurora update through AUS.
Assignee | ||
Comment 24•9 years ago
|
||
:mfinkle can you answer the questions in comment 22?
Comment 25•9 years ago
|
||
redirecting the NI to karen
Flags: needinfo?(mark.finkle) → needinfo?(krudnitski)
Comment 26•9 years ago
|
||
Fennec's APK size is becoming more and more of a barrier for download or even pre-install. 1) Ordinary people are reticent in downloading Firefox on their mobile because of how much data they would consume by downloading it (as well as the regular updates) that it's becoming a decision factor in NOT trying out the app. This applies to pay-as-you-go users and other users who are much more price sensitive. We're hearing this in LatAm and also in our East Asian countries. 2) Pre-install (even pay-to-play) opportunities are also scrutinizing the size of our APK as it means that other apps can't be loaded. Important for lower- and medium- speced phones, which is the vast majority of phones out there. Splitting out the APK allows us the flexibility to target pre-install and download opportunities with a targeted offering whilst reducing the size of the APK itself (to not include bytes that will most likely never be used by that audience). This reduces one of our barriers to adoption.
Flags: needinfo?(krudnitski)
Assignee | ||
Comment 27•7 years ago
|
||
I don't think this bug is relevant anymore
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → WONTFIX
You need to log in
before you can comment on or make changes to this bug.
Description
•