summaryrefslogtreecommitdiffstats
path: root/mobile/android/docs/bouncer.rst
blob: 6ba4a5f303d82ab3401ba970d0de04996f0c5931 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
.. -*- Mode: rst; fill-column: 100; -*-

=========================================
 The Firefox for Android install bouncer
=========================================

`Bug 1234629 <https://bugzilla.mozilla.org/show_bug.cgi?id=1234629>`_ and `Bug 1163082
<https://bugzilla.mozilla.org/show_bug.cgi?id=1163082>`_ combine to allow building a very small
Fennec-like "bouncer" APK that redirects (bounces) a potential Fennec user to the marketplace of
their choice -- usually the Google Play Store -- to install the real Firefox for Android application
APK.

The real APK should install seamlessly over top of the bouncer APK.  Care is taken to keep the
bouncer and application APK <permission> manifest definitions identical, and to have the bouncer APK
<activity> manifest definitions look similar to the application APK <activity> manifest definitions.

In addition, the bouncer APK can carry a Fennec distribution, which it copies onto the device before
redirecting to the marketplace.  The application APK recognizes the installed distribution and
customizes itself accordingly on first run.

The motivation is to allow partners to pre-install the very small bouncer APK on shipping devices
and to have a smooth path to upgrade to the full application APK, with a partner-specific
distribution in place.

Technical details
=================

To build the bouncer APK, define ``MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER``.  To pack a distribution
into the bouncer APK (and *not* into the application APK), add a line like::

  ac_add_options --with-android-distribution-directory=/path/to/fennec-distribution-sample

to your ``mozconfig`` file.  See the `general distribution documentation on the wiki
<https://wiki.mozilla.org/Mobile/Distribution_Files>`_ for more information.

The ``distribution`` directory should end up in the ``assets/distribution`` directory of the bouncer
APK.  It will be copied into ``/data/data/$ANDROID_PACKAGE_NAME/distribution`` when the bouncer
executes.