Bug 1233882 - Fold base Gradle project into app Gradle project. r?sebastian,mcomella
The android:packageName setting is temporary; I'll find a way to make
this better before landing. I want to get a few folks to run this
commit locally, and I'd like whatever comments on the lint output
mcomella may have.
deleted file mode 100644
--- a/mobile/android/app/base/build.gradle
+++ /dev/null
@@ -1,138 +0,0 @@
-buildDir "${topobjdir}/gradle/build/mobile/android/base"
-
-apply plugin: 'com.android.library'
-
-android {
- compileSdkVersion 23
- buildToolsVersion "23.0.2"
-
- defaultConfig {
- targetSdkVersion 22
- minSdkVersion 15
- // Used by Robolectric based tests; see TestRunner.
- buildConfigField 'String', 'BUILD_DIR', "\"${project.buildDir}\""
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_7
- targetCompatibility JavaVersion.VERSION_1_7
- }
-
- lintOptions {
- abortOnError false
- }
-
- sourceSets {
- main {
- manifest.srcFile "${topsrcdir}/mobile/android/base/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) {
- srcDir "${topsrcdir}/mobile/android/stumbler/java"
- }
-
- if (!mozconfig.substs.MOZ_CRASHREPORTER) {
- exclude 'org/mozilla/gecko/CrashReporter.java'
- }
-
- if (!mozconfig.substs.MOZ_NATIVE_DEVICES) {
- exclude 'org/mozilla/gecko/ChromeCast.java'
- exclude 'org/mozilla/gecko/GeckoMediaPlayer.java'
- exclude 'org/mozilla/gecko/MediaPlayerManager.java'
- }
-
- if (mozconfig.substs.MOZ_WEBRTC) {
- srcDir "${topsrcdir}/media/webrtc/trunk/webrtc/modules/audio_device/android/java/src"
- srcDir "${topsrcdir}/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src"
- srcDir "${topsrcdir}/media/webrtc/trunk/webrtc/modules/video_render/android/java/src"
- }
-
- if (mozconfig.substs.MOZ_INSTALL_TRACKING) {
- exclude 'org/mozilla/gecko/adjust/StubAdjustHelper.java'
- } else {
- exclude 'org/mozilla/gecko/adjust/AdjustHelper.java'
- }
-
- srcDir "${project.buildDir}/generated/source/preprocessed_code" // See syncPreprocessedCode.
- }
-
- res {
- srcDir "${topsrcdir}/${mozconfig.substs.MOZ_BRANDING_DIRECTORY}/res"
- srcDir "${project.buildDir}/generated/source/preprocessed_resources" // See syncPreprocessedResources.
- srcDir "${topsrcdir}/mobile/android/base/resources"
- srcDir "${topsrcdir}/mobile/android/services/src/main/res"
- if (mozconfig.substs.MOZ_CRASHREPORTER) {
- srcDir "${topsrcdir}/mobile/android/base/crashreporter/res"
- }
- }
-
- assets {
- srcDir "${topsrcdir}/mobile/android/app/assets"
- }
- }
-
- test {
- java {
- srcDir "${topsrcdir}/mobile/android/tests/background/junit4/src"
- }
-
- resources {
- srcDir "${topsrcdir}/mobile/android/tests/background/junit4/resources"
- }
- }
- }
-}
-
-task syncPreprocessedCode(type: Sync, dependsOn: rootProject.generateCodeAndResources) {
- into("${project.buildDir}/generated/source/preprocessed_code")
- from("${topobjdir}/mobile/android/base/generated/preprocessed")
-}
-
-task syncPreprocessedResources(type: Sync, dependsOn: rootProject.generateCodeAndResources) {
- into("${project.buildDir}/generated/source/preprocessed_resources")
- from("${topobjdir}/mobile/android/base/res")
-}
-
-android.libraryVariants.all { variant ->
- variant.preBuild.dependsOn syncPreprocessedCode
- variant.preBuild.dependsOn syncPreprocessedResources
-}
-
-dependencies {
- compile 'com.android.support:support-v4:23.0.1'
- compile 'com.android.support:appcompat-v7:23.0.1'
- compile 'com.android.support:recyclerview-v7:23.0.1'
- compile 'com.android.support:design:23.0.1'
-
- if (mozconfig.substs.MOZ_NATIVE_DEVICES) {
- compile 'com.android.support:mediarouter-v7:23.0.1'
- compile 'com.google.android.gms:play-services-basement:8.1.0'
- compile 'com.google.android.gms:play-services-base:8.1.0'
- compile 'com.google.android.gms:play-services-cast:8.1.0'
- }
-
- if (mozconfig.substs.MOZ_ANDROID_GCM) {
- compile 'com.google.android.gms:play-services-basement:8.1.0'
- compile 'com.google.android.gms:play-services-base:8.1.0'
- compile 'com.google.android.gms:play-services-gcm:8.1.0'
- }
-
- compile project(':thirdparty')
-
- testCompile 'junit:junit:4.12'
- testCompile 'org.robolectric:robolectric:3.0'
- testCompile 'org.simpleframework:simple-http:6.0.1'
- testCompile 'org.mockito:mockito-core:1.10.19'
-}
-
-apply plugin: 'idea'
-
-idea {
- module {
- }
-}
--- a/mobile/android/app/build.gradle
+++ b/mobile/android/app/build.gradle
@@ -12,16 +12,18 @@ android {
applicationId mozconfig.substs.ANDROID_PACKAGE_NAME
testApplicationId 'org.mozilla.roboexample.test'
testInstrumentationRunner 'org.mozilla.gecko.FennecInstrumentationTestRunner'
manifestPlaceholders = [
ANDROID_PACKAGE_NAME: mozconfig.substs.ANDROID_PACKAGE_NAME,
MOZ_ANDROID_MIN_SDK_VERSION: mozconfig.substs.MOZ_ANDROID_MIN_SDK_VERSION,
MOZ_ANDROID_SHARED_ID: "${mozconfig.substs.ANDROID_PACKAGE_NAME}.sharedID",
]
+ // Used by Robolectric based tests; see TestRunner.
+ buildConfigField 'String', 'BUILD_DIR', "\"${project.buildDir}\""
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
dexOptions {
@@ -61,16 +63,75 @@ android {
// Automation builds.
automation {
}
}
sourceSets {
main {
manifest.srcFile "${topobjdir}/mobile/android/base/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) {
+ srcDir "${topsrcdir}/mobile/android/stumbler/java"
+ }
+
+ if (!mozconfig.substs.MOZ_CRASHREPORTER) {
+ exclude 'org/mozilla/gecko/CrashReporter.java'
+ }
+
+ if (!mozconfig.substs.MOZ_NATIVE_DEVICES) {
+ exclude 'org/mozilla/gecko/ChromeCast.java'
+ exclude 'org/mozilla/gecko/GeckoMediaPlayer.java'
+ exclude 'org/mozilla/gecko/MediaPlayerManager.java'
+ }
+
+ if (mozconfig.substs.MOZ_WEBRTC) {
+ srcDir "${topsrcdir}/media/webrtc/trunk/webrtc/modules/audio_device/android/java/src"
+ srcDir "${topsrcdir}/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src"
+ srcDir "${topsrcdir}/media/webrtc/trunk/webrtc/modules/video_render/android/java/src"
+ }
+
+ if (mozconfig.substs.MOZ_INSTALL_TRACKING) {
+ exclude 'org/mozilla/gecko/adjust/StubAdjustHelper.java'
+ } else {
+ exclude 'org/mozilla/gecko/adjust/AdjustHelper.java'
+ }
+
+ srcDir "${project.buildDir}/generated/source/preprocessed_code" // See syncPreprocessedCode.
+ }
+
+ res {
+ srcDir "${topsrcdir}/${mozconfig.substs.MOZ_BRANDING_DIRECTORY}/res"
+ srcDir "${project.buildDir}/generated/source/preprocessed_resources" // See syncPreprocessedResources.
+ srcDir "${topsrcdir}/mobile/android/base/resources"
+ srcDir "${topsrcdir}/mobile/android/services/src/main/res"
+ if (mozconfig.substs.MOZ_CRASHREPORTER) {
+ srcDir "${topsrcdir}/mobile/android/base/crashreporter/res"
+ }
+ }
+
+ assets {
+ srcDir "${topsrcdir}/mobile/android/app/assets"
+ }
+ }
+
+ test {
+ java {
+ srcDir "${topsrcdir}/mobile/android/tests/background/junit4/src"
+ }
+
+ resources {
+ srcDir "${topsrcdir}/mobile/android/tests/background/junit4/resources"
+ }
}
androidTest {
manifest.srcFile "robocop_AndroidManifest.xml.in"
java {
srcDir "${topsrcdir}/mobile/android/tests/browser/robocop/src"
srcDir "${topsrcdir}/mobile/android/tests/background/junit3/src"
srcDir "${topsrcdir}/mobile/android/tests/browser/junit3/src"
@@ -82,17 +143,41 @@ android {
assets {
srcDir "${topsrcdir}/mobile/android/tests/browser/robocop/assets"
}
}
}
}
dependencies {
- compile project(':base')
+ compile 'com.android.support:support-v4:23.0.1'
+ compile 'com.android.support:appcompat-v7:23.0.1'
+ compile 'com.android.support:recyclerview-v7:23.0.1'
+ compile 'com.android.support:design:23.0.1'
+
+ if (mozconfig.substs.MOZ_NATIVE_DEVICES) {
+ compile 'com.android.support:mediarouter-v7:23.0.1'
+ compile 'com.google.android.gms:play-services-basement:8.1.0'
+ compile 'com.google.android.gms:play-services-base:8.1.0'
+ compile 'com.google.android.gms:play-services-cast:8.1.0'
+ }
+
+ if (mozconfig.substs.MOZ_ANDROID_GCM) {
+ compile 'com.google.android.gms:play-services-basement:8.1.0'
+ compile 'com.google.android.gms:play-services-base:8.1.0'
+ compile 'com.google.android.gms:play-services-gcm:8.1.0'
+ }
+
+ compile project(':thirdparty')
+
+ testCompile 'junit:junit:4.12'
+ testCompile 'org.robolectric:robolectric:3.0'
+ testCompile 'org.simpleframework:simple-http:6.0.1'
+ testCompile 'org.mockito:mockito-core:1.10.19'
+
// Including the Robotium JAR directly can cause issues with dexing.
androidTestCompile 'com.jayway.android.robotium:robotium-solo:4.3.1'
}
task syncOmnijarFromDistDir(type: Sync) {
into("${project.buildDir}/generated/omnijar")
from("${topobjdir}/dist/fennec/assets") {
include 'omni.ja'
@@ -118,16 +203,26 @@ task checkAssetsExistInDistDir<< {
task syncAssetsFromDistDir(type: Sync, dependsOn: checkAssetsExistInDistDir) {
into("${project.buildDir}/generated/assets")
from("${topobjdir}/dist/fennec/assets") {
exclude 'omni.ja'
}
}
+task syncPreprocessedCode(type: Sync, dependsOn: rootProject.generateCodeAndResources) {
+ into("${project.buildDir}/generated/source/preprocessed_code")
+ from("${topobjdir}/mobile/android/base/generated/preprocessed")
+}
+
+task syncPreprocessedResources(type: Sync, dependsOn: rootProject.generateCodeAndResources) {
+ into("${project.buildDir}/generated/source/preprocessed_resources")
+ from("${topobjdir}/mobile/android/base/res")
+}
+
// The omnijar inputs are listed as resource directory inputs to a dummy JAR.
// That arrangement labels them nicely in IntelliJ. See the comment in the
// :omnijar project for more context.
evaluationDependsOn(':omnijar')
task buildOmnijar(type:Exec) {
dependsOn rootProject.generateCodeAndResources
@@ -151,16 +246,19 @@ task buildOmnijar(type:Exec) {
doLast {
if (execResult.exitValue != 0) {
throw new GradleException("Process '${commandLine}' finished with non-zero exit value ${execResult.exitValue}:\n\n${standardOutput.toString()}")
}
}
}
android.applicationVariants.all { variant ->
+ 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
// We insert omni.ja and the .so libraries into all local builds.
if (!productFlavor.startsWith('local')) {
return
rename from mobile/android/app/base/lint.xml
rename to mobile/android/app/lint.xml
--- 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="org.mozilla.gecko"
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/settings.gradle
+++ b/settings.gradle
@@ -24,22 +24,20 @@ if (json.substs.MOZ_BUILD_APP != 'mobile
// Set the Android SDK location. This is the *least specific* mechanism, which
// is unfortunate: we'd prefer to use the *most specific* mechanism. That is,
// local.properties (first 'sdk.dir', then 'android.dir') and then the
// environment variable ANDROID_HOME will override this. That's unfortunate,
// but it's hard to automatically arrange better.
System.setProperty('android.home', json.substs.ANDROID_SDK_ROOT)
include ':app'
-include ':base'
include ':omnijar'
include ':thirdparty'
project(':app').projectDir = new File("${json.topsrcdir}/mobile/android/app")
-project(':base').projectDir = new File("${json.topsrcdir}/mobile/android/app/base")
project(':omnijar').projectDir = new File("${json.topsrcdir}/mobile/android/app/omnijar")
project(':thirdparty').projectDir = new File("${json.topsrcdir}/mobile/android/thirdparty")
// The Gradle instance is shared between settings.gradle and all the
// other build.gradle files (see
// http://forums.gradle.org/gradle/topics/define_extension_properties_from_settings_xml).
// We use this ext property to pass the per-object-directory mozconfig
// between scripts. This lets us execute set-up code before we gradle