Bug 1254355 - Part 2: Generate AndroidManifest.xml using GENERATED_FILES. r=gps
MozReview-Commit-ID: 8McGHkPYyhI
--- a/mobile/android/base/Makefile.in
+++ b/mobile/android/base/Makefile.in
@@ -3,38 +3,16 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# We call mach -> Make -> gradle -> mach, which races to find and
# create .mozconfig files and to generate targets.
ifdef MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE
.NOTPARALLEL:
endif
-MOZ_BUILDID := $(shell awk '{print $$3}' $(DEPTH)/buildid.h)
-
-# Set the appropriate version code, based on the existance of the
-# MOZ_APP_ANDROID_VERSION_CODE variable.
-ifdef MOZ_APP_ANDROID_VERSION_CODE
- ANDROID_VERSION_CODE:=$(MOZ_APP_ANDROID_VERSION_CODE)
-else
- ANDROID_VERSION_CODE:=$(shell $(PYTHON) \
- $(topsrcdir)/python/mozbuild/mozbuild/android_version_code.py \
- --verbose \
- --with-android-cpu-arch=$(ANDROID_CPU_ARCH) \
- $(if $(MOZ_ANDROID_MIN_SDK_VERSION),--with-android-min-sdk=$(MOZ_ANDROID_MIN_SDK_VERSION)) \
- $(if $(MOZ_ANDROID_MAX_SDK_VERSION),--with-android-max-sdk=$(MOZ_ANDROID_MAX_SDK_VERSION)) \
- $(MOZ_BUILDID))
-endif
-
-DEFINES += \
- -DANDROID_VERSION_CODE=$(ANDROID_VERSION_CODE) \
- -DMOZ_ANDROID_SHARED_ID="$(MOZ_ANDROID_SHARED_ID)" \
- -DMOZ_BUILDID=$(MOZ_BUILDID) \
- $(NULL)
-
GARBAGE += \
classes.dex \
gecko.ap_ \
res/values/strings.xml \
res/raw/browsersearch.json \
res/raw/suggestedsites.json \
.aapt.deps \
GeneratedJNINatives.h \
--- a/mobile/android/base/generate_build_config.py
+++ b/mobile/android/base/generate_build_config.py
@@ -23,16 +23,17 @@ from __future__ import (
from collections import defaultdict
import os
import sys
import buildconfig
from mozbuild import preprocessor
+from mozbuild.android_version_code import android_version_code
def _defines():
CONFIG = defaultdict(lambda: None)
CONFIG.update(buildconfig.substs)
DEFINES = dict(buildconfig.defines)
for var in ('MOZ_ANDROID_ACTIVITY_STREAM'
@@ -57,16 +58,17 @@ def _defines():
'MOZ_PKG_SPECIAL',
'MOZ_UPDATER'):
if CONFIG[var]:
DEFINES[var] = CONFIG[var]
for var in ('ANDROID_CPU_ARCH',
'ANDROID_PACKAGE_NAME',
'GRE_MILESTONE',
+ 'MOZ_ANDROID_SHARED_ID',
'MOZ_ANDROID_APPLICATION_CLASS',
'MOZ_ANDROID_BROWSER_INTENT_CLASS',
'MOZ_ANDROID_SEARCH_INTENT_CLASS',
'MOZ_APP_BASENAME',
'MOZ_APP_DISPLAYNAME',
'MOZ_APP_ID',
'MOZ_APP_NAME',
'MOZ_APP_UA_NAME',
@@ -96,18 +98,40 @@ def _defines():
# It's okay to use MOZ_ADJUST_SDK_KEY here because this doesn't
# leak the value to build logs.
if CONFIG['MOZ_INSTALL_TRACKING']:
DEFINES['MOZ_INSTALL_TRACKING_ADJUST_SDK_APP_TOKEN'] = CONFIG['MOZ_ADJUST_SDK_KEY']
DEFINES['MOZ_BUILDID'] = open(os.path.join(buildconfig.topobjdir, 'buildid.h')).readline().split()[2]
+ # Set the appropriate version code if not set by MOZ_APP_ANDROID_VERSION_CODE.
+ if CONFIG.get('MOZ_APP_ANDROID_VERSION_CODE'):
+ DEFINES['ANDROID_VERSION_CODE'] = \
+ CONFIG.get('MOZ_APP_ANDROID_VERSION_CODE')
+ else:
+ min_sdk = int(CONFIG.get('MOZ_ANDROID_MIN_SDK_VERSION') or '0') or None
+ max_sdk = int(CONFIG.get('MOZ_ANDROID_MAX_SDK_VERSION') or '0') or None
+ DEFINES['ANDROID_VERSION_CODE'] = android_version_code(
+ buildid=DEFINES['MOZ_BUILDID'],
+ cpu_arch=CONFIG['ANDROID_CPU_ARCH'],
+ min_sdk=min_sdk,
+ max_sdk=max_sdk)
+
return DEFINES
def generate_java(output_file, input_filename):
includes = preprocessor.preprocess(includes=[input_filename],
defines=_defines(),
output=output_file,
- marker="//#")
+ marker='//#')
includes.add(os.path.join(buildconfig.topobjdir, 'buildid.h'))
return includes
+
+
+def generate_android_manifest(output_file, input_filename):
+ includes = preprocessor.preprocess(includes=[input_filename],
+ defines=_defines(),
+ output=output_file,
+ marker='#')
+ includes.add(os.path.join(buildconfig.topobjdir, 'buildid.h'))
+ return includes
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -114,28 +114,32 @@ with Files('resources/menu/*activitystre
with Files('resources/menu/browsersearch_contextmenu.xml'):
BUG_COMPONENT = ('Firefox for Android', 'Awesomescreen')
DIRS += ['locales']
GENERATED_FILES += [
'../geckoview/generated/preprocessed/org/mozilla/geckoview/BuildConfig.java',
+ 'AndroidManifest.xml',
'generated/preprocessed/org/mozilla/gecko/AdjustConstants.java',
'generated/preprocessed/org/mozilla/gecko/AppConstants.java',
]
w = GENERATED_FILES['../geckoview/generated/preprocessed/org/mozilla/geckoview/BuildConfig.java']
w.script = 'generate_build_config.py:generate_java'
w.inputs += ['../geckoview/BuildConfig.java.in']
x = GENERATED_FILES['generated/preprocessed/org/mozilla/gecko/AdjustConstants.java']
x.script = 'generate_build_config.py:generate_java'
x.inputs += ['AdjustConstants.java.in']
y = GENERATED_FILES['generated/preprocessed/org/mozilla/gecko/AppConstants.java']
y.script = 'generate_build_config.py:generate_java'
y.inputs += ['AppConstants.java.in']
+z = GENERATED_FILES['AndroidManifest.xml']
+z.script = 'generate_build_config.py:generate_android_manifest'
+z.inputs += ['AndroidManifest.xml.in']
include('android-services.mozbuild')
geckoview_source_dir = TOPSRCDIR + '/mobile/android/geckoview/src/main/'
geckoview_thirdparty_source_dir = TOPSRCDIR + '/mobile/android/geckoview/src/thirdparty/'
thirdparty_source_dir = TOPSRCDIR + '/mobile/android/thirdparty/'
constants_jar = add_java_jar('constants')
@@ -1224,55 +1228,16 @@ if CONFIG['MOZ_ANDROID_DISTRIBUTION_DIRE
# If you change this, also change its equivalent in mobile/android/bouncer.
if not CONFIG['MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER']:
# If we are packaging the bouncer, it will have the distribution, so don't put
# it in the main APK as well.
ANDROID_ASSETS_DIRS += [
'%' + CONFIG['MOZ_ANDROID_DISTRIBUTION_DIRECTORY'] + '/assets',
]
-# We do not expose MOZ_ADJUST_SDK_KEY here because that # would leak the value
-# to build logs. Instead we expose the token quietly where appropriate in
-# Makefile.in.
-for var in ('MOZ_ANDROID_ANR_REPORTER', 'MOZ_DEBUG',
- 'MOZ_ANDROID_SEARCH_ACTIVITY', 'MOZ_NATIVE_DEVICES', 'MOZ_ANDROID_MLS_STUMBLER',
- 'MOZ_ANDROID_DOWNLOADS_INTEGRATION', 'MOZ_INSTALL_TRACKING',
- 'MOZ_ANDROID_GCM', 'MOZ_ANDROID_EXCLUDE_FONTS', 'MOZ_LOCALE_SWITCHER',
- 'MOZ_ANDROID_BEAM', 'MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE',
- 'MOZ_SWITCHBOARD', 'MOZ_ANDROID_CUSTOM_TABS',
- 'MOZ_ANDROID_ACTIVITY_STREAM'):
- if CONFIG[var]:
- DEFINES[var] = 1
-
-for var in ('MOZ_UPDATER', 'MOZ_PKG_SPECIAL', 'MOZ_ANDROID_GCM_SENDERID'):
- if CONFIG[var]:
- DEFINES[var] = CONFIG[var]
-
-for var in ('ANDROID_PACKAGE_NAME', 'ANDROID_CPU_ARCH',
- 'GRE_MILESTONE', 'MOZ_APP_BASENAME', 'MOZ_MOZILLA_API_KEY',
- 'MOZ_APP_DISPLAYNAME', 'MOZ_APP_UA_NAME', 'MOZ_APP_ID', 'MOZ_APP_NAME',
- 'MOZ_APP_VENDOR', 'MOZ_APP_VERSION', 'MOZ_CHILD_PROCESS_NAME',
- 'MOZ_ANDROID_APPLICATION_CLASS', 'MOZ_ANDROID_BROWSER_INTENT_CLASS', 'MOZ_ANDROID_SEARCH_INTENT_CLASS',
- 'MOZ_CRASHREPORTER', 'MOZ_UPDATE_CHANNEL', 'OMNIJAR_NAME',
- 'OS_TARGET', 'TARGET_XPCOM_ABI'):
- DEFINES[var] = CONFIG[var]
-
-# Mangle our package name to avoid Bug 750548.
-DEFINES['MANGLED_ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME'].replace('fennec', 'f3nn3c')
-DEFINES['MOZ_APP_ABI'] = CONFIG['TARGET_XPCOM_ABI']
-if not CONFIG['COMPILE_ENVIRONMENT']:
- # These should really come from the included binaries, but that's not easy.
- DEFINES['MOZ_APP_ABI'] = 'arm-eabi-gcc3' # Observe quote differences here ...
- DEFINES['TARGET_XPCOM_ABI'] = '"arm-eabi-gcc3"' # ... and here.
-
-if '-march=armv7' in CONFIG['OS_CFLAGS']:
- DEFINES['MOZ_MIN_CPU_VERSION'] = 7
-else:
- DEFINES['MOZ_MIN_CPU_VERSION'] = 5
-
if CONFIG['MOZ_ANDROID_SEARCH_ACTIVITY']:
# The Search Activity is mostly independent of Fennec proper, but
# it does depend on Geckoview. Therefore, we build it as a jar
# that depends on the Geckoview jars.
search_source_dir = SRCDIR + '/../search'
include('../search/search_activity_sources.mozbuild')
search_activity = add_java_jar('search-activity')
@@ -1286,25 +1251,19 @@ if CONFIG['MOZ_ANDROID_SEARCH_ACTIVITY']
'gecko-R.jar',
'gecko-browser.jar',
'gecko-mozglue.jar',
'gecko-thirdparty.jar',
'gecko-util.jar',
'gecko-view.jar',
]
+DEFINES['ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME']
FINAL_TARGET_PP_FILES += ['package-name.txt.in']
-DEFINES['OBJDIR'] = OBJDIR
-DEFINES['TOPOBJDIR'] = TOPOBJDIR
-
-OBJDIR_PP_FILES.mobile.android.base += [
- 'AndroidManifest.xml.in',
-]
-
gvjar.sources += ['generated/org/mozilla/gecko/' + x for x in [
'IGeckoEditableChild.java',
'IGeckoEditableParent.java',
'media/ICodec.java',
'media/ICodecCallbacks.java',
'media/IMediaDrmBridge.java',
'media/IMediaDrmBridgeCallbacks.java',
'media/IMediaManager.java',