mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 12:51:06 +00:00
Bug 1701269 - Remove mobile/android/base. r=nalexander,flod,owlish
Differential Revision: https://phabricator.services.mozilla.com/D109918
This commit is contained in:
parent
63ba5dac37
commit
114966c6e0
@ -62,13 +62,6 @@ endif
|
|||||||
# fallback
|
# fallback
|
||||||
$(TOPOBJDIR)/faster/%: ;
|
$(TOPOBJDIR)/faster/%: ;
|
||||||
|
|
||||||
ifeq ($(MOZ_BUILD_APP),mobile/android)
|
|
||||||
# The generic rule doesn't handle relative directories, which are used
|
|
||||||
# extensively in mobile/android/base.
|
|
||||||
$(TOPOBJDIR)/mobile/android/base/% : $(TOPOBJDIR)/buildid.h FORCE
|
|
||||||
$(MAKE) -C $(TOPOBJDIR)/mobile/android/base $*
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Generic rule to fall back to the recursive make backend.
|
# Generic rule to fall back to the recursive make backend.
|
||||||
# This needs to stay after other $(TOPOBJDIR)/* rules because GNU Make
|
# This needs to stay after other $(TOPOBJDIR)/* rules because GNU Make
|
||||||
# <3.82 apply pattern rules in definition order, not stem length like
|
# <3.82 apply pattern rules in definition order, not stem length like
|
||||||
|
@ -160,20 +160,11 @@ recurse:
|
|||||||
$(LOOP_OVER_DIRS)
|
$(LOOP_OVER_DIRS)
|
||||||
|
|
||||||
ifeq (.,$(DEPTH))
|
ifeq (.,$(DEPTH))
|
||||||
# The Android SDK bindings needs to build the Java generator code
|
|
||||||
# source code in order to write the SDK bindings.
|
|
||||||
widget/android/bindings/export: mobile/android/base/export
|
|
||||||
|
|
||||||
# The widget JNI wrapper generator code needs to build the GeckoView
|
# This is required so that the pre-export tier sees the rules in
|
||||||
# source code in order to find JNI wrapper annotations.
|
# mobile/android
|
||||||
widget/android/export: mobile/android/base/export
|
|
||||||
|
|
||||||
# android_apks is not built on artifact builds without this dependency.
|
|
||||||
mobile/android/base/export: mobile/android/base/android_apks
|
|
||||||
|
|
||||||
# This is required so that the pre-export tier sees the rules in mobile/android/base
|
|
||||||
ifeq ($(MOZ_WIDGET_TOOLKIT),android)
|
ifeq ($(MOZ_WIDGET_TOOLKIT),android)
|
||||||
recurse_pre-export:: mobile/android/base/pre-export
|
recurse_pre-export:: mobile/android/pre-export
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# CSS2Properties.webidl needs ServoCSSPropList.py from layout/style
|
# CSS2Properties.webidl needs ServoCSSPropList.py from layout/style
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
# 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/.
|
|
||||||
|
|
||||||
# Developer builds call mach -> Make -> gradle -> mach, which races to
|
|
||||||
# find and create .mozconfig files and to generate targets.
|
|
||||||
.NOTPARALLEL:
|
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
|
@ -1,47 +0,0 @@
|
|||||||
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
||||||
# vim: set filetype=python:
|
|
||||||
# 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/.
|
|
||||||
|
|
||||||
with Files("**"):
|
|
||||||
BUG_COMPONENT = ("GeckoView", "General")
|
|
||||||
|
|
||||||
DEFINES["ANDROID_PACKAGE_NAME"] = CONFIG["ANDROID_PACKAGE_NAME"]
|
|
||||||
# The recursive make backend treats the first output specially: it's passed as
|
|
||||||
# an open FileAvoidWrite to the invoked script. That doesn't work well with
|
|
||||||
# the Gradle task that generates all of the outputs, so we add a dummy first
|
|
||||||
# output.
|
|
||||||
t = ("android_apks",)
|
|
||||||
|
|
||||||
GENERATED_FILES += [t]
|
|
||||||
GENERATED_FILES[t].force = True
|
|
||||||
GENERATED_FILES[t].script = "/mobile/android/gradle.py:assemble_app"
|
|
||||||
|
|
||||||
# The Android APKs are assembled in the `export` tier, which usually occurs
|
|
||||||
# before the following files are generated. However, mechanisms in `recurse.mk`
|
|
||||||
# are used to pull the generated files into the `pre-export` tier, so do not
|
|
||||||
# require an explicit dependency here.
|
|
||||||
config_keys = (
|
|
||||||
"MOZ_ANDROID_CONTENT_SERVICE_COUNT",
|
|
||||||
"MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS",
|
|
||||||
)
|
|
||||||
flags = ["%s=%s" % (k, CONFIG[k] if CONFIG[k] else "") for k in config_keys]
|
|
||||||
|
|
||||||
GeneratedFile(
|
|
||||||
("../geckoview/src/main/AndroidManifest_overlay.xml",),
|
|
||||||
script="gen_from_jinja.py",
|
|
||||||
inputs=["../geckoview/src/main/AndroidManifest_overlay.jinja"],
|
|
||||||
flags=flags,
|
|
||||||
)
|
|
||||||
|
|
||||||
GeneratedFile(
|
|
||||||
(
|
|
||||||
"../geckoview/src/main/java/org/mozilla/gecko/process/GeckoChildProcessServices.java",
|
|
||||||
),
|
|
||||||
script="gen_from_jinja.py",
|
|
||||||
inputs=[
|
|
||||||
"../geckoview/src/main/java/org/mozilla/gecko/process/GeckoChildProcessServices.jinja"
|
|
||||||
],
|
|
||||||
flags=flags,
|
|
||||||
)
|
|
@ -1,176 +0,0 @@
|
|||||||
.. -*- Mode: rst; fill-column: 100; -*-
|
|
||||||
|
|
||||||
======================================
|
|
||||||
Install tracking with the Adjust SDK
|
|
||||||
======================================
|
|
||||||
|
|
||||||
Fennec (Firefox for Android) tracks certain types of installs using a third party install tracking
|
|
||||||
framework called Adjust. The intention is to determine the origin of Fennec installs by answering
|
|
||||||
the question, "Did this user on this device install Fennec in response to a specific advertising
|
|
||||||
campaign performed by Mozilla?"
|
|
||||||
|
|
||||||
Mozilla is using a third party framework in order to answer this question for the Firefox for
|
|
||||||
Android 38.0.5 release. We hope to remove the framework from Fennec in the future.
|
|
||||||
|
|
||||||
The framework consists of a software development kit (SDK) built into Fennec and a
|
|
||||||
data-collecting Internet service backend run by the German company `adjust GmbH`_. The Adjust SDK
|
|
||||||
is open source and MIT licensed: see the `github repository`_. Fennec ships a copy of the SDK
|
|
||||||
(currently not modified from upstream) in ``mobile/android/thirdparty/com/adjust/sdk``. The SDK is
|
|
||||||
documented at https://docs.adjust.com.
|
|
||||||
|
|
||||||
Data collection
|
|
||||||
~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
When is data collected and sent to the Adjust backend?
|
|
||||||
======================================================
|
|
||||||
|
|
||||||
Data is never collected (or sent to the Adjust backend) unless
|
|
||||||
|
|
||||||
* the Fennec binary is an official Mozilla binary [#official]_; and
|
|
||||||
* the release channel is Release or Beta [#channel]_.
|
|
||||||
|
|
||||||
If both of the above conditions are true, then data is collected and sent to the Adjust backend in
|
|
||||||
the following two circumstances: first, when
|
|
||||||
|
|
||||||
* Fennec is started on the device [#started]_.
|
|
||||||
|
|
||||||
Second, when
|
|
||||||
|
|
||||||
* the Fennec binary was installed from the Google Play Store; and
|
|
||||||
* the Google Play Store sends the installed Fennec binary an `INSTALL_REFERRER Intent`_, and the
|
|
||||||
received Intent includes Google Play Store campaign tracking information. This happens when thea
|
|
||||||
Google Play Store install is in response to a campaign-specific Google Play Store link. For
|
|
||||||
details, see the developer documentation at
|
|
||||||
https://developers.google.com/analytics/devguides/collection/android/v4/campaigns.
|
|
||||||
|
|
||||||
In these two limited circumstances, data is collected and sent to the Adjust backend.
|
|
||||||
|
|
||||||
Where does data sent to the Adjust backend go?
|
|
||||||
==============================================
|
|
||||||
|
|
||||||
The Adjust SDK is hard-coded to send data to the endpoint https://app.adjust.com. The endpoint is
|
|
||||||
defined by ``com.adjust.sdk.Constants.BASE_URL`` at
|
|
||||||
https://hg.mozilla.org/mozilla-central/file/f76f02793f7a/mobile/android/thirdparty/com/adjust/sdk/Constants.java#l27.
|
|
||||||
|
|
||||||
The Adjust backend then sends a limited subset of the collected data -- limited but sufficient to
|
|
||||||
uniquely identify the submitting device -- to a set of advertising network providers that Mozilla
|
|
||||||
elects to share the collected data with. Those advertising networks then confirm or deny that the
|
|
||||||
identifying information corresponds to a specific advertising campaign performed by Mozilla.
|
|
||||||
|
|
||||||
What data is collected and sent to the Adjust backend?
|
|
||||||
======================================================
|
|
||||||
|
|
||||||
The Adjust SDK collects and sends two messages to the Adjust backend. The messages have the
|
|
||||||
following parameters::
|
|
||||||
|
|
||||||
V/Adjust ( 6508): Parameters:
|
|
||||||
V/Adjust ( 6508): screen_format normal
|
|
||||||
V/Adjust ( 6508): device_manufacturer samsung
|
|
||||||
V/Adjust ( 6508): session_count 1
|
|
||||||
V/Adjust ( 6508): device_type phone
|
|
||||||
V/Adjust ( 6508): screen_size normal
|
|
||||||
V/Adjust ( 6508): package_name org.mozilla.firefox
|
|
||||||
V/Adjust ( 6508): app_version 39.0a1
|
|
||||||
V/Adjust ( 6508): android_uuid <guid>
|
|
||||||
V/Adjust ( 6508): display_width 720
|
|
||||||
V/Adjust ( 6508): country GB
|
|
||||||
V/Adjust ( 6508): os_version 18
|
|
||||||
V/Adjust ( 6508): needs_attribution_data 0
|
|
||||||
V/Adjust ( 6508): environment sandbox
|
|
||||||
V/Adjust ( 6508): device_name Galaxy Nexus
|
|
||||||
V/Adjust ( 6508): os_name android
|
|
||||||
V/Adjust ( 6508): tracking_enabled 1
|
|
||||||
V/Adjust ( 6508): created_at 2015-03-24T17:53:38.452Z-0400
|
|
||||||
V/Adjust ( 6508): app_token <private>
|
|
||||||
V/Adjust ( 6508): screen_density high
|
|
||||||
V/Adjust ( 6508): language en
|
|
||||||
V/Adjust ( 6508): display_height 1184
|
|
||||||
V/Adjust ( 6508): gps_adid <guid>
|
|
||||||
|
|
||||||
V/Adjust ( 6508): Parameters:
|
|
||||||
V/Adjust ( 6508): needs_attribution_data 0
|
|
||||||
V/Adjust ( 6508): app_token <private>
|
|
||||||
V/Adjust ( 6508): environment production
|
|
||||||
V/Adjust ( 6508): android_uuid <guid>
|
|
||||||
V/Adjust ( 6508): tracking_enabled 1
|
|
||||||
V/Adjust ( 6508): gps_adid <guid>
|
|
||||||
|
|
||||||
The available parameters (including ones not exposed to Mozilla) are documented at
|
|
||||||
https://partners.adjust.com/placeholders/.
|
|
||||||
|
|
||||||
Notes on what data is collected
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
The *android_uuid* uniquely identifies the device.
|
|
||||||
|
|
||||||
The *gps_adid* is a Google Advertising ID. It is capable of uniquely identifying a device to any
|
|
||||||
advertiser, across all applications. If a Google Advertising ID is not available, Adjust may fall
|
|
||||||
back to an Android ID, or, as a last resort, the device's WiFi MAC address.
|
|
||||||
|
|
||||||
The *tracking_enabled* flag is only used to allow or disallow contextual advertising to be sent to a
|
|
||||||
user. It can be, and is, ignored for general install tracking of the type Mozilla is using the
|
|
||||||
Adjust SDK for. (This flag might be used by consumers using the Adjust SDK to provide in-App
|
|
||||||
advertising.)
|
|
||||||
|
|
||||||
It is not clear how much entropy their is in the set of per-device parameters that do not
|
|
||||||
*explicitly* uniquely identify the device. That is, it is not known if the device parameters are
|
|
||||||
likely to uniquely fingerprint the device, in the way that user agent capabilities are likely to
|
|
||||||
uniquely fingerprint the user.
|
|
||||||
|
|
||||||
Technical notes
|
|
||||||
~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Build flags controlling the Adjust SDK integration
|
|
||||||
==================================================
|
|
||||||
|
|
||||||
Add the following to your mozconfig to compile with the Adjust SDK::
|
|
||||||
|
|
||||||
export MOZ_INSTALL_TRACKING=1
|
|
||||||
export MOZ_NATIVE_DEVICES=1
|
|
||||||
ac_add_options --with-adjust-sdk-keyfile="$topsrcdir/mobile/android/base/adjust-sdk-sandbox.token"
|
|
||||||
|
|
||||||
``MOZ_NATIVE_DEVICES`` is required to provide some Google Play Services dependencies.
|
|
||||||
|
|
||||||
No trace of the Adjust SDK should be present in Fennec if
|
|
||||||
``MOZ_INSTALL_TRACKING`` is not defined.
|
|
||||||
|
|
||||||
Access to the Adjust backend is controlled by a private App-specific
|
|
||||||
token. Fennec's token is managed by Release Engineering and should not
|
|
||||||
be exposed if at all possible; for example, it should *not* leak to build
|
|
||||||
logs. The value of the token is read from the file specified using the
|
|
||||||
``configure`` flag ``--with-adjust-sdk-keyfile=KEYFILE`` and stored in
|
|
||||||
the build variable ``MOZ_ADJUST_SDK_KEY``. The mozconfig specified above
|
|
||||||
defaults to submitting data to a special Adjust sandbox allowing a
|
|
||||||
developer to test Adjust without submitting false data to our backend.
|
|
||||||
|
|
||||||
We throw an assertion if ``MOZ_INSTALL_TRACKING`` is specified but
|
|
||||||
``--with-adjust-sdk-keyfile`` is not to ensure our builders have a proper
|
|
||||||
adjust token for release and beta builds. It's great to catch some
|
|
||||||
errors at compile-time rather than in release. That being said, ideally
|
|
||||||
we'd specify a default ``--with-adjust-sdk-keyfile`` for developer builds
|
|
||||||
but I don't know how to do that.
|
|
||||||
|
|
||||||
Technical notes on the Adjust SDK integration
|
|
||||||
=============================================
|
|
||||||
|
|
||||||
The *Adjust install tracking SDK* is a pure-Java library that is conditionally compiled into Fennec.
|
|
||||||
It's not trivial to integrate such conditional feature libraries into Fennec without pre-processing.
|
|
||||||
To minimize such pre-processing, we define a trivial ``AdjustHelperInterface`` and define two
|
|
||||||
implementations: the real ``AdjustHelper``, which requires the Adjust SDK, and a no-op
|
|
||||||
``StubAdjustHelper``, which has no additional requirements. We use the existing pre-processed
|
|
||||||
``AppConstants.java.in`` to switch, at build-time, between the two implementations.
|
|
||||||
|
|
||||||
Notes and links
|
|
||||||
===============
|
|
||||||
|
|
||||||
.. _adjust GmbH: http://www.adjust.com
|
|
||||||
.. _github repository: https://github.com/adjust/android_sdk
|
|
||||||
.. [#official] Data is not sent for builds not produced by Mozilla: this would include
|
|
||||||
redistributors such as the Palemoon project.
|
|
||||||
.. [#channel] Data is not sent for Aurora, Nightly, or custom builds.
|
|
||||||
.. [#started] *Started* means more than just when the user taps the Fennec icon or otherwise causes
|
|
||||||
the Fennec user interface to appear directly. It includes, for example, when a Fennec service
|
|
||||||
(like the Update Service, or Background Sync), starts and Fennec was not previously running on the
|
|
||||||
device. See http://developer.android.com/reference/android/app/Application.html#onCreate%28%29
|
|
||||||
for details.
|
|
||||||
.. _INSTALL_REFERRER Intent: https://developer.android.com/reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html
|
|
@ -14,7 +14,7 @@ def test(mod, path, entity=None):
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
# ignore anything but mobile, which is our local repo checkout name
|
# ignore anything but mobile, which is our local repo checkout name
|
||||||
if mod not in ("dom", "toolkit", "mobile", "mobile/android/base", "mobile/android"):
|
if mod not in ("dom", "toolkit", "mobile", "mobile/android"):
|
||||||
return "ignore"
|
return "ignore"
|
||||||
|
|
||||||
if mod == "toolkit":
|
if mod == "toolkit":
|
||||||
|
@ -11,7 +11,7 @@ depth = ../../..
|
|||||||
all = mobile/android/locales/all-locales
|
all = mobile/android/locales/all-locales
|
||||||
|
|
||||||
[compare]
|
[compare]
|
||||||
dirs = mobile mobile/android mobile/android/base
|
dirs = mobile mobile/android
|
||||||
|
|
||||||
[includes]
|
[includes]
|
||||||
toolkit = toolkit/locales/l10n.ini
|
toolkit = toolkit/locales/l10n.ini
|
||||||
|
@ -128,13 +128,6 @@ exclude-multi-locale = [
|
|||||||
reference = "mobile/android/locales/en-US/**"
|
reference = "mobile/android/locales/en-US/**"
|
||||||
l10n = "{l}mobile/android/**"
|
l10n = "{l}mobile/android/**"
|
||||||
|
|
||||||
[[paths]]
|
|
||||||
reference = "mobile/android/base/locales/en-US/**"
|
|
||||||
l10n = "{l}mobile/android/base/**"
|
|
||||||
test = [
|
|
||||||
"android-dtd",
|
|
||||||
]
|
|
||||||
|
|
||||||
# hand-picked paths from toolkit, keep in sync with jar.mn
|
# hand-picked paths from toolkit, keep in sync with jar.mn
|
||||||
[[paths]]
|
[[paths]]
|
||||||
reference = "dom/locales/en-US/chrome/global.dtd"
|
reference = "dom/locales/en-US/chrome/global.dtd"
|
||||||
|
@ -8,6 +8,44 @@ with Files("**"):
|
|||||||
BUG_COMPONENT = ("GeckoView", "General")
|
BUG_COMPONENT = ("GeckoView", "General")
|
||||||
SCHEDULES.exclusive = ["android"]
|
SCHEDULES.exclusive = ["android"]
|
||||||
|
|
||||||
|
# The recursive make backend treats the first output specially: it's passed as
|
||||||
|
# an open FileAvoidWrite to the invoked script. That doesn't work well with
|
||||||
|
# the Gradle task that generates all of the outputs, so we add a dummy first
|
||||||
|
# output.
|
||||||
|
t = ("android_apks",)
|
||||||
|
|
||||||
|
GENERATED_FILES += [t]
|
||||||
|
GENERATED_FILES[t].force = True
|
||||||
|
GENERATED_FILES[t].script = "/mobile/android/gradle.py:assemble_app"
|
||||||
|
|
||||||
|
# The Android APKs are assembled in the `export` tier, which usually occurs
|
||||||
|
# before the following files are generated. However, mechanisms in `recurse.mk`
|
||||||
|
# are used to pull the generated files into the `pre-export` tier, so do not
|
||||||
|
# require an explicit dependency here.
|
||||||
|
config_keys = (
|
||||||
|
"MOZ_ANDROID_CONTENT_SERVICE_COUNT",
|
||||||
|
"MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS",
|
||||||
|
)
|
||||||
|
flags = ["%s=%s" % (k, CONFIG[k] if CONFIG[k] else "") for k in config_keys]
|
||||||
|
|
||||||
|
GeneratedFile(
|
||||||
|
("geckoview/src/main/AndroidManifest_overlay.xml",),
|
||||||
|
script="gen_from_jinja.py",
|
||||||
|
inputs=["geckoview/src/main/AndroidManifest_overlay.jinja"],
|
||||||
|
flags=flags,
|
||||||
|
)
|
||||||
|
|
||||||
|
GeneratedFile(
|
||||||
|
(
|
||||||
|
"geckoview/src/main/java/org/mozilla/gecko/process/GeckoChildProcessServices.java",
|
||||||
|
),
|
||||||
|
script="gen_from_jinja.py",
|
||||||
|
inputs=[
|
||||||
|
"geckoview/src/main/java/org/mozilla/gecko/process/GeckoChildProcessServices.jinja"
|
||||||
|
],
|
||||||
|
flags=flags,
|
||||||
|
)
|
||||||
|
|
||||||
CONFIGURE_SUBST_FILES += ["installer/Makefile"]
|
CONFIGURE_SUBST_FILES += ["installer/Makefile"]
|
||||||
|
|
||||||
DIRS += [
|
DIRS += [
|
||||||
@ -17,7 +55,6 @@ DIRS += [
|
|||||||
|
|
||||||
DIRS += [
|
DIRS += [
|
||||||
"actors",
|
"actors",
|
||||||
"base",
|
|
||||||
"chrome",
|
"chrome",
|
||||||
"components",
|
"components",
|
||||||
"modules",
|
"modules",
|
||||||
|
@ -14,7 +14,7 @@ def test(mod, path, entity=None):
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
# ignore anything but mobile, which is our local repo checkout name
|
# ignore anything but mobile, which is our local repo checkout name
|
||||||
if mod not in ("dom", "toolkit", "mobile", "mobile/android/base", "mobile/android"):
|
if mod not in ("dom", "toolkit", "mobile", "mobile/android"):
|
||||||
return "ignore"
|
return "ignore"
|
||||||
|
|
||||||
if mod == "toolkit":
|
if mod == "toolkit":
|
||||||
|
@ -12,7 +12,7 @@ depth = ../..
|
|||||||
all = mobile/android/locales/all-locales
|
all = mobile/android/locales/all-locales
|
||||||
|
|
||||||
[compare]
|
[compare]
|
||||||
dirs = mobile mobile/android mobile/android/base
|
dirs = mobile mobile/android
|
||||||
|
|
||||||
[includes]
|
[includes]
|
||||||
toolkit = toolkit/locales/l10n.ini
|
toolkit = toolkit/locales/l10n.ini
|
||||||
|
@ -203,8 +203,6 @@ class EnumerateApp(object):
|
|||||||
'l10n': mozpath.normpath('{l10n_base}/{locale}/%s/**' %
|
'l10n': mozpath.normpath('{l10n_base}/{locale}/%s/**' %
|
||||||
module)
|
module)
|
||||||
}
|
}
|
||||||
if module == 'mobile/android/base':
|
|
||||||
paths['test'] = ['android-dtd']
|
|
||||||
projectconfig.add_paths(paths)
|
projectconfig.add_paths(paths)
|
||||||
for child in aConfig.children:
|
for child in aConfig.children:
|
||||||
self._config_for_ini(projectconfig, child)
|
self._config_for_ini(projectconfig, child)
|
||||||
|
@ -19,8 +19,7 @@
|
|||||||
|
|
||||||
// Minimum memory threshold for a device to be considered
|
// Minimum memory threshold for a device to be considered
|
||||||
// a low memory platform. This value has be in sync with
|
// a low memory platform. This value has be in sync with
|
||||||
// Java's equivalent threshold, defined in
|
// Java's equivalent threshold, defined in HardwareUtils.java
|
||||||
// mobile/android/base/util/HardwareUtils.java
|
|
||||||
# define LOW_MEMORY_THRESHOLD_KB (384 * 1024)
|
# define LOW_MEMORY_THRESHOLD_KB (384 * 1024)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user