summaryrefslogtreecommitdiffstats
path: root/mobile/android/config
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/config')
-rwxr-xr-xmobile/android/config/js_wrapper.sh20
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/beta10
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/debug13
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/debug-beta13
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/debug-lite7
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/l10n-nightly23
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/l10n-nightly-lite7
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/nightly10
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/nightly-artifact12
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/nightly-artifact-lite11
-rw-r--r--mobile/android/config/mozconfigs/android-aarch64/nightly-lite7
-rw-r--r--mobile/android/config/mozconfigs/android-arm-gradle-dependencies/base40
-rw-r--r--mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly7
-rw-r--r--mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly-lite10
-rw-r--r--mobile/android/config/mozconfigs/android-arm/beta10
-rw-r--r--mobile/android/config/mozconfigs/android-arm/debug13
-rw-r--r--mobile/android/config/mozconfigs/android-arm/debug-beta13
-rw-r--r--mobile/android/config/mozconfigs/android-arm/debug-ccov21
-rw-r--r--mobile/android/config/mozconfigs/android-arm/debug-ccov-lite22
-rw-r--r--mobile/android/config/mozconfigs/android-arm/debug-lite14
-rw-r--r--mobile/android/config/mozconfigs/android-arm/debug-searchfox18
-rw-r--r--mobile/android/config/mozconfigs/android-arm/l10n-nightly23
-rw-r--r--mobile/android/config/mozconfigs/android-arm/l10n-nightly-lite9
-rw-r--r--mobile/android/config/mozconfigs/android-arm/nightly10
-rw-r--r--mobile/android/config/mozconfigs/android-arm/nightly-android-lints34
-rw-r--r--mobile/android/config/mozconfigs/android-arm/nightly-android-lints-lite35
-rw-r--r--mobile/android/config/mozconfigs/android-arm/nightly-lite11
-rw-r--r--mobile/android/config/mozconfigs/android-x86/beta9
-rw-r--r--mobile/android/config/mozconfigs/android-x86/debug13
-rw-r--r--mobile/android/config/mozconfigs/android-x86/debug-beta13
-rw-r--r--mobile/android/config/mozconfigs/android-x86/debug-lite14
-rw-r--r--mobile/android/config/mozconfigs/android-x86/l10n-nightly23
-rw-r--r--mobile/android/config/mozconfigs/android-x86/l10n-nightly-lite9
-rw-r--r--mobile/android/config/mozconfigs/android-x86/nightly10
-rw-r--r--mobile/android/config/mozconfigs/android-x86/nightly-artifact12
-rw-r--r--mobile/android/config/mozconfigs/android-x86/nightly-artifact-lite12
-rw-r--r--mobile/android/config/mozconfigs/android-x86/nightly-lite11
-rw-r--r--mobile/android/config/mozconfigs/android-x86/profile-generate6
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/beta10
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/debug13
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/debug-beta13
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/debug-fuzzing11
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/debug-fuzzing-lite5
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/debug-isolated-process15
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/debug-lite7
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/l10n-nightly23
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/l10n-nightly-lite7
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/nightly10
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/nightly-artifact12
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/nightly-artifact-lite12
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan32
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan-lite5
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/nightly-lite7
-rw-r--r--mobile/android/config/mozconfigs/android-x86_64/profile-generate6
-rw-r--r--mobile/android/config/mozconfigs/common37
-rw-r--r--mobile/android/config/mozconfigs/common.override10
-rw-r--r--mobile/android/config/proguard/adjust-keeps.cfg20
-rw-r--r--mobile/android/config/proguard/appcompat-v7-keeps.cfg18
-rw-r--r--mobile/android/config/proguard/leakcanary-keeps.cfg7
-rw-r--r--mobile/android/config/proguard/play-services-keeps.cfg19
-rw-r--r--mobile/android/config/proguard/proguard-android.cfg78
-rw-r--r--mobile/android/config/proguard/proguard-leanplum.cfg347
-rw-r--r--mobile/android/config/proguard/proguard.cfg165
-rw-r--r--mobile/android/config/proguard/strip-libs.cfg41
-rw-r--r--mobile/android/config/tooltool-manifests/android-x86/releng.manifest10
-rw-r--r--mobile/android/config/tooltool-manifests/android/releng.manifest10
66 files changed, 1505 insertions, 0 deletions
diff --git a/mobile/android/config/js_wrapper.sh b/mobile/android/config/js_wrapper.sh
new file mode 100755
index 0000000000..464d5c63c9
--- /dev/null
+++ b/mobile/android/config/js_wrapper.sh
@@ -0,0 +1,20 @@
+#! /bin/sh
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Wrapper for running SpiderMonkey js shell in automation with correct
+# LD_LIBRARY_PATH.
+
+# We don't have a reference to topsrcdir at this point, but we are invoked as
+# "$topsrcdir/mobile/android/config/js_wrapper.sh" so we can extract topsrcdir
+# from $0.
+topsrcdir=`cd \`dirname $0\`/../../..; pwd`
+
+JS_BINARY="$topsrcdir/jsshell/js"
+
+LD_LIBRARY_PATH="$topsrcdir/jsshell${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}"
+export LD_LIBRARY_PATH
+
+# Pass through all arguments and exit with status from js shell.
+exec "$JS_BINARY" "$@"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/beta b/mobile/android/config/mozconfigs/android-aarch64/beta
new file mode 100644
index 0000000000..81bc5a50b8
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/beta
@@ -0,0 +1,10 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --target=aarch64-linux-android
+
+ac_add_options --with-branding=mobile/android/branding/beta
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/debug b/mobile/android/config/mozconfigs/android-aarch64/debug
new file mode 100644
index 0000000000..b745f8d41f
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/debug
@@ -0,0 +1,13 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=aarch64-linux-android
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/debug-beta b/mobile/android/config/mozconfigs/android-aarch64/debug-beta
new file mode 100644
index 0000000000..e592b75247
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/debug-beta
@@ -0,0 +1,13 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=aarch64-linux-android
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/beta
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/debug-lite b/mobile/android/config/mozconfigs/android-aarch64/debug-lite
new file mode 100644
index 0000000000..baf668cee5
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/debug-lite
@@ -0,0 +1,7 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+ac_add_options --enable-geckoview-lite
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-aarch64/debug"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/l10n-nightly b/mobile/android/config/mozconfigs/android-aarch64/l10n-nightly
new file mode 100644
index 0000000000..4f33a0580d
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/l10n-nightly
@@ -0,0 +1,23 @@
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-aarch64/nightly"
+
+# L10n
+
+# Don't autoclobber l10n, as this can lead to missing binaries and broken builds
+# Bug 1283438
+mk_add_options AUTOCLOBBER=
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+# Global options
+ac_add_options --disable-tests
+ac_add_options --disable-nodejs
+unset NODEJS
+
+ac_add_options --enable-updater
+ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/l10n-nightly-lite b/mobile/android/config/mozconfigs/android-aarch64/l10n-nightly-lite
new file mode 100644
index 0000000000..68a76fa51e
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/l10n-nightly-lite
@@ -0,0 +1,7 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-aarch64/nightly-lite"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-aarch64/l10n-nightly"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/nightly b/mobile/android/config/mozconfigs/android-aarch64/nightly
new file mode 100644
index 0000000000..67fb41475d
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/nightly
@@ -0,0 +1,10 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --target=aarch64-linux-android
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/nightly-artifact b/mobile/android/config/mozconfigs/android-aarch64/nightly-artifact
new file mode 100644
index 0000000000..83de907ee6
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/nightly-artifact
@@ -0,0 +1,12 @@
+. "$topsrcdir/build/mozconfig.artifact.automation"
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-aarch64/nightly"
+
+. "$topsrcdir/build/mozconfig.artifact"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/nightly-artifact-lite b/mobile/android/config/mozconfigs/android-aarch64/nightly-artifact-lite
new file mode 100644
index 0000000000..88b43b841c
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/nightly-artifact-lite
@@ -0,0 +1,11 @@
+. "$topsrcdir/build/mozconfig.artifact.automation"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-aarch64/nightly-artifact"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-aarch64/nightly-lite"
+
+. "$topsrcdir/build/mozconfig.artifact"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-aarch64/nightly-lite b/mobile/android/config/mozconfigs/android-aarch64/nightly-lite
new file mode 100644
index 0000000000..c1d3b71b0d
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-aarch64/nightly-lite
@@ -0,0 +1,7 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+ac_add_options --enable-geckoview-lite
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-aarch64/nightly"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/base b/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/base
new file mode 100644
index 0000000000..d246cf24d7
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/base
@@ -0,0 +1,40 @@
+# Many things aren't appropriate for a frontend-only build.
+MOZ_AUTOMATION_BUILD_SYMBOLS=0
+MOZ_AUTOMATION_PACKAGE=0
+MOZ_AUTOMATION_UPLOAD=0
+MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# We want to download Gradle.
+ac_add_options --with-gradle
+# We want to use (and populate!) the local Nexus repositories.
+export GRADLE_MAVEN_REPOSITORIES="http://localhost:8081/nexus/content/repositories/mozilla/","http://localhost:8081/nexus/content/repositories/google/","http://localhost:8081/nexus/content/repositories/central/","http://localhost:8081/nexus/content/repositories/gradle-plugins/"
+# Nexus runs on HTTP
+ac_add_options --allow-insecure-gradle-repositories
+
+# From here on, just like ../android-arm/nightly.
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+ac_add_options --target=arm-linux-androideabi
+
+ac_add_options --disable-tests
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+export MOZILLA_OFFICIAL=1
+
+# mozconfigs/common.override would be here, but it needs to be last in the file.
+# End ../android-arm/nightly.
+
+# Disable Keyfile Loading (and checks) since dependency fetching doesn't need these keys.
+# This overrides the settings in the common android mozconfig
+ac_add_options --without-mozilla-api-keyfile
+ac_add_options --without-google-location-service-api-keyfile
+ac_add_options --without-google-safebrowsing-api-keyfile
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly b/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly
new file mode 100644
index 0000000000..17eb2d53be
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly
@@ -0,0 +1,7 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/base"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly-lite b/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly-lite
new file mode 100644
index 0000000000..b6ce2a3e3b
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly-lite
@@ -0,0 +1,10 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+# Android
+ac_add_options --enable-geckoview-lite
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-arm-gradle-dependencies/base"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/beta b/mobile/android/config/mozconfigs/android-arm/beta
new file mode 100644
index 0000000000..6d76977c94
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/beta
@@ -0,0 +1,10 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+
+ac_add_options --with-branding=mobile/android/branding/beta
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/debug b/mobile/android/config/mozconfigs/android-arm/debug
new file mode 100644
index 0000000000..bcf9cad4c4
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/debug
@@ -0,0 +1,13 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/debug-beta b/mobile/android/config/mozconfigs/android-arm/debug-beta
new file mode 100644
index 0000000000..ca8697c647
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/debug-beta
@@ -0,0 +1,13 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/beta
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/debug-ccov b/mobile/android/config/mozconfigs/android-arm/debug-ccov
new file mode 100644
index 0000000000..9dc98f1971
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/debug-ccov
@@ -0,0 +1,21 @@
+. "$topsrcdir/build/mozconfig.artifact.automation"
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+ac_add_options --enable-java-coverage
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-arm/debug"
+
+. "$topsrcdir/build/mozconfig.artifact"
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/debug-ccov-lite b/mobile/android/config/mozconfigs/android-arm/debug-ccov-lite
new file mode 100644
index 0000000000..04bc844085
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/debug-ccov-lite
@@ -0,0 +1,22 @@
+. "$topsrcdir/build/mozconfig.artifact.automation"
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+ac_add_options --enable-java-coverage
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+ac_add_options --enable-geckoview-lite
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-arm/debug"
+
+. "$topsrcdir/build/mozconfig.artifact"
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/debug-lite b/mobile/android/config/mozconfigs/android-arm/debug-lite
new file mode 100644
index 0000000000..be2a05fe59
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/debug-lite
@@ -0,0 +1,14 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+ac_add_options --enable-geckoview-lite
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/debug-searchfox b/mobile/android/config/mozconfigs/android-arm/debug-searchfox
new file mode 100644
index 0000000000..89b779b803
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/debug-searchfox
@@ -0,0 +1,18 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+# Save rust analysis (this requires unlocking the unstable features,
+# which is done in the taskcluster task definition via RUSTC_BOOTSTRAP)
+export RUSTFLAGS="-Zsave-analysis"
+ac_add_options --enable-mozsearch-plugin
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/l10n-nightly b/mobile/android/config/mozconfigs/android-arm/l10n-nightly
new file mode 100644
index 0000000000..62e02bcc3e
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/l10n-nightly
@@ -0,0 +1,23 @@
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-arm/nightly"
+
+# L10n
+
+# Don't autoclobber l10n, as this can lead to missing binaries and broken builds
+# Bug 1283438
+mk_add_options AUTOCLOBBER=
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+# Global options
+ac_add_options --disable-tests
+ac_add_options --disable-nodejs
+unset NODEJS
+
+ac_add_options --enable-updater
+ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/l10n-nightly-lite b/mobile/android/config/mozconfigs/android-arm/l10n-nightly-lite
new file mode 100644
index 0000000000..21d7fe55a3
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/l10n-nightly-lite
@@ -0,0 +1,9 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-arm/nightly-lite"
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-arm/l10n-nightly"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/nightly b/mobile/android/config/mozconfigs/android-arm/nightly
new file mode 100644
index 0000000000..c9232056e5
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/nightly
@@ -0,0 +1,10 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/nightly-android-lints b/mobile/android/config/mozconfigs/android-arm/nightly-android-lints
new file mode 100644
index 0000000000..094ca33ebd
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/nightly-android-lints
@@ -0,0 +1,34 @@
+# Many things aren't appropriate for a frontend-only build.
+MOZ_AUTOMATION_BUILD_SYMBOLS=0
+MOZ_AUTOMATION_PACKAGE=0
+MOZ_AUTOMATION_UPLOAD=0
+MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+ac_add_options --disable-tests
+
+# From here on, like ../android-arm/nightly.
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+export MOZILLA_OFFICIAL=1
+
+# mozconfigs/common.override would be here, but it needs to be last in the file.
+# End ../android-arm/nightly.
+
+# Disable Keyfile Loading (and checks) since.
+# This overrides the settings in the common android mozconfig
+ac_add_options --without-mozilla-api-keyfile
+ac_add_options --without-google-location-service-api-keyfile
+ac_add_options --without-google-safebrowsing-api-keyfile
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/nightly-android-lints-lite b/mobile/android/config/mozconfigs/android-arm/nightly-android-lints-lite
new file mode 100644
index 0000000000..bb0410e077
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/nightly-android-lints-lite
@@ -0,0 +1,35 @@
+# Many things aren't appropriate for a frontend-only build.
+MOZ_AUTOMATION_BUILD_SYMBOLS=0
+MOZ_AUTOMATION_PACKAGE=0
+MOZ_AUTOMATION_UPLOAD=0
+MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+ac_add_options --disable-tests
+
+# From here on, like ../android-arm/nightly.
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+ac_add_options --enable-geckoview-lite
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+export MOZILLA_OFFICIAL=1
+
+# mozconfigs/common.override would be here, but it needs to be last in the file.
+# End ../android-arm/nightly.
+
+# Disable Keyfile Loading (and checks) since.
+# This overrides the settings in the common android mozconfig
+ac_add_options --without-mozilla-api-keyfile
+ac_add_options --without-google-location-service-api-keyfile
+ac_add_options --without-google-safebrowsing-api-keyfile
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-arm/nightly-lite b/mobile/android/config/mozconfigs/android-arm/nightly-lite
new file mode 100644
index 0000000000..46172b8f62
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-arm/nightly-lite
@@ -0,0 +1,11 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --target=arm-linux-androideabi
+ac_add_options --enable-geckoview-lite
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/beta b/mobile/android/config/mozconfigs/android-x86/beta
new file mode 100644
index 0000000000..a8c55fe00e
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/beta
@@ -0,0 +1,9 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+ac_add_options --target=i686-linux-android
+
+ac_add_options --with-branding=mobile/android/branding/beta
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/debug b/mobile/android/config/mozconfigs/android-x86/debug
new file mode 100644
index 0000000000..6b0e7a859e
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/debug
@@ -0,0 +1,13 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=i686-linux-android
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/debug-beta b/mobile/android/config/mozconfigs/android-x86/debug-beta
new file mode 100644
index 0000000000..4b434be736
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/debug-beta
@@ -0,0 +1,13 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=i686-linux-android
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/beta
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/debug-lite b/mobile/android/config/mozconfigs/android-x86/debug-lite
new file mode 100644
index 0000000000..20fe5b3c9e
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/debug-lite
@@ -0,0 +1,14 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=i686-linux-android
+ac_add_options --enable-geckoview-lite
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/l10n-nightly b/mobile/android/config/mozconfigs/android-x86/l10n-nightly
new file mode 100644
index 0000000000..04844c52d4
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/l10n-nightly
@@ -0,0 +1,23 @@
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86/nightly"
+
+# L10n
+
+# Don't autoclobber l10n, as this can lead to missing binaries and broken builds
+# Bug 1283438
+mk_add_options AUTOCLOBBER=
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+# Global options
+ac_add_options --disable-tests
+ac_add_options --disable-nodejs
+unset NODEJS
+
+ac_add_options --enable-updater
+ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/l10n-nightly-lite b/mobile/android/config/mozconfigs/android-x86/l10n-nightly-lite
new file mode 100644
index 0000000000..8f94e40df8
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/l10n-nightly-lite
@@ -0,0 +1,9 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86/nightly-lite"
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86/l10n-nightly"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/nightly b/mobile/android/config/mozconfigs/android-x86/nightly
new file mode 100644
index 0000000000..fcc7615615
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/nightly
@@ -0,0 +1,10 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --target=i686-linux-android
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/nightly-artifact b/mobile/android/config/mozconfigs/android-x86/nightly-artifact
new file mode 100644
index 0000000000..09fefe23f7
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/nightly-artifact
@@ -0,0 +1,12 @@
+. "$topsrcdir/build/mozconfig.artifact.automation"
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86/nightly"
+
+. "$topsrcdir/build/mozconfig.artifact"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/nightly-artifact-lite b/mobile/android/config/mozconfigs/android-x86/nightly-artifact-lite
new file mode 100644
index 0000000000..0def1723a3
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/nightly-artifact-lite
@@ -0,0 +1,12 @@
+. "$topsrcdir/build/mozconfig.artifact.automation"
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86/nightly-lite"
+
+. "$topsrcdir/build/mozconfig.artifact"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/nightly-lite b/mobile/android/config/mozconfigs/android-x86/nightly-lite
new file mode 100644
index 0000000000..9290c12df7
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/nightly-lite
@@ -0,0 +1,11 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --target=i686-linux-android
+ac_add_options --enable-geckoview-lite
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86/profile-generate b/mobile/android/config/mozconfigs/android-x86/profile-generate
new file mode 100644
index 0000000000..2ba606187d
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86/profile-generate
@@ -0,0 +1,6 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86/nightly"
+
+mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
+
+ac_add_options --enable-profile-generate=cross
+ac_add_options --disable-tests
diff --git a/mobile/android/config/mozconfigs/android-x86_64/beta b/mobile/android/config/mozconfigs/android-x86_64/beta
new file mode 100644
index 0000000000..43981a416f
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/beta
@@ -0,0 +1,10 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --target=x86_64-linux-android
+
+ac_add_options --with-branding=mobile/android/branding/beta
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/debug b/mobile/android/config/mozconfigs/android-x86_64/debug
new file mode 100644
index 0000000000..cfd951ce9d
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/debug
@@ -0,0 +1,13 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=x86_64-linux-android
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/debug-beta b/mobile/android/config/mozconfigs/android-x86_64/debug-beta
new file mode 100644
index 0000000000..be4f930022
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/debug-beta
@@ -0,0 +1,13 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --target=x86_64-linux-android
+
+export MOZILLA_OFFICIAL=1
+
+ac_add_options --with-branding=mobile/android/branding/beta
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/debug-fuzzing b/mobile/android/config/mozconfigs/android-x86_64/debug-fuzzing
new file mode 100644
index 0000000000..54cb818f5e
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/debug-fuzzing
@@ -0,0 +1,11 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/debug"
+
+# Disable Telemetry
+ac_add_options MOZ_TELEMETRY_REPORTING=
+
+ac_add_options --enable-fuzzing
+
+# This adds '-fuzzing' to the APK filename for local builds.
+export MOZ_PKG_SPECIAL=fuzzing
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/debug-fuzzing-lite b/mobile/android/config/mozconfigs/android-x86_64/debug-fuzzing-lite
new file mode 100644
index 0000000000..4fc59444aa
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/debug-fuzzing-lite
@@ -0,0 +1,5 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/debug-lite"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/debug-fuzzing"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/debug-isolated-process b/mobile/android/config/mozconfigs/android-x86_64/debug-isolated-process
new file mode 100644
index 0000000000..c166becf72
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/debug-isolated-process
@@ -0,0 +1,15 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Global options
+ac_add_options --enable-debug
+
+# Android
+ac_add_options --with-android-min-sdk=21
+ac_add_options --target=x86_64-linux-android
+
+export MOZILLA_OFFICIAL=1
+export MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS=1
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override" \ No newline at end of file
diff --git a/mobile/android/config/mozconfigs/android-x86_64/debug-lite b/mobile/android/config/mozconfigs/android-x86_64/debug-lite
new file mode 100644
index 0000000000..ef97701075
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/debug-lite
@@ -0,0 +1,7 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+ac_add_options --enable-geckoview-lite
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/debug"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/l10n-nightly b/mobile/android/config/mozconfigs/android-x86_64/l10n-nightly
new file mode 100644
index 0000000000..c9c6894790
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/l10n-nightly
@@ -0,0 +1,23 @@
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/nightly"
+
+# L10n
+
+# Don't autoclobber l10n, as this can lead to missing binaries and broken builds
+# Bug 1283438
+mk_add_options AUTOCLOBBER=
+
+. "$topsrcdir/build/mozconfig.no-compile"
+
+# Global options
+ac_add_options --disable-tests
+ac_add_options --disable-nodejs
+unset NODEJS
+
+ac_add_options --enable-updater
+ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/l10n-nightly-lite b/mobile/android/config/mozconfigs/android-x86_64/l10n-nightly-lite
new file mode 100644
index 0000000000..c39db1107d
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/l10n-nightly-lite
@@ -0,0 +1,7 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/l10n-nightly"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/nightly-lite"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/nightly b/mobile/android/config/mozconfigs/android-x86_64/nightly
new file mode 100644
index 0000000000..457d93d4d3
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/nightly
@@ -0,0 +1,10 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+# Android
+ac_add_options --target=x86_64-linux-android
+
+ac_add_options --with-branding=mobile/android/branding/nightly
+
+export MOZILLA_OFFICIAL=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/nightly-artifact b/mobile/android/config/mozconfigs/android-x86_64/nightly-artifact
new file mode 100644
index 0000000000..a56061dccd
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/nightly-artifact
@@ -0,0 +1,12 @@
+. "$topsrcdir/build/mozconfig.artifact.automation"
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/nightly"
+
+. "$topsrcdir/build/mozconfig.artifact"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/nightly-artifact-lite b/mobile/android/config/mozconfigs/android-x86_64/nightly-artifact-lite
new file mode 100644
index 0000000000..cc0918045c
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/nightly-artifact-lite
@@ -0,0 +1,12 @@
+. "$topsrcdir/build/mozconfig.artifact.automation"
+
+NO_CACHE=1
+NO_NDK=1
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/nightly-lite"
+
+. "$topsrcdir/build/mozconfig.artifact"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan b/mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan
new file mode 100644
index 0000000000..5399d5e842
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan
@@ -0,0 +1,32 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/nightly"
+
+# Remove unwanted environment variables from the 'nightly' mozconfig.
+unset MOZ_ANDROID_POCKET
+
+# We still need to build with debug symbols
+ac_add_options --disable-debug
+ac_add_options --enable-optimize="-O2 -gline-tables-only"
+
+# ASan specific options on Linux
+ac_add_options --enable-valgrind
+
+. $topsrcdir/build/unix/mozconfig.asan
+ac_add_options --disable-elf-hack
+
+ac_add_options --enable-fuzzing
+unset MOZ_STDCXX_COMPAT
+unset ENABLE_CLANG_PLUGIN
+
+# Add the path to the clang_rt used, so it can be packaged with the build.
+if [ -d "$MOZ_FETCHES_DIR/clang" ]; then
+ CLANG_LIB_DIR="$(cd $MOZ_FETCHES_DIR/clang/lib/clang/*/lib/linux && pwd)"
+ export MOZ_CLANG_RT_ASAN_LIB_PATH="${CLANG_LIB_DIR}/libclang_rt.asan-x86_64-android.so"
+fi
+
+# Package js shell.
+export MOZ_PACKAGE_JSSHELL=1
+
+# This adds '-fuzzing-asan' to the APK filename for local builds.
+export MOZ_PKG_SPECIAL=fuzzing-asan
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan-lite b/mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan-lite
new file mode 100644
index 0000000000..beb35d13d8
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan-lite
@@ -0,0 +1,5 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/nightly-lite"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/nightly-fuzzing-asan"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/nightly-lite b/mobile/android/config/mozconfigs/android-x86_64/nightly-lite
new file mode 100644
index 0000000000..abdb120300
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/nightly-lite
@@ -0,0 +1,7 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/common"
+
+ac_add_options --enable-geckoview-lite
+
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/nightly"
+
+. "$topsrcdir/mobile/android/config/mozconfigs/common.override"
diff --git a/mobile/android/config/mozconfigs/android-x86_64/profile-generate b/mobile/android/config/mozconfigs/android-x86_64/profile-generate
new file mode 100644
index 0000000000..0bd9464da6
--- /dev/null
+++ b/mobile/android/config/mozconfigs/android-x86_64/profile-generate
@@ -0,0 +1,6 @@
+. "$topsrcdir/mobile/android/config/mozconfigs/android-x86_64/nightly"
+
+mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
+
+ac_add_options --enable-profile-generate=cross
+ac_add_options --disable-tests
diff --git a/mobile/android/config/mozconfigs/common b/mobile/android/config/mozconfigs/common
new file mode 100644
index 0000000000..32b8b1b564
--- /dev/null
+++ b/mobile/android/config/mozconfigs/common
@@ -0,0 +1,37 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+. "$topsrcdir/build/mozconfig.common"
+
+# Build Fennec
+ac_add_options --enable-project=mobile/android
+
+ac_add_options --with-gradle="$MOZ_FETCHES_DIR/android-gradle-dependencies/gradle-dist/bin/gradle"
+export GRADLE_MAVEN_REPOSITORIES="file://$MOZ_FETCHES_DIR/android-gradle-dependencies/mozilla","file://$MOZ_FETCHES_DIR/android-gradle-dependencies/google","file://$MOZ_FETCHES_DIR/android-gradle-dependencies/central","file://$MOZ_FETCHES_DIR/android-gradle-dependencies/gradle-plugins"
+
+if [ -z "$NO_NDK" -a -z "$USE_ARTIFACT" ]; then
+ CFLAGS="$CFLAGS -fcrash-diagnostics-dir=${UPLOAD_PATH}"
+ CXXFLAGS="$CXXFLAGS -fcrash-diagnostics-dir=${UPLOAD_PATH}"
+ # Make sure that any host binaries we build use whatever libraries clang
+ # linked against, rather than what's on the system.
+ mk_add_options "export LD_LIBRARY_PATH=$MOZ_FETCHES_DIR/clang/lib"
+ # Enable static analysis plugin
+ export ENABLE_CLANG_PLUGIN=1
+fi
+
+ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
+
+ac_add_options --with-google-safebrowsing-api-keyfile=/builds/sb-gapi.data
+ac_add_options --with-google-location-service-api-keyfile=/builds/gls-gapi.data
+ac_add_options --with-mozilla-api-keyfile=/builds/mozilla-fennec-geoloc-api.key
+
+# Package js shell.
+export MOZ_PACKAGE_JSSHELL=1
+
+if [ -d "$MOZ_FETCHES_DIR/binutils/bin" ]; then
+ mk_add_options "export PATH=$MOZ_FETCHES_DIR/binutils/bin:$PATH"
+ export LDFLAGS="$LDFLAGS -B $MOZ_FETCHES_DIR/binutils/bin"
+fi
+
+JS_BINARY="$topsrcdir/mobile/android/config/js_wrapper.sh"
diff --git a/mobile/android/config/mozconfigs/common.override b/mobile/android/config/mozconfigs/common.override
new file mode 100644
index 0000000000..1213a82f70
--- /dev/null
+++ b/mobile/android/config/mozconfigs/common.override
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This file is included at the bottom of all native android mozconfigs
+#
+# Disable enforcing that add-ons are signed by the trusted root
+MOZ_REQUIRE_SIGNING=
+
+. "$topsrcdir/build/mozconfig.common.override"
diff --git a/mobile/android/config/proguard/adjust-keeps.cfg b/mobile/android/config/proguard/adjust-keeps.cfg
new file mode 100644
index 0000000000..0c0fc2158d
--- /dev/null
+++ b/mobile/android/config/proguard/adjust-keeps.cfg
@@ -0,0 +1,20 @@
+# Rules to make the Adjust install tracking library work.
+# via https://github.com/adjust/android_sdk#5-add-permissions
+
+-keep class com.adjust.sdk.plugin.MacAddressUtil {
+ java.lang.String getMacAddress(android.content.Context);
+}
+-keep class com.adjust.sdk.plugin.AndroidIdUtil {
+ java.lang.String getAndroidId(android.content.Context);
+}
+-keep class com.google.android.gms.common.ConnectionResult {
+ int SUCCESS;
+}
+-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
+ com.google.android.gms.ads.identifier.AdvertisingIdClient$Info
+ getAdvertisingIdInfo (android.content.Context);
+}
+-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
+ java.lang.String getId ();
+ boolean isLimitAdTrackingEnabled();
+}
diff --git a/mobile/android/config/proguard/appcompat-v7-keeps.cfg b/mobile/android/config/proguard/appcompat-v7-keeps.cfg
new file mode 100644
index 0000000000..bde6f0fb74
--- /dev/null
+++ b/mobile/android/config/proguard/appcompat-v7-keeps.cfg
@@ -0,0 +1,18 @@
+# Avoid https://code.google.com/p/android/issues/detail?id=187611 and
+# http://stackoverflow.com/q/32813894 when building with Gradle. Why
+# these aren't defined in appcompat-v7.aar/proguard.txt is beyond me.
+
+-keep public class android.support.v7.widget.** { *; }
+-keep public class android.support.v7.internal.widget.** { *; }
+-keep public class android.support.v7.internal.view.menu.** { *; }
+
+-keep public class * extends android.support.v4.view.ActionProvider {
+ public <init>(android.content.Context);
+}
+
+-keepclassmembers class android.support.graphics.drawable.VectorDrawableCompat$* {
+ void set*(***);
+ *** get*();
+}
+
+-keepattributes LocalVariableTable
diff --git a/mobile/android/config/proguard/leakcanary-keeps.cfg b/mobile/android/config/proguard/leakcanary-keeps.cfg
new file mode 100644
index 0000000000..f9e5df87c1
--- /dev/null
+++ b/mobile/android/config/proguard/leakcanary-keeps.cfg
@@ -0,0 +1,7 @@
+# LeakCanary
+-keep class org.eclipse.mat.** { *; }
+-keep class com.squareup.leakcanary.** { *; }
+-keep class com.squareup.haha.** { *; }
+
+# With LeakCanary 1.4-beta1 this creates a pile of warnings
+-dontwarn com.squareup.haha.**
diff --git a/mobile/android/config/proguard/play-services-keeps.cfg b/mobile/android/config/proguard/play-services-keeps.cfg
new file mode 100644
index 0000000000..b3aaf80aa9
--- /dev/null
+++ b/mobile/android/config/proguard/play-services-keeps.cfg
@@ -0,0 +1,19 @@
+# Rules to prevent Google Play Services from exploding
+# (From http://developer.android.com/google/play-services/setup.html#Proguard
+# With the reference to "Object" changed so it'll actually *work*...)
+-keep class * extends java.util.ListResourceBundle {
+ protected java.lang.Object[][] getContents();
+}
+
+-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
+ public static final *** NULL;
+}
+
+-keepnames @com.google.android.gms.common.annotation.KeepName class *
+-keepclassmembernames class * {
+ @com.google.android.gms.common.annotation.KeepName *;
+}
+
+-keepnames class * implements android.os.Parcelable {
+ public static final ** CREATOR;
+}
diff --git a/mobile/android/config/proguard/proguard-android.cfg b/mobile/android/config/proguard/proguard-android.cfg
new file mode 100644
index 0000000000..93acf28d10
--- /dev/null
+++ b/mobile/android/config/proguard/proguard-android.cfg
@@ -0,0 +1,78 @@
+# This is a configuration file for ProGuard.
+# http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# Starting with version 2.2 of the Android plugin for Gradle, these files are no longer used. Newer
+# versions are distributed with the plugin and unpacked at build time. Files in this directory are
+# no longer maintained.
+
+-dontusemixedcaseclassnames
+-dontskipnonpubliclibraryclasses
+-verbose
+
+# Optimization is turned off by default. Dex does not like code run
+# through the ProGuard optimize and preverify steps (and performs some
+# of these optimizations on its own).
+-dontoptimize
+-dontpreverify
+# Note that if you want to enable optimization, you cannot just
+# include optimization flags in your own project configuration file;
+# instead you will need to point to the
+# "proguard-android-optimize.txt" file instead of this one from your
+# project.properties file.
+
+-keepattributes *Annotation*
+-keep public class com.google.vending.licensing.ILicensingService
+-keep public class com.android.vending.licensing.ILicensingService
+
+# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
+-keepclasseswithmembernames class * {
+ native <methods>;
+}
+
+# keep setters in Views so that animations can still work.
+# see http://proguard.sourceforge.net/manual/examples.html#beans
+-keepclassmembers public class * extends android.view.View {
+ void set*(***);
+ *** get*();
+}
+
+# We want to keep methods in Activity that could be used in the XML attribute onClick
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keepclassmembers class * implements android.os.Parcelable {
+ public static final android.os.Parcelable$Creator CREATOR;
+}
+
+-keepclassmembers class **.R$* {
+ public static <fields>;
+}
+
+# The support library contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontwarn android.support.**
+
+# Understand the @Keep support annotation.
+-keep class android.support.annotation.Keep
+
+-keep @android.support.annotation.Keep class * {*;}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep <methods>;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep <fields>;
+}
+
+-keepclasseswithmembers class * {
+ @android.support.annotation.Keep <init>(...);
+}
diff --git a/mobile/android/config/proguard/proguard-leanplum.cfg b/mobile/android/config/proguard/proguard-leanplum.cfg
new file mode 100644
index 0000000000..9908cdcaa8
--- /dev/null
+++ b/mobile/android/config/proguard/proguard-leanplum.cfg
@@ -0,0 +1,347 @@
+-dontwarn com.actionbarsherlock.**
+
+-dontnote
+-keepparameternames
+-keepattributes EnclosingMethod
+
+# Keep - Library. Keep all public and protected classes, fields, and methods.
+-keep public class com.leanplum.*,
+ com.leanplum.activities.*,
+ com.leanplum.annotations.*,
+ com.leanplum.callbacks.*,
+ com.leanplum.messagetemplates.*,
+ com.leanplum.utils.*,
+ com.leanplum.views.*
+{
+ public protected <fields>;
+ public protected <methods>;
+}
+
+# Also keep - Enumerations. Keep the special static methods that are required in
+# enumeration classes.
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+# Also keep - Database drivers. Keep all implementations of java.sql.Driver.
+-keep class * extends java.sql.Driver
+
+
+# Keep names - Native method names. Keep all native class/method names.
+-keepclasseswithmembers,allowshrinking class * {
+ native <methods>;
+}
+
+# Remove - System method calls. Remove all invocations of System
+# methods without side effects whose return values are not used.
+-assumenosideeffects public class java.lang.System {
+ public static long currentTimeMillis();
+ static java.lang.Class getCallerClass();
+ public static int identityHashCode(java.lang.Object);
+ public static java.lang.SecurityManager getSecurityManager();
+ public static java.util.Properties getProperties();
+ public static java.lang.String getProperty(java.lang.String);
+ public static java.lang.String getenv(java.lang.String);
+ public static java.lang.String mapLibraryName(java.lang.String);
+ public static java.lang.String getProperty(java.lang.String,java.lang.String);
+}
+
+# Remove - Math method calls. Remove all invocations of Math
+# methods without side effects whose return values are not used.
+-assumenosideeffects public class java.lang.Math {
+ public static double sin(double);
+ public static double cos(double);
+ public static double tan(double);
+ public static double asin(double);
+ public static double acos(double);
+ public static double atan(double);
+ public static double toRadians(double);
+ public static double toDegrees(double);
+ public static double exp(double);
+ public static double log(double);
+ public static double log10(double);
+ public static double sqrt(double);
+ public static double cbrt(double);
+ public static double IEEEremainder(double,double);
+ public static double ceil(double);
+ public static double floor(double);
+ public static double rint(double);
+ public static double atan2(double,double);
+ public static double pow(double,double);
+ public static int round(float);
+ public static long round(double);
+ public static double random();
+ public static int abs(int);
+ public static long abs(long);
+ public static float abs(float);
+ public static double abs(double);
+ public static int max(int,int);
+ public static long max(long,long);
+ public static float max(float,float);
+ public static double max(double,double);
+ public static int min(int,int);
+ public static long min(long,long);
+ public static float min(float,float);
+ public static double min(double,double);
+ public static double ulp(double);
+ public static float ulp(float);
+ public static double signum(double);
+ public static float signum(float);
+ public static double sinh(double);
+ public static double cosh(double);
+ public static double tanh(double);
+ public static double hypot(double,double);
+ public static double expm1(double);
+ public static double log1p(double);
+}
+
+# Remove - Number method calls. Remove all invocations of Number
+# methods without side effects whose return values are not used.
+-assumenosideeffects public class java.lang.* extends java.lang.Number {
+ public static java.lang.String toString(byte);
+ public static java.lang.Byte valueOf(byte);
+ public static byte parseByte(java.lang.String);
+ public static byte parseByte(java.lang.String,int);
+ public static java.lang.Byte valueOf(java.lang.String,int);
+ public static java.lang.Byte valueOf(java.lang.String);
+ public static java.lang.Byte decode(java.lang.String);
+ public int compareTo(java.lang.Byte);
+ public static java.lang.String toString(short);
+ public static short parseShort(java.lang.String);
+ public static short parseShort(java.lang.String,int);
+ public static java.lang.Short valueOf(java.lang.String,int);
+ public static java.lang.Short valueOf(java.lang.String);
+ public static java.lang.Short valueOf(short);
+ public static java.lang.Short decode(java.lang.String);
+ public static short reverseBytes(short);
+ public int compareTo(java.lang.Short);
+ public static java.lang.String toString(int,int);
+ public static java.lang.String toHexString(int);
+ public static java.lang.String toOctalString(int);
+ public static java.lang.String toBinaryString(int);
+ public static java.lang.String toString(int);
+ public static int parseInt(java.lang.String,int);
+ public static int parseInt(java.lang.String);
+ public static java.lang.Integer valueOf(java.lang.String,int);
+ public static java.lang.Integer valueOf(java.lang.String);
+ public static java.lang.Integer valueOf(int);
+ public static java.lang.Integer getInteger(java.lang.String);
+ public static java.lang.Integer getInteger(java.lang.String,int);
+ public static java.lang.Integer getInteger(java.lang.String,java.lang.Integer);
+ public static java.lang.Integer decode(java.lang.String);
+ public static int highestOneBit(int);
+ public static int lowestOneBit(int);
+ public static int numberOfLeadingZeros(int);
+ public static int numberOfTrailingZeros(int);
+ public static int bitCount(int);
+ public static int rotateLeft(int,int);
+ public static int rotateRight(int,int);
+ public static int reverse(int);
+ public static int signum(int);
+ public static int reverseBytes(int);
+ public int compareTo(java.lang.Integer);
+ public static java.lang.String toString(long,int);
+ public static java.lang.String toHexString(long);
+ public static java.lang.String toOctalString(long);
+ public static java.lang.String toBinaryString(long);
+ public static java.lang.String toString(long);
+ public static long parseLong(java.lang.String,int);
+ public static long parseLong(java.lang.String);
+ public static java.lang.Long valueOf(java.lang.String,int);
+ public static java.lang.Long valueOf(java.lang.String);
+ public static java.lang.Long valueOf(long);
+ public static java.lang.Long decode(java.lang.String);
+ public static java.lang.Long getLong(java.lang.String);
+ public static java.lang.Long getLong(java.lang.String,long);
+ public static java.lang.Long getLong(java.lang.String,java.lang.Long);
+ public static long highestOneBit(long);
+ public static long lowestOneBit(long);
+ public static int numberOfLeadingZeros(long);
+ public static int numberOfTrailingZeros(long);
+ public static int bitCount(long);
+ public static long rotateLeft(long,int);
+ public static long rotateRight(long,int);
+ public static long reverse(long);
+ public static int signum(long);
+ public static long reverseBytes(long);
+ public int compareTo(java.lang.Long);
+ public static java.lang.String toString(float);
+ public static java.lang.String toHexString(float);
+ public static java.lang.Float valueOf(java.lang.String);
+ public static java.lang.Float valueOf(float);
+ public static float parseFloat(java.lang.String);
+ public static boolean isNaN(float);
+ public static boolean isInfinite(float);
+ public static int floatToIntBits(float);
+ public static int floatToRawIntBits(float);
+ public static float intBitsToFloat(int);
+ public static int compare(float,float);
+ public boolean isNaN();
+ public boolean isInfinite();
+ public int compareTo(java.lang.Float);
+ public static java.lang.String toString(double);
+ public static java.lang.String toHexString(double);
+ public static java.lang.Double valueOf(java.lang.String);
+ public static java.lang.Double valueOf(double);
+ public static double parseDouble(java.lang.String);
+ public static boolean isNaN(double);
+ public static boolean isInfinite(double);
+ public static long doubleToLongBits(double);
+ public static long doubleToRawLongBits(double);
+ public static double longBitsToDouble(long);
+ public static int compare(double,double);
+ public boolean isNaN();
+ public boolean isInfinite();
+ public int compareTo(java.lang.Double);
+ public <init>(byte);
+ public <init>(short);
+ public <init>(int);
+ public <init>(long);
+ public <init>(float);
+ public <init>(double);
+ public <init>(java.lang.String);
+ public byte byteValue();
+ public short shortValue();
+ public int intValue();
+ public long longValue();
+ public float floatValue();
+ public double doubleValue();
+ public int compareTo(java.lang.Object);
+ public boolean equals(java.lang.Object);
+ public int hashCode();
+ public java.lang.String toString();
+}
+
+# Remove - String method calls. Remove all invocations of String
+# methods without side effects whose return values are not used.
+-assumenosideeffects public class java.lang.String {
+ public <init>();
+ public <init>(byte[]);
+ public <init>(byte[],int);
+ public <init>(byte[],int,int);
+ public <init>(byte[],int,int,int);
+ public <init>(byte[],int,int,java.lang.String);
+ public <init>(byte[],java.lang.String);
+ public <init>(char[]);
+ public <init>(char[],int,int);
+ public <init>(java.lang.String);
+ public <init>(java.lang.StringBuffer);
+ public static java.lang.String copyValueOf(char[]);
+ public static java.lang.String copyValueOf(char[],int,int);
+ public static java.lang.String valueOf(boolean);
+ public static java.lang.String valueOf(char);
+ public static java.lang.String valueOf(char[]);
+ public static java.lang.String valueOf(char[],int,int);
+ public static java.lang.String valueOf(double);
+ public static java.lang.String valueOf(float);
+ public static java.lang.String valueOf(int);
+ public static java.lang.String valueOf(java.lang.Object);
+ public static java.lang.String valueOf(long);
+ public boolean contentEquals(java.lang.StringBuffer);
+ public boolean endsWith(java.lang.String);
+ public boolean equalsIgnoreCase(java.lang.String);
+ public boolean equals(java.lang.Object);
+ public boolean matches(java.lang.String);
+ public boolean regionMatches(boolean,int,java.lang.String,int,int);
+ public boolean regionMatches(int,java.lang.String,int,int);
+ public boolean startsWith(java.lang.String);
+ public boolean startsWith(java.lang.String,int);
+ public byte[] getBytes();
+ public byte[] getBytes(java.lang.String);
+ public char charAt(int);
+ public char[] toCharArray();
+ public int compareToIgnoreCase(java.lang.String);
+ public int compareTo(java.lang.Object);
+ public int compareTo(java.lang.String);
+ public int hashCode();
+ public int indexOf(int);
+ public int indexOf(int,int);
+ public int indexOf(java.lang.String);
+ public int indexOf(java.lang.String,int);
+ public int lastIndexOf(int);
+ public int lastIndexOf(int,int);
+ public int lastIndexOf(java.lang.String);
+ public int lastIndexOf(java.lang.String,int);
+ public int length();
+ public java.lang.CharSequence subSequence(int,int);
+ public java.lang.String concat(java.lang.String);
+ public java.lang.String replaceAll(java.lang.String,java.lang.String);
+ public java.lang.String replace(char,char);
+ public java.lang.String replaceFirst(java.lang.String,java.lang.String);
+ public java.lang.String[] split(java.lang.String);
+ public java.lang.String[] split(java.lang.String,int);
+ public java.lang.String substring(int);
+ public java.lang.String substring(int,int);
+ public java.lang.String toLowerCase();
+ public java.lang.String toLowerCase(java.util.Locale);
+ public java.lang.String toString();
+ public java.lang.String toUpperCase();
+ public java.lang.String toUpperCase(java.util.Locale);
+ public java.lang.String trim();
+}
+
+# Remove - StringBuffer method calls. Remove all invocations of StringBuffer
+# methods without side effects whose return values are not used.
+-assumenosideeffects public class java.lang.StringBuffer {
+ public <init>();
+ public <init>(int);
+ public <init>(java.lang.String);
+ public <init>(java.lang.CharSequence);
+ public java.lang.String toString();
+ public char charAt(int);
+ public int capacity();
+ public int codePointAt(int);
+ public int codePointBefore(int);
+ public int indexOf(java.lang.String,int);
+ public int lastIndexOf(java.lang.String);
+ public int lastIndexOf(java.lang.String,int);
+ public int length();
+ public java.lang.String substring(int);
+ public java.lang.String substring(int,int);
+}
+
+# Remove - StringBuilder method calls. Remove all invocations of StringBuilder
+# methods without side effects whose return values are not used.
+-assumenosideeffects public class java.lang.StringBuilder {
+ public <init>();
+ public <init>(int);
+ public <init>(java.lang.String);
+ public <init>(java.lang.CharSequence);
+ public java.lang.String toString();
+ public char charAt(int);
+ public int capacity();
+ public int codePointAt(int);
+ public int codePointBefore(int);
+ public int indexOf(java.lang.String,int);
+ public int lastIndexOf(java.lang.String);
+ public int lastIndexOf(java.lang.String,int);
+ public int length();
+ public java.lang.String substring(int);
+ public java.lang.String substring(int,int);
+}
+
+-keepattributes *Annotation*
+-keepattributes Signature
+-keepattributes Exceptions
+
+-keep class com.leanplum.Leanplum {
+ static void reset();
+ static void setClient(java.lang.String, java.lang.String, java.lang.String);
+}
+
+-keep class com.leanplum.utils.BitmapUtil { public private protected *; }
+
+-keep class com.leanplum.LocationManagerImplementation { *; }
+
+-keep class com.leanplum.messagetemplates.BaseMessageOptions { *; }
+
+#-dontwarn android.support.v7.**
+-keep class android.support.v7.app.AppCompatActivity
+#-keep interface android.support.v7.** { *; }
+
+-printmapping out.map
+-renamesourcefileattribute SourceFile
+-keepattributes SourceFile,LineNumberTable
+
+-optimizations !code/allocation/variable
diff --git a/mobile/android/config/proguard/proguard.cfg b/mobile/android/config/proguard/proguard.cfg
new file mode 100644
index 0000000000..f9a21ed339
--- /dev/null
+++ b/mobile/android/config/proguard/proguard.cfg
@@ -0,0 +1,165 @@
+# Dalvik renders preverification unuseful (Would just slightly bloat the file).
+-dontpreverify
+
+# Uncomment to have Proguard list dead code detected during the run - useful for cleaning up the codebase.
+# -printusage
+
+-dontskipnonpubliclibraryclassmembers
+-verbose
+-allowaccessmodification
+
+# Preserve all fundamental application classes.
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.preference.Preference
+-keep public class * extends org.mozilla.gecko.fxa.sync.FxAccountSyncAdapter
+-keep class org.mozilla.gecko.fxa.sync.FxAccountSyncAdapter
+
+# Preserve all native method names and the names of their classes.
+-keepclasseswithmembernames class * {
+ native <methods>;
+}
+
+-keepclasseswithmembers class * {
+ public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+
+# Keep setters in Views so that animations can still work.
+# See http://proguard.sourceforge.net/manual/examples.html#beans
+# From tools/proguard/proguard-android.txt.
+-keepclassmembers public class * extends android.view.View {
+ void set*(***);
+ *** get*();
+}
+
+# Preserve enums. (For awful reasons, the runtime accesses them using introspection...)
+-keepclassmembers enum * {
+ *;
+}
+
+#
+# Rules from ProGuard's Android example:
+# http://proguard.sourceforge.net/manual/examples.html#androidapplication
+#
+
+# Keep a fixed source file attribute and all line number tables to get line
+# numbers in the stack traces.
+# You can comment this out if you're not interested in stack traces.
+
+-renamesourcefileattribute SourceFile
+-keepattributes SourceFile,LineNumberTable
+
+# RemoteViews might need annotations.
+
+-keepattributes *Annotation*
+
+# Preserve all View implementations, their special context constructors, and
+# their setters.
+
+-keep public class * extends android.view.View {
+ public <init>(android.content.Context);
+ public <init>(android.content.Context, android.util.AttributeSet);
+ public <init>(android.content.Context, android.util.AttributeSet, int);
+ public void set*(...);
+}
+
+# Preserve all classes that have special context constructors, and the
+# constructors themselves.
+
+-keepclasseswithmembers class * {
+ public <init>(android.content.Context, android.util.AttributeSet);
+}
+
+# Preserve the special fields of all Parcelable implementations.
+
+-keepclassmembers class * implements android.os.Parcelable {
+ static android.os.Parcelable$Creator CREATOR;
+}
+
+# Preserve static fields of inner classes of R classes that might be accessed
+# through introspection.
+
+-keepclassmembers class **.R$* {
+ public static <fields>;
+}
+
+# Preserve the required interface from the License Verification Library
+# (but don't nag the developer if the library is not used at all).
+
+-keep public interface com.android.vending.licensing.ILicensingService
+
+-dontnote com.android.vending.licensing.ILicensingService
+
+# Preserve all native method names and the names of their classes.
+
+-keepclasseswithmembernames class * {
+ native <methods>;
+}
+
+#
+# Mozilla-specific rules
+#
+# Merging classes can generate dex warnings about anonymous inner classes.
+-optimizations !class/merging/horizontal
+-optimizations !class/merging/vertical
+
+# This optimisation causes corrupt bytecode if we run more than two passes.
+# Testing shows that running the extra passes of everything else saves us
+# more than this optimisation does, so bye bye!
+-optimizations !code/allocation/variable
+
+# Keep miscellaneous targets.
+
+# Keep Robocop targets. TODO: Can omit these from release builds. Also, Bug 916507.
+
+# Same formula as above...
+-keep @interface org.mozilla.gecko.annotation.RobocopTarget
+-keep @org.mozilla.gecko.annotation.RobocopTarget class *
+-keepclassmembers class * {
+ @org.mozilla.gecko.annotation.RobocopTarget *;
+}
+-keepclassmembers @org.mozilla.gecko.annotation.RobocopTarget class * {
+ *;
+}
+-keepclasseswithmembers class * {
+ @org.mozilla.gecko.annotation.RobocopTarget <methods>;
+}
+-keepclasseswithmembers class * {
+ @org.mozilla.gecko.annotation.RobocopTarget <fields>;
+}
+
+-keep class **.R$*
+
+# Disable obfuscation because it makes exception stack traces more difficult to read.
+-dontobfuscate
+
+# Suppress warnings about missing descriptor classes.
+#-dontnote **,!ch.boye.**,!org.mozilla.gecko.sync.**
+
+-include "play-services-keeps.cfg"
+
+# Don't warn when classes referenced by JaCoCo are missing when running the build from android-dependencies.
+-dontwarn java.lang.instrument.**
+-dontwarn java.lang.management.**
+-dontwarn javax.management.**
+
+-include "adjust-keeps.cfg"
+
+-include "leakcanary-keeps.cfg"
+
+-include "appcompat-v7-keeps.cfg"
+
+-include "proguard-android.cfg"
+
+-include "proguard-leanplum.cfg"
+
+-include "../../geckoview/proguard-rules.txt"
diff --git a/mobile/android/config/proguard/strip-libs.cfg b/mobile/android/config/proguard/strip-libs.cfg
new file mode 100644
index 0000000000..80a1f151c9
--- /dev/null
+++ b/mobile/android/config/proguard/strip-libs.cfg
@@ -0,0 +1,41 @@
+# Proguard step for stripping debug information.
+#
+# This is useful to work around a bug in the way Proguard handles debug information: it
+# sometimes corrupts it. Classes with corrupt debug information cannot be dexed, but
+# classes with *no* debug information can be. There's no way to configure Proguard to
+# delete debug information on a per-class basis, so we need this special extra step for
+# stripping debug information only from those classes for which the Proguard bug is
+# encountered.
+#
+# Currently, this pass is applied to all bundled library jars for which we are not
+# compiling the source. This is slightly more than is strictly necessary to work around
+# the Proguard bug, but such debug information is of negligible value and stripping it
+# too slightly simplifies the makefile and saves us a handful of kilobytes of binary size.
+#
+# Configuring Proguard to do nothing except strip metadata is done by having it run only
+# the obfuscation pass, but with a configuration that prevents it from renaming any classes.
+# It then attempts to delete class metadata, so we further configure it not to do so for
+# anything except the problematic debug information.
+
+# Run only the obfuscator.
+-dontoptimize
+-dontshrink
+-dontpreverify
+-verbose
+
+# Don't rename anything.
+-keeppackagenames
+
+# Seriously, don't rename anything.
+-keep class *
+-keepclassmembers class * {
+ *;
+}
+
+# Don't delete other useful metadata.
+-keepattributes Exceptions,InnerClasses,Signature,Deprecated,*Annotation*,EnclosingMethod
+
+# Don't print spurious warnings from the support library.
+# See: http://stackoverflow.com/questions/22441366/note-android-support-v4-text-icucompatics-cant-find-dynamically-referenced-cl
+-dontnote android.support.**
+-dontwarn android.support.**
diff --git a/mobile/android/config/tooltool-manifests/android-x86/releng.manifest b/mobile/android/config/tooltool-manifests/android-x86/releng.manifest
new file mode 100644
index 0000000000..e987e17991
--- /dev/null
+++ b/mobile/android/config/tooltool-manifests/android-x86/releng.manifest
@@ -0,0 +1,10 @@
+[
+ {
+ "size": 6856444,
+ "visibility": "public",
+ "unpack": true,
+ "digest": "d68dd7d31b0153095ecf5cde5837fb1f95dc6e3f799d496fb764f7afeb9c6095c332467177c3aa54d3749b1901e0d6fa84c42162526e764e8a9d2196a0189861",
+ "algorithm": "sha512",
+ "filename": "jsshell.tar.xz"
+ }
+]
diff --git a/mobile/android/config/tooltool-manifests/android/releng.manifest b/mobile/android/config/tooltool-manifests/android/releng.manifest
new file mode 100644
index 0000000000..e987e17991
--- /dev/null
+++ b/mobile/android/config/tooltool-manifests/android/releng.manifest
@@ -0,0 +1,10 @@
+[
+ {
+ "size": 6856444,
+ "visibility": "public",
+ "unpack": true,
+ "digest": "d68dd7d31b0153095ecf5cde5837fb1f95dc6e3f799d496fb764f7afeb9c6095c332467177c3aa54d3749b1901e0d6fa84c42162526e764e8a9d2196a0189861",
+ "algorithm": "sha512",
+ "filename": "jsshell.tar.xz"
+ }
+]