mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-22 02:25:05 +00:00
156 lines
5.1 KiB
Groovy
156 lines
5.1 KiB
Groovy
apply plugin: 'com.android.application'
|
|
|
|
android {
|
|
compileSdkVersion 23
|
|
buildToolsVersion "23.0.1"
|
|
|
|
defaultConfig {
|
|
targetSdkVersion 22
|
|
minSdkVersion 9
|
|
applicationId mozconfig.substs.ANDROID_PACKAGE_NAME
|
|
testApplicationId 'org.mozilla.roboexample.test'
|
|
testInstrumentationRunner 'org.mozilla.gecko.FennecInstrumentationTestRunner'
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_7
|
|
targetCompatibility JavaVersion.VERSION_1_7
|
|
}
|
|
|
|
lintOptions {
|
|
abortOnError false
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled true
|
|
proguardFile "${topsrcdir}/mobile/android/config/proguard/proguard.cfg"
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
manifest.srcFile "${topobjdir}/mobile/android/base/AndroidManifest.xml"
|
|
}
|
|
|
|
androidTest {
|
|
manifest.srcFile "${topobjdir}/build/mobile/robocop/AndroidManifest.xml"
|
|
java {
|
|
srcDir "src/robocop"
|
|
srcDir "src/background"
|
|
srcDir "src/browser"
|
|
srcDir "src/javaaddons"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
compile project(':base')
|
|
compile project(':omnijar')
|
|
// 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'
|
|
}
|
|
}
|
|
|
|
task checkLibsExistInDistDir<< {
|
|
if (syncLibsFromDistDir.source.empty) {
|
|
throw new GradleException("Required JNI libraries not found in ${topobjdir}/dist/fennec/lib. Have you built and packaged?")
|
|
}
|
|
}
|
|
|
|
task syncLibsFromDistDir(type: Sync, dependsOn: checkLibsExistInDistDir) {
|
|
into("${project.buildDir}/generated/jniLibs")
|
|
from("${topobjdir}/dist/fennec/lib")
|
|
}
|
|
|
|
task checkAssetsExistInDistDir<< {
|
|
if (syncAssetsFromDistDir.source.empty) {
|
|
throw new GradleException("Required assets not found in ${topobjdir}/dist/fennec/assets. Have you built and packaged?")
|
|
}
|
|
}
|
|
|
|
task syncAssetsFromDistDir(type: Sync, dependsOn: checkAssetsExistInDistDir) {
|
|
into("${project.buildDir}/generated/assets")
|
|
from("${topobjdir}/dist/fennec/assets") {
|
|
exclude 'omni.ja'
|
|
}
|
|
}
|
|
|
|
/**
|
|
* We want to expose the JSM files and chrome content to IDEs; the omnijar
|
|
* project does this. In addition, the :omnijar:buildOmnijar task builds a new
|
|
* omni.ja (directly into the object directory).
|
|
*
|
|
* The task dependency is: :generateDebugAssets -> :omnijar:buildOmnijar.
|
|
*
|
|
* One might expect that we could do this all in the omnijar project, but there
|
|
* appears to be a bug (which I have not fully isolated) where-by debug-only
|
|
* assets in a library (.aar file) are ignored in favor of release assets. This
|
|
* means we would have to insert the omni.ja into the omnijar project's release
|
|
* assets, which is altogether confusing.
|
|
*/
|
|
android.applicationVariants.all { variant ->
|
|
// We only insert omni.ja and the .so libraries into debug builds.
|
|
def name = variant.buildType.name
|
|
if (!name.contains(com.android.builder.core.BuilderConstants.DEBUG)) {
|
|
return
|
|
}
|
|
|
|
def buildOmnijarTask = project(':omnijar').tasks.getByName('buildOmnijar')
|
|
syncOmnijarFromDistDir.dependsOn buildOmnijarTask
|
|
def generateAssetsTask = tasks.findByName("generate${name.capitalize()}Assets")
|
|
generateAssetsTask.dependsOn syncOmnijarFromDistDir
|
|
generateAssetsTask.dependsOn syncLibsFromDistDir
|
|
generateAssetsTask.dependsOn syncAssetsFromDistDir
|
|
|
|
android.sourceSets.debug.assets.srcDir syncOmnijarFromDistDir.destinationDir
|
|
android.sourceSets.debug.assets.srcDir syncAssetsFromDistDir.destinationDir
|
|
android.sourceSets.debug.jniLibs.srcDir syncLibsFromDistDir.destinationDir
|
|
}
|
|
|
|
apply plugin: 'spoon'
|
|
|
|
spoon {
|
|
// For now, let's be verbose.
|
|
debug = true
|
|
// It's not helpful to pass when we don't have a device connected.
|
|
failIfNoDeviceConnected = true
|
|
|
|
def spoonPackageName
|
|
if (gradle.startParameter.taskNames.contains('runBrowserTests')) {
|
|
spoonPackageName = 'org.mozilla.tests.browser.junit3'
|
|
}
|
|
if (gradle.startParameter.taskNames.contains('runBackgroundTests')) {
|
|
spoonPackageName = 'org.mozilla.gecko.background'
|
|
}
|
|
if (project.hasProperty('spoonPackageName')) {
|
|
// Command line overrides everything.
|
|
spoonPackageName = project.spoonPackageName
|
|
}
|
|
if (spoonPackageName) {
|
|
instrumentationArgs = ['-e', "package=${spoonPackageName}".toString()]
|
|
}
|
|
}
|
|
|
|
// See discussion at https://github.com/stanfy/spoon-gradle-plugin/issues/9.
|
|
afterEvaluate {
|
|
tasks["spoon${android.testBuildType.capitalize()}AndroidTest"].outputs.upToDateWhen { false }
|
|
|
|
// This is an awkward way to define different sets of instrumentation tests.
|
|
// The task name itself is fished at runtime and the package name configured
|
|
// in the spoon configuration.
|
|
task runBrowserTests {
|
|
dependsOn tasks["spoonDebugAndroidTest"]
|
|
}
|
|
task runBackgroundTests {
|
|
dependsOn tasks["spoonDebugAndroidTest"]
|
|
}
|
|
}
|