diff options
Diffstat (limited to 'mobile/android/config')
28 files changed, 1073 insertions, 0 deletions
diff --git a/mobile/android/config/js_wrapper.sh b/mobile/android/config/js_wrapper.sh new file mode 100755 index 000000000..464d5c63c --- /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-api-15-frontend/nightly b/mobile/android/config/mozconfigs/android-api-15-frontend/nightly new file mode 100644 index 000000000..6fb88b0f5 --- /dev/null +++ b/mobile/android/config/mozconfigs/android-api-15-frontend/nightly @@ -0,0 +1,43 @@ +# Many things aren't appropriate for a frontend-only build. +MOZ_AUTOMATION_BUILD_SYMBOLS=0 +MOZ_AUTOMATION_INSTALLER=0 +MOZ_AUTOMATION_L10N_CHECK=0 +MOZ_AUTOMATION_PACKAGE=0 +MOZ_AUTOMATION_PACKAGE_TESTS=0 +MOZ_AUTOMATION_SDK=0 +MOZ_AUTOMATION_UPDATE_PACKAGING=0 +MOZ_AUTOMATION_UPLOAD=0 +MOZ_AUTOMATION_UPLOAD_SYMBOLS=0 + +NO_CACHE=1 +NO_NDK=1 + +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +ac_add_options --with-gradle="$topsrcdir/gradle-dist/bin/gradle" +export GRADLE_MAVEN_REPOSITORY="file://$topsrcdir/jcentral" + +unset HOST_CC +unset HOST_CXX + +ac_add_options --disable-compile-environment +ac_add_options --disable-tests + +# From here on, like ../android-api-15/nightly. + +ac_add_options --enable-profiling + +# Android +ac_add_options --with-android-min-sdk=15 +ac_add_options --target=arm-linux-androideabi + +ac_add_options --with-branding=mobile/android/branding/nightly + +# This will overwrite the default of stripping everything and keep the symbol table. +# This is useful for profiling with eideticker. See bug 788680 +STRIP_FLAGS="--strip-debug" + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-api-15-gradle-dependencies/nightly b/mobile/android/config/mozconfigs/android-api-15-gradle-dependencies/nightly new file mode 100644 index 000000000..99789543c --- /dev/null +++ b/mobile/android/config/mozconfigs/android-api-15-gradle-dependencies/nightly @@ -0,0 +1,45 @@ +# Many things aren't appropriate for a frontend-only build. +MOZ_AUTOMATION_BUILD_SYMBOLS=0 +MOZ_AUTOMATION_INSTALLER=0 +MOZ_AUTOMATION_L10N_CHECK=0 +MOZ_AUTOMATION_PACKAGE=0 +MOZ_AUTOMATION_PACKAGE_TESTS=0 +MOZ_AUTOMATION_SDK=0 +MOZ_AUTOMATION_UPDATE_PACKAGING=0 +MOZ_AUTOMATION_UPLOAD=0 +MOZ_AUTOMATION_UPLOAD_SYMBOLS=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 repository. +export GRADLE_MAVEN_REPOSITORY="http://localhost:8081/nexus/content/repositories/central/" + +# From here on, just like ../android-api-15-frontend/nightly. + +ac_add_options --disable-compile-environment +unset HOST_CC +unset HOST_CXX + +ac_add_options --disable-tests + +ac_add_options --enable-profiling + +# Android +ac_add_options --with-android-min-sdk=15 +ac_add_options --target=arm-linux-androideabi + +ac_add_options --with-branding=mobile/android/branding/nightly + +# This will overwrite the default of stripping everything and keep the symbol table. +# This is useful for profiling with eideticker. See bug 788680 +STRIP_FLAGS="--strip-debug" + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-api-15-gradle/nightly b/mobile/android/config/mozconfigs/android-api-15-gradle/nightly new file mode 100644 index 000000000..d1bca2d67 --- /dev/null +++ b/mobile/android/config/mozconfigs/android-api-15-gradle/nightly @@ -0,0 +1,23 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +ac_add_options --enable-profiling + +# Android +ac_add_options --with-android-min-sdk=15 +ac_add_options --target=arm-linux-androideabi + +ac_add_options --with-branding=mobile/android/branding/nightly + +ac_add_options --with-gradle="$topsrcdir/gradle-dist/bin/gradle" +export GRADLE_MAVEN_REPOSITORY="file://$topsrcdir/jcentral" + +# From here on, just like ../android-api-15/nightly. + +# This will overwrite the default of stripping everything and keep the symbol table. +# This is useful for profiling with eideticker. See bug 788680 +STRIP_FLAGS="--strip-debug" + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-api-15/debug b/mobile/android/config/mozconfigs/android-api-15/debug new file mode 100644 index 000000000..90093edcb --- /dev/null +++ b/mobile/android/config/mozconfigs/android-api-15/debug @@ -0,0 +1,16 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +# Global options +ac_add_options --enable-debug +ENABLE_MARIONETTE=1 + +# Android +ac_add_options --with-android-min-sdk=15 +ac_add_options --target=arm-linux-androideabi + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +ac_add_options --with-branding=mobile/android/branding/official + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-api-15/l10n-nightly b/mobile/android/config/mozconfigs/android-api-15/l10n-nightly new file mode 100644 index 000000000..cdebcf174 --- /dev/null +++ b/mobile/android/config/mozconfigs/android-api-15/l10n-nightly @@ -0,0 +1,27 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +# L10n +ac_add_options --with-l10n-base=.. + +# Global options +ac_add_options --disable-tests + +# Android +ac_add_options --with-android-min-sdk=15 +ac_add_options --target=arm-linux-androideabi + +ac_add_options --with-system-zlib +ac_add_options --enable-updater +ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} + +export MOZILLA_OFFICIAL=1 + +ac_add_options --with-branding=mobile/android/branding/official + +ac_add_options --disable-stdcxx-compat + +# Don't autoclobber l10n, as this can lead to missing binaries and broken builds +# Bug 1283438 +mk_add_options AUTOCLOBBER= + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-api-15/l10n-release b/mobile/android/config/mozconfigs/android-api-15/l10n-release new file mode 100644 index 000000000..e72e3bb84 --- /dev/null +++ b/mobile/android/config/mozconfigs/android-api-15/l10n-release @@ -0,0 +1,28 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +# L10n +ac_add_options --with-l10n-base=.. + +# Global options +ac_add_options --disable-tests + +# Android +ac_add_options --with-android-min-sdk=15 +ac_add_options --target=arm-linux-androideabi + +ac_add_options --with-system-zlib +ac_add_options --enable-updater +ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} + +export MOZILLA_OFFICIAL=1 + +ac_add_options --enable-official-branding +ac_add_options --with-branding=mobile/android/branding/official + +ac_add_options --disable-stdcxx-compat + +# Don't autoclobber l10n, as this can lead to missing binaries and broken builds +# Bug 1283438 +mk_add_options AUTOCLOBBER= + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-api-15/nightly b/mobile/android/config/mozconfigs/android-api-15/nightly new file mode 100644 index 000000000..0ad80cb8b --- /dev/null +++ b/mobile/android/config/mozconfigs/android-api-15/nightly @@ -0,0 +1,18 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + + + +# Android +ac_add_options --with-android-min-sdk=15 +ac_add_options --target=arm-linux-androideabi + +ac_add_options --with-branding=mobile/android/branding/official + +# This will overwrite the default of stripping everything and keep the symbol table. +# This is useful for profiling with eideticker. See bug 788680 +STRIP_FLAGS="--strip-debug" + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-api-15/release b/mobile/android/config/mozconfigs/android-api-15/release new file mode 100644 index 000000000..edb662825 --- /dev/null +++ b/mobile/android/config/mozconfigs/android-api-15/release @@ -0,0 +1,16 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +# Android +ac_add_options --with-android-min-sdk=15 +ac_add_options --target=arm-linux-androideabi + +ac_add_options --with-branding=mobile/android/branding/official + +ac_add_options --enable-updater + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +ac_add_options --enable-official-branding + +. "$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 000000000..e2d090f98 --- /dev/null +++ b/mobile/android/config/mozconfigs/android-x86/debug @@ -0,0 +1,15 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +# Global options +ac_add_options --enable-debug + +# Android +ac_add_options --target=i386-linux-android +ac_add_options --with-android-min-sdk=15 + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +ac_add_options --with-branding=mobile/android/branding/official + +. "$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 000000000..f725f2db1 --- /dev/null +++ b/mobile/android/config/mozconfigs/android-x86/l10n-nightly @@ -0,0 +1,26 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +# L10n +ac_add_options --with-l10n-base=.. + +# Global options +ac_add_options --disable-tests + +# Android +ac_add_options --target=i386-linux-android +ac_add_options --with-android-min-sdk=15 + +ac_add_options --enable-updater +ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} + +export MOZILLA_OFFICIAL=1 + +ac_add_options --with-branding=mobile/android/branding/official + +ac_add_options --disable-stdcxx-compat + +# Don't autoclobber l10n, as this can lead to missing binaries and broken builds +# Bug 1283438 +mk_add_options AUTOCLOBBER= + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-x86/l10n-release b/mobile/android/config/mozconfigs/android-x86/l10n-release new file mode 100644 index 000000000..61f871f6d --- /dev/null +++ b/mobile/android/config/mozconfigs/android-x86/l10n-release @@ -0,0 +1,27 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +# L10n +ac_add_options --with-l10n-base=.. + +# Global options +ac_add_options --disable-tests + +# Android +ac_add_options --target=i386-linux-android +ac_add_options --with-android-min-sdk=15 + +ac_add_options --enable-updater +ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} + +export MOZILLA_OFFICIAL=1 + +ac_add_options --enable-official-branding +ac_add_options --with-branding=mobile/android/branding/official + +ac_add_options --disable-stdcxx-compat + +# Don't autoclobber l10n, as this can lead to missing binaries and broken builds +# Bug 1283438 +mk_add_options AUTOCLOBBER= + +. "$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 000000000..c2f73febb --- /dev/null +++ b/mobile/android/config/mozconfigs/android-x86/nightly @@ -0,0 +1,17 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +ac_add_options --target=i386-linux-android +ac_add_options --with-android-min-sdk=15 + + + +ac_add_options --with-branding=mobile/android/branding/official + +# This will overwrite the default of stripping everything and keep the symbol table. +# This is useful for profiling with eideticker. See bug 788680 +STRIP_FLAGS="--strip-debug" + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-x86/release b/mobile/android/config/mozconfigs/android-x86/release new file mode 100644 index 000000000..7622151c2 --- /dev/null +++ b/mobile/android/config/mozconfigs/android-x86/release @@ -0,0 +1,16 @@ +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +# Android +ac_add_options --target=i386-linux-android +ac_add_options --with-android-min-sdk=15 + +ac_add_options --enable-updater + +ac_add_options --with-branding=mobile/android/branding/official + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +ac_add_options --enable-official-branding + +. "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/common b/mobile/android/config/mozconfigs/common new file mode 100644 index 000000000..1acb91ebb --- /dev/null +++ b/mobile/android/config/mozconfigs/common @@ -0,0 +1,83 @@ +# 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 top of all native android mozconfigs +if [ "x$IS_NIGHTLY" = "xyes" ]; then + MOZ_AUTOMATION_UPLOAD_SYMBOLS=${MOZ_AUTOMATION_UPLOAD_SYMBOLS-1} +fi + +MOZ_AUTOMATION_L10N_CHECK=0 +. "$topsrcdir/build/mozconfig.common" + +# In TaskCluster, the Java JRE/JDK are installed from tooltool, but that +# install doesn't work on the old Buildbot mock builders (CentOS 6.2), so +# the relevant env vars are not set up in that case, leaving the build to +# run from the JRE/JDK in /usr/lib/jvm. +if [ ! -f /etc/redhat-release ] || [ "$(< /etc/redhat-release)" != "CentOS release 6.2 (Final)" ]; then + # set JAVA_HOME to find the JRE/JDK from tooltool. Several scripts in the JDK + # assume `java` is in PATH, so set that too. To see how this tarball is built, + # see taskcluster/scripts/misc/repackage-jdk.sh + export JAVA_HOME="$topsrcdir/java_home" + export PATH="$PATH:$topsrcdir/java_home/bin" + + mk_add_options "export JAVA_HOME=$topsrcdir/java_home" + mk_add_options "export PATH=$PATH:$topsrcdir/java_home/bin" +fi + +ac_add_options --enable-elf-hack + +ANDROID_NDK_VERSION="r10e" +ANDROID_NDK_VERSION_32BIT="r8c" + +# Build Fennec +ac_add_options --enable-application=mobile/android +ac_add_options --with-android-sdk="$topsrcdir/android-sdk-linux" + +if [ -z "$NO_NDK" ]; then + ac_add_options --with-android-ndk="$topsrcdir/android-ndk" + ac_add_options --with-android-gnu-compiler-version=4.9 +fi + +ac_add_options --with-system-zlib +ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} + +ac_add_options --with-mozilla-api-keyfile=/builds/mozilla-fennec-geoloc-api.key + +# MOZ_INSTALL_TRACKING does not guarantee MOZ_UPDATE_CHANNEL will be set so we +# provide a default state. Currently, the default state provides a default +# keyfile because an assertion will be thrown if MOZ_INSTALL_TRACKING is +# specified but a keyfile is not. This assertion can catch if we misconfigure a +# release or beta build and it does not have a valid keyfile. +# +# However, by providing a default keyfile, if we misconfigure beta or release, +# the default keyfile may be used instead and the assertion won't catch the +# error. Therefore, it would be ideal to have MOZ_INSTALL_TRACKING guarantee +# MOZ_UPDATE_CHANNEL was set so we can remove the default case. This may occur +# when release promotion is implemented on Android. +# +# In all cases, we don't upload Adjust pings in automation. +if test "$MOZ_UPDATE_CHANNEL" = "release" ; then + ac_add_options --with-adjust-sdk-keyfile=/builds/adjust-sdk.token +elif test "$MOZ_UPDATE_CHANNEL" = "beta" ; then + ac_add_options --with-adjust-sdk-keyfile=/builds/adjust-sdk-beta.token +else + ac_add_options --with-adjust-sdk-keyfile="$topsrcdir/mobile/android/base/adjust-sdk-sandbox.token" +fi +export SOCORRO_SYMBOL_UPLOAD_TOKEN_FILE=/builds/crash-stats-api.token + +# Package js shell. +export MOZ_PACKAGE_JSSHELL=1 + +# Use ccache +. "$topsrcdir/build/mozconfig.cache" + +HOST_CC="$topsrcdir/gcc/bin/gcc" +HOST_CXX="$topsrcdir/gcc/bin/g++" + +. "$topsrcdir/build/unix/mozconfig.stdcxx" + +# Use libc++ as our C++ standard library +ac_add_options --with-android-cxx-stl=libc++ + +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 000000000..e2382d21e --- /dev/null +++ b/mobile/android/config/mozconfigs/common.override @@ -0,0 +1,11 @@ +# 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=0 + +. "$topsrcdir/build/mozconfig.common.override" +. "$topsrcdir/build/mozconfig.cache" diff --git a/mobile/android/config/mozconfigs/public-partner/distribution_sample/mozconfig1 b/mobile/android/config/mozconfigs/public-partner/distribution_sample/mozconfig1 new file mode 100644 index 000000000..b790769c6 --- /dev/null +++ b/mobile/android/config/mozconfigs/public-partner/distribution_sample/mozconfig1 @@ -0,0 +1,21 @@ +# currently a copy of mobile/android/config/mozconfigs/android-api-15/nightly +. "$topsrcdir/mobile/android/config/mozconfigs/common" + +ac_add_options --enable-profiling + +# Android +ac_add_options --with-android-min-sdk=15 +ac_add_options --target=arm-linux-androideabi + +ac_add_options --with-branding=mobile/android/branding/nightly + +ac_add_options --with-android-distribution-directory=/home/worker/workspace/build/partner + +# This will overwrite the default of stripping everything and keep the symbol table. +# This is useful for profiling with eideticker. See bug 788680 +STRIP_FLAGS="--strip-debug" + +export MOZILLA_OFFICIAL=1 +export MOZ_TELEMETRY_REPORTING=1 + +. "$topsrcdir/mobile/android/config/mozconfigs/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 000000000..0c0fc2158 --- /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 000000000..fdaa2a4aa --- /dev/null +++ b/mobile/android/config/proguard/appcompat-v7-keeps.cfg @@ -0,0 +1,11 @@ +# 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); +} diff --git a/mobile/android/config/proguard/leakcanary-keeps.cfg b/mobile/android/config/proguard/leakcanary-keeps.cfg new file mode 100644 index 000000000..f9e5df87c --- /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 000000000..b3aaf80aa --- /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 000000000..93acf28d1 --- /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.cfg b/mobile/android/config/proguard/proguard.cfg new file mode 100644 index 000000000..f44730e72 --- /dev/null +++ b/mobile/android/config/proguard/proguard.cfg @@ -0,0 +1,185 @@ +# 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 + +-keep public class * extends android.support.v4.app.Fragment + +# 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*(); +} + +# Keep setters in support Fragment so that Robocop tests work, +# specifically testBrowserSearchVisibility. +-keepclassmembers public class * extends android.support.v4.app.Fragment { + 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 + +# The Android Compatibility library references some classes that may not be +# present in all versions of the API, but we know that's ok. + +-dontwarn android.support.** + +# 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$* + +# Keep all interfaces that might be dynamically required by Java Addons. +-keep class org.mozilla.javaaddons.* { + *; +} + +-keep class org.mozilla.javaaddons.*$* { + *; +} + +# 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 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.** + +-include "adjust-keeps.cfg" + +-include "leakcanary-keeps.cfg" + +-include "appcompat-v7-keeps.cfg" + +-include "proguard-android.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 000000000..80a1f151c --- /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-frontend/releng.manifest b/mobile/android/config/tooltool-manifests/android-frontend/releng.manifest new file mode 100644 index 000000000..ef4d299c1 --- /dev/null +++ b/mobile/android/config/tooltool-manifests/android-frontend/releng.manifest @@ -0,0 +1,57 @@ +[ +{ +"versions": [ + "Android SDK 6.0 / API 23", + "Android tools r24.4", + "Android build tools 23.0.3", + "Android Support Repository (Support Library 23.0.1)", + "Google Support Repository (Google Play Services 8.1.0)" +], +"size": 573952124, +"visibility": "internal", +"digest": "1d495d7a7386af3f27b14982e0ff7b0963fd1a63a08040b9b1db0e94c9681fa3704c195ba8be23b5f73e15101b2b767293bc8f96e0584e17867ef13b074e5038", +"algorithm": "sha512", +"filename": "android-sdk-linux.tar.xz", +"unpack": true +}, +{ +"size": 167175, +"visibility": "public", +"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831", +"algorithm": "sha512", +"filename": "sccache.tar.bz2", +"unpack": true +}, +{ +"size": 30899096, +"visibility": "public", +"digest": "ac9f5f95d11580d3dbeff87e80a585fe4d324b270dabb91b1165686acab47d99fa6651074ab0be09420239a5d6af38bb2c539506962a7b44e0ed4d080bba2953", +"algorithm": "sha512", +"filename": "java_home-1.7.0-openjdk-1.7.0.85.x86_64.tar.xz", +"unpack": true +}, +{ +"algorithm": "sha512", +"visibility": "public", +"filename": "jcentral.tar.xz", +"unpack": true, +"digest": "8e50f0993e129d3447b228d7da77d661d4ae3d490d791630dabb73e7d8021920f765317a258fd6e819aca48daaa8d0d86ec07cb6c30736199bbf2c4f92270cb5", +"size": 47164284 +}, +{ +"algorithm": "sha512", +"visibility": "public", +"filename": "gradle-dist.tar.xz", +"unpack": true, +"digest": "e3cfe7f8259ad97722243d4e873d5a05c014bfc24d637427f89d804bf5073290229c778ea303142cf06c2dc79e0492f23521f57d3a73825f55b8db587317646f", +"size": 51753660 +}, +{ +"algorithm": "sha512", +"visibility": "public", +"filename": "dotgradle.tar.xz", +"unpack": true, +"digest": "9f082ccd71ad18991eb71fcad355c6990f50a72a09ab9b79696521485656083a72faf5a8d4714de9c4b901ee2319b6786a51964846bb7075061642a8505501c2", +"size": 512 +} +] diff --git a/mobile/android/config/tooltool-manifests/android-gradle-dependencies/releng.manifest b/mobile/android/config/tooltool-manifests/android-gradle-dependencies/releng.manifest new file mode 100644 index 000000000..03b6b5bb8 --- /dev/null +++ b/mobile/android/config/tooltool-manifests/android-gradle-dependencies/releng.manifest @@ -0,0 +1,41 @@ +[ +{ +"versions": [ + "Android SDK 6.0 / API 23", + "Android tools r24.4", + "Android build tools 23.0.3", + "Android Support Repository (Support Library 23.0.1)", + "Google Support Repository (Google Play Services 8.1.0)" +], +"size": 573952124, +"visibility": "internal", +"digest": "1d495d7a7386af3f27b14982e0ff7b0963fd1a63a08040b9b1db0e94c9681fa3704c195ba8be23b5f73e15101b2b767293bc8f96e0584e17867ef13b074e5038", +"algorithm": "sha512", +"filename": "android-sdk-linux.tar.xz", +"unpack": true +}, +{ +"size": 167175, +"visibility": "public", +"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831", +"algorithm": "sha512", +"filename": "sccache.tar.bz2", +"unpack": true +}, +{ +"size": 30899096, +"visibility": "public", +"digest": "ac9f5f95d11580d3dbeff87e80a585fe4d324b270dabb91b1165686acab47d99fa6651074ab0be09420239a5d6af38bb2c539506962a7b44e0ed4d080bba2953", +"algorithm": "sha512", +"unpack": true, +"filename": "java_home-1.7.0-openjdk-1.7.0.85.x86_64.tar.xz" +}, +{ +"algorithm": "sha512", +"visibility": "public", +"filename": "dotgradle-online.tar.xz", +"unpack": true, +"digest": "0979eb1dcd9349a9c3f51f24747bb6e19e803226d7150fcf6846889ae24a8df925d03edfac038a5330822703c51130d4f5757d9f4caff7bcb2b6f71858c024d3", +"size": 512 +} +] 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 000000000..523e23e0a --- /dev/null +++ b/mobile/android/config/tooltool-manifests/android-x86/releng.manifest @@ -0,0 +1,72 @@ +[ +{ +"version": "Android NDK r11c", +"size": 138388708, +"visibility": "internal", +"digest": "2dc605644e84fadf399a4e5cb60dfb3b42518803f80de15ef310ead4d0084a01dce3052bbf7d9dfb8bbe027019250235afe0a1e4ffdc87babc0f2bdbf2403232", +"algorithm": "sha512", +"filename": "android-ndk.tar.bz2", +"unpack": true +}, +{ +"versions": [ + "Android SDK 6.0 / API 23", + "Android tools r24.4", + "Android build tools 23.0.3", + "Android Support Repository (Support Library 23.0.1)", + "Google Support Repository (Google Play Services 8.1.0)" +], +"size": 573952124, +"visibility": "internal", +"digest": "1d495d7a7386af3f27b14982e0ff7b0963fd1a63a08040b9b1db0e94c9681fa3704c195ba8be23b5f73e15101b2b767293bc8f96e0584e17867ef13b074e5038", +"algorithm": "sha512", +"filename": "android-sdk-linux.tar.xz", +"unpack": true +}, +{ +"size": 167175, +"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831", +"algorithm": "sha512", +"filename": "sccache.tar.bz2", +"unpack": true +}, +{ +"size": 4906080, +"digest": "d735544e039da89382c53b2302b7408d4610247b4f8b5cdc5a4d5a8ec5470947b19e8ea7f7a37e78222e661347e394e0030d81f41534138b527b14e9c4e55634", +"algorithm": "sha512", +"filename": "jsshell.tar.xz", +"unpack": true +}, +{ +"version": "gcc 4.8.5 + PR64905", +"size": 80160264, +"digest": "c1a9dc9da289b8528874d16300b9d13a997cec99195bb0bc46ff665216d8535d6d6cb5af6b4b1f2749af6815dab12e703fdb3849014e5c23a70eff351a0baf4e", +"algorithm": "sha512", +"filename": "gcc.tar.xz", +"unpack": true +}, +{ +"algorithm": "sha512", +"visibility": "public", +"filename": "jcentral.tar.xz", +"unpack": true, +"digest": "8e50f0993e129d3447b228d7da77d661d4ae3d490d791630dabb73e7d8021920f765317a258fd6e819aca48daaa8d0d86ec07cb6c30736199bbf2c4f92270cb5", +"size": 47164284 +}, +{ +"algorithm": "sha512", +"visibility": "public", +"filename": "gradle-dist.tar.xz", +"unpack": true, +"digest": "e3cfe7f8259ad97722243d4e873d5a05c014bfc24d637427f89d804bf5073290229c778ea303142cf06c2dc79e0492f23521f57d3a73825f55b8db587317646f", +"size": 51753660 +}, +{ +"size": 30899096, +"visibility": "public", +"digest": "ac9f5f95d11580d3dbeff87e80a585fe4d324b270dabb91b1165686acab47d99fa6651074ab0be09420239a5d6af38bb2c539506962a7b44e0ed4d080bba2953", +"algorithm": "sha512", +"filename": "java_home-1.7.0-openjdk-1.7.0.85.x86_64.tar.xz", +"unpack": true +} +] 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 000000000..751629979 --- /dev/null +++ b/mobile/android/config/tooltool-manifests/android/releng.manifest @@ -0,0 +1,90 @@ +[ +{ +"version": "Android NDK r11c", +"size": 138388708, +"visibility": "internal", +"digest": "2dc605644e84fadf399a4e5cb60dfb3b42518803f80de15ef310ead4d0084a01dce3052bbf7d9dfb8bbe027019250235afe0a1e4ffdc87babc0f2bdbf2403232", +"algorithm": "sha512", +"filename": "android-ndk.tar.bz2", +"unpack": true +}, +{ +"versions": [ + "Android SDK 6.0 / API 23", + "Android tools r24.4", + "Android build tools 23.0.3", + "Android Support Repository (Support Library 23.0.1)", + "Google Support Repository (Google Play Services 8.1.0)" +], +"size": 573952124, +"visibility": "internal", +"digest": "1d495d7a7386af3f27b14982e0ff7b0963fd1a63a08040b9b1db0e94c9681fa3704c195ba8be23b5f73e15101b2b767293bc8f96e0584e17867ef13b074e5038", +"algorithm": "sha512", +"filename": "android-sdk-linux.tar.xz", +"unpack": true +}, +{ +"size": 167175, +"visibility": "public", +"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831", +"algorithm": "sha512", +"filename": "sccache.tar.bz2", +"unpack": true +}, +{ +"size": 4906080, +"visibility": "public", +"unpack": true, +"digest": "d735544e039da89382c53b2302b7408d4610247b4f8b5cdc5a4d5a8ec5470947b19e8ea7f7a37e78222e661347e394e0030d81f41534138b527b14e9c4e55634", +"algorithm": "sha512", +"filename": "jsshell.tar.xz" +}, +{ +"version": "gcc 4.8.5 + PR64905", +"size": 80160264, +"digest": "c1a9dc9da289b8528874d16300b9d13a997cec99195bb0bc46ff665216d8535d6d6cb5af6b4b1f2749af6815dab12e703fdb3849014e5c23a70eff351a0baf4e", +"algorithm": "sha512", +"filename": "gcc.tar.xz", +"unpack": true +}, +{ +"size": 30899096, +"visibility": "public", +"digest": "ac9f5f95d11580d3dbeff87e80a585fe4d324b270dabb91b1165686acab47d99fa6651074ab0be09420239a5d6af38bb2c539506962a7b44e0ed4d080bba2953", +"algorithm": "sha512", +"filename": "java_home-1.7.0-openjdk-1.7.0.85.x86_64.tar.xz", +"unpack": true +}, +{ +"algorithm": "sha512", +"visibility": "public", +"filename": "jcentral.tar.xz", +"unpack": true, +"digest": "8e50f0993e129d3447b228d7da77d661d4ae3d490d791630dabb73e7d8021920f765317a258fd6e819aca48daaa8d0d86ec07cb6c30736199bbf2c4f92270cb5", +"size": 47164284 +}, +{ +"algorithm": "sha512", +"visibility": "public", +"filename": "gradle-dist.tar.xz", +"unpack": true, +"digest": "e3cfe7f8259ad97722243d4e873d5a05c014bfc24d637427f89d804bf5073290229c778ea303142cf06c2dc79e0492f23521f57d3a73825f55b8db587317646f", +"size": 51753660 +}, +{ +"version": "rustc 1.12.0 (3191fbae9 2016-09-23) repack", +"size": 102120320, +"digest": "f821e5ef00d758e45ecf4e10fea20b59035737d83b2e6a0f399932795ba27212883256c0c1bf23e55fcad05e377214d646290c6c7f78d5a6fe8149c0ac0ad0a9", +"algorithm": "sha512", +"filename": "rustc.tar.xz", +"unpack": true +}, +{ +"algorithm": "sha512", +"visibility": "public", +"filename": "dotgradle.tar.xz", +"unpack": true, +"digest": "9f082ccd71ad18991eb71fcad355c6990f50a72a09ab9b79696521485656083a72faf5a8d4714de9c4b901ee2319b6786a51964846bb7075061642a8505501c2", +"size": 512 +} +] |