Bug 1249421 - Generate gradle_AndroidManifest.xml like AndroidManifest.xml. r=me,ahunt
MozReview-Commit-ID: 4Um5egblYkE
--- a/mobile/android/app/build.gradle
+++ b/mobile/android/app/build.gradle
@@ -62,17 +62,17 @@ android {
}
// Automation builds.
automation {
}
}
sourceSets {
main {
- manifest.srcFile "${project.buildDir}/generated/source/preprocessed_manifest/AndroidManifest.xml"
+ manifest.srcFile "${topobjdir}/mobile/android/base/gradle_AndroidManifest.xml"
java {
srcDir "${topsrcdir}/mobile/android/base/java"
srcDir "${topsrcdir}/mobile/android/search/java"
srcDir "${topsrcdir}/mobile/android/javaaddons/java"
srcDir "${topsrcdir}/mobile/android/services/src/main/java"
if (mozconfig.substs.MOZ_ANDROID_MLS_STUMBLER) {
@@ -284,28 +284,17 @@ task buildOmnijar(type:Exec) {
errorOutput = standardOutput
doLast {
if (execResult.exitValue != 0) {
throw new GradleException("Process '${commandLine}' finished with non-zero exit value ${execResult.exitValue}:\n\n${standardOutput.toString()}")
}
}
}
-// It's not easy -- see the backout in Bug 1242213 -- to change the <manifest>
-// package for Fennec. Gradle has grown a mechanism to achieve what we want for
-// Fennec, however, with applicationId. To use the same manifest as moz.build,
-// we replace the package with org.mozilla.gecko (the eventual package) here.
-task rewriteManifestPackage(type: Copy, dependsOn: rootProject.generateCodeAndResources) {
- into("${project.buildDir}/generated/source/preprocessed_manifest")
- from("${topobjdir}/mobile/android/base/AndroidManifest.xml")
- filter { it.replaceFirst(/package=".*?"/, 'package="org.mozilla.gecko"') }
-}
-
android.applicationVariants.all { variant ->
- variant.preBuild.dependsOn rewriteManifestPackage
variant.preBuild.dependsOn syncPreprocessedCode
variant.preBuild.dependsOn syncPreprocessedResources
// Like 'local' or 'localOld'.
def productFlavor = variant.productFlavors[0].name
// Like 'debug' or 'release'.
def buildType = variant.buildType.name
--- a/mobile/android/base/AndroidManifest.xml.in
+++ b/mobile/android/base/AndroidManifest.xml.in
@@ -1,12 +1,12 @@
#filter substitution
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="@ANDROID_PACKAGE_NAME@"
+ package="@ANDROID_PACKAGE@"
android:installLocation="auto"
android:versionCode="@ANDROID_VERSION_CODE@"
android:versionName="@MOZ_APP_VERSION@"
#ifdef MOZ_ANDROID_SHARED_ID
android:sharedUserId="@MOZ_ANDROID_SHARED_ID@"
#endif
>
<uses-sdk android:minSdkVersion="@MOZ_ANDROID_MIN_SDK_VERSION@"
--- a/mobile/android/base/Makefile.in
+++ b/mobile/android/base/Makefile.in
@@ -480,17 +480,17 @@ update-generated-wrappers:
$(MAKE) -C ../../../faster
$(MAKE) -C ../installer stage-package
$(MKDIR) -p $(@D)
rsync --update $(DIST)/fennec/$(notdir $(OMNIJAR_NAME)) $@
$(RM) $(DIST)/fennec/$(notdir $(OMNIJAR_NAME))
# Targets built very early during a Gradle build.
gradle-targets: $(constants_PP_JAVAFILES)
-gradle-targets: $(abspath AndroidManifest.xml)
+gradle-targets: gradle_AndroidManifest.xml
gradle-targets: $(ANDROID_GENERATED_RESFILES)
ifndef MOZILLA_OFFICIAL
# Local developers update omni.ja during their builds. There's a
# chicken-and-egg problem here.
gradle-omnijar: $(abspath $(DIST)/fennec/$(OMNIJAR_NAME))
else
# In automation, omni.ja is built only during packaging.
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -6,16 +6,22 @@
DIRS += ['locales']
GENERATED_FILES += ['AndroidManifest.xml']
manifest = GENERATED_FILES['AndroidManifest.xml']
manifest.script = '/python/mozbuild/mozbuild/action/generate_android.py:generate_android_manifest'
manifest.inputs = ['AndroidManifest.xml.in']
+# We generate a slightly different manifest for Gradle to consume.
+GENERATED_FILES += ['gradle_AndroidManifest.xml']
+manifest = GENERATED_FILES['gradle_AndroidManifest.xml']
+manifest.script = '/python/mozbuild/mozbuild/action/generate_android.py:generate_gradle_android_manifest'
+manifest.inputs = ['AndroidManifest.xml.in']
+
GENERATED_FILES += ['fennec_ids.txt']
fennec_ids = GENERATED_FILES['fennec_ids.txt']
fennec_ids.script = '/python/mozbuild/mozbuild/action/generate_android.py:generate_fennec_ids'
fennec_ids.inputs = ['fennec_ids.txt.in']
for f in ['AdjustConstants.java', 'AppConstants.java']:
p = 'generated/preprocessed/org/mozilla/gecko/' + f
GENERATED_FILES += [p]
--- a/python/mozbuild/mozbuild/action/generate_android.py
+++ b/python/mozbuild/mozbuild/action/generate_android.py
@@ -122,17 +122,23 @@ def _do_preprocessing(output, input, add
defines.update(additional_defines)
return preprocess(output=output,
includes=[input],
marker=marker,
defines=defines)
def generate_android_manifest(output, input):
- return _do_preprocessing(output, input, {}, marker='#')
+ additional_defines = {'ANDROID_PACKAGE': buildconfig.substs['ANDROID_PACKAGE_NAME']}
+ return _do_preprocessing(output, input, additional_defines, marker='#')
+
+
+def generate_gradle_android_manifest(output, input):
+ additional_defines = {'ANDROID_PACKAGE': 'org.mozilla.gecko'}
+ return _do_preprocessing(output, input, additional_defines, marker='#')
def generate_fennec_ids(output, input):
return _do_preprocessing(output, input, {}, marker='#')
def generate_preprocessed_java(output, input):
return _do_preprocessing(output, input, {}, marker='//#')