221 lines
6.7 KiB
Groovy
221 lines
6.7 KiB
Groovy
|
buildscript {
|
||
|
repositories {
|
||
|
mavenCentral()
|
||
|
maven { url "https://jitpack.io" }
|
||
|
jcenter()
|
||
|
google()
|
||
|
}
|
||
|
dependencies {
|
||
|
classpath 'com.android.tools.build:gradle:8.3.0'
|
||
|
classpath 'com.noveogroup.android:check:1.2.5', {
|
||
|
exclude module: 'checkstyle'
|
||
|
exclude module: 'xmlpull'
|
||
|
}
|
||
|
classpath 'com.puppycrawl.tools:checkstyle:7.8.1'
|
||
|
classpath 'com.github.bjoernq:unmockplugin:0.7.9'
|
||
|
}
|
||
|
}
|
||
|
apply plugin: 'com.android.application'
|
||
|
apply plugin: 'com.noveogroup.android.check'
|
||
|
apply plugin: 'de.mobilej.unmock'
|
||
|
|
||
|
// enable verbose lint warnings
|
||
|
gradle.projectsEvaluated {
|
||
|
tasks.withType(JavaCompile) {
|
||
|
options.compilerArgs <<
|
||
|
'-Xlint:deprecation' <<
|
||
|
'-Xlint:unchecked' <<
|
||
|
'-Xdiags:verbose'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
repositories {
|
||
|
maven { url "${System.env.ANDROID_HOME}/extras/android/m2repository/" }
|
||
|
mavenCentral()
|
||
|
maven { url 'https://s3.amazonaws.com/repo.commonsware.com' }
|
||
|
google()
|
||
|
}
|
||
|
|
||
|
def excludeKxml2 = {
|
||
|
// This transitive dependency is excluded from some direct dependencies to prevent
|
||
|
// "Program type already present: org.xmlpull.v1.XmlSerializer" when running
|
||
|
// `gradle clean transformDexArchiveWithExternalLibsDexMergerForGenericDebugAndroidTest`
|
||
|
// This class is also included in the android core libs by default, so this should
|
||
|
// be safe to exclude from androidTestImplementation and implementation configurations.
|
||
|
exclude module: 'kxml2'
|
||
|
}
|
||
|
|
||
|
dependencies {
|
||
|
testImplementation 'androidx.test:core:1.4.0'
|
||
|
testImplementation 'com.google.android:android-test:4.1.1.4'
|
||
|
testImplementation 'org.robolectric:robolectric:4.7'
|
||
|
testImplementation 'com.squareup.okhttp3:mockwebserver:3.2.0'
|
||
|
testImplementation 'org.mockito:mockito-core:4.0.0'
|
||
|
testImplementation 'junit:junit:4.13.2'
|
||
|
|
||
|
androidTestImplementation 'com.google.android:android-test:4.1.1.4'
|
||
|
androidTestImplementation 'com.squareup.okhttp3:mockwebserver:4.9.2'
|
||
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
|
||
|
androidTestImplementation 'androidx.test:rules:1.4.0'
|
||
|
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
||
|
|
||
|
implementation 'androidx.legacy:legacy-support-core-ui:1.0.0'
|
||
|
implementation 'androidx.fragment:fragment:1.0.0'
|
||
|
implementation 'com.commonsware.cwac:wakeful:1.1.0'
|
||
|
implementation 'com.google.code.findbugs:annotations:3.0.1', {
|
||
|
// Need to exclude these, or build is broken by:
|
||
|
// com.android.dex.DexException: Multiple dex files define Ljavax/annotation/CheckForNull
|
||
|
exclude module: 'jsr305'
|
||
|
exclude module: 'jcip-annotations'
|
||
|
}
|
||
|
|
||
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||
|
}
|
||
|
|
||
|
def getVersionCode = {
|
||
|
int versionCode = 1
|
||
|
if(System.env.CI == 'true' && System.env.GIT_TAG && System.env.GIT_TAG.startsWith('v')) {
|
||
|
def versionParts = System.env.GIT_TAG.split(/[^0-9]+/)
|
||
|
|
||
|
if (versionParts.length != 4 && versionParts.length != 5)
|
||
|
throw new RuntimeException("Unexpected version number - should be of formatted as 'v1.2.3' or 'v1.2.3-alpha.4', but was: $System.env.GIT_TAG")
|
||
|
|
||
|
versionParts = versionParts.drop(1).collect { Integer.parseInt(it) }
|
||
|
int alphaPart = versionParts.size() == 4 ? versionParts[3] : 99;
|
||
|
|
||
|
if (versionParts[1] > 99 || versionParts[2] > 99 || alphaPart > 99)
|
||
|
throw new RuntimeException('Version part greater than 99 not allowed.')
|
||
|
|
||
|
versionCode = (100 * 100 * 100 * versionParts[0]) + (100 * 100 * versionParts[1]) + (100 * versionParts[2]) + alphaPart
|
||
|
if (versionCode > 2100000000 / 10)
|
||
|
throw new RuntimeException('versionCode bigger than max allowed by Google Play.')
|
||
|
}
|
||
|
|
||
|
return versionCode
|
||
|
}
|
||
|
|
||
|
def getVersionName = {
|
||
|
System.env.GIT_TAG ?: 'SNAPSHOT'
|
||
|
}
|
||
|
|
||
|
android {
|
||
|
compileSdkVersion 30
|
||
|
buildToolsVersion '30.0.3'
|
||
|
packagingOptions {
|
||
|
resources {
|
||
|
excludes += ['META-INF/LICENSE', 'META-INF/NOTICE']
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
defaultConfig {
|
||
|
minSdkVersion 16
|
||
|
targetSdkVersion 29 // 30+ causes instrumentation tests to fail when uninstalling the app from the device
|
||
|
|
||
|
versionCode getVersionCode()
|
||
|
versionName getVersionName()
|
||
|
archivesBaseName = "${project.name}-${versionName}"
|
||
|
|
||
|
testInstrumentationRunner 'medic.gateway.alert.test.WakingJUnitRunner'
|
||
|
|
||
|
multiDexEnabled true
|
||
|
}
|
||
|
|
||
|
compileOptions {
|
||
|
sourceCompatibility JavaVersion.VERSION_11
|
||
|
targetCompatibility JavaVersion.VERSION_11
|
||
|
// Flag to enable support for the new language APIs
|
||
|
coreLibraryDesugaringEnabled true
|
||
|
}
|
||
|
|
||
|
applicationVariants.all {
|
||
|
buildConfigField "String", "LOG_TAG", '"CHTGateway"'
|
||
|
buildConfigField "boolean", "DISABLE_APP_URL_VALIDATION", "Boolean.parseBoolean(\"${System.env.DISABLE_APP_URL_VALIDATION}\")"
|
||
|
|
||
|
buildConfigField "boolean", "CI", "Boolean.parseBoolean(\"${System.env.CI}\")"
|
||
|
buildConfigField "boolean", "FORCE_SEED", "Boolean.parseBoolean(\"${System.env.FORCE_SEED}\")"
|
||
|
buildConfigField "boolean", "LOAD_SEED_DATA", "Boolean.parseBoolean(\"${System.env.LOAD_SEED_DATA}\")"
|
||
|
|
||
|
buildConfigField "boolean", "IS_DUMMY_SEND_AVAILABLE", "Boolean.parseBoolean(\"${System.env.ENABLE_DUMMY_SEND_OPTION}\")"
|
||
|
}
|
||
|
|
||
|
sourceSets {
|
||
|
test { java.srcDirs = [ 'src/test/java', 'src/libTest/java' ] }
|
||
|
androidTest { java.srcDirs = [ 'src/androidTest/java', 'src/libTest/java' ] }
|
||
|
}
|
||
|
|
||
|
signingConfigs {
|
||
|
release {
|
||
|
storeFile file(System.env.ANDROID_KEYSTORE_PATH ?: signingConfigs.debug.storeFile)
|
||
|
storePassword System.env.ANDROID_KEYSTORE_PASSWORD ?: signingConfigs.debug.storePassword
|
||
|
keyAlias System.env.ANDROID_KEY_ALIAS ?: signingConfigs.debug.keyAlias
|
||
|
keyPassword System.env.ANDROID_KEY_PASSWORD ?: signingConfigs.debug.keyPassword
|
||
|
}
|
||
|
}
|
||
|
|
||
|
buildTypes {
|
||
|
debug {
|
||
|
testCoverageEnabled = true
|
||
|
}
|
||
|
release {
|
||
|
minifyEnabled true
|
||
|
shrinkResources true
|
||
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'config/proguard.pro'
|
||
|
signingConfig signingConfigs.release
|
||
|
}
|
||
|
}
|
||
|
|
||
|
check {
|
||
|
abortOnError true
|
||
|
}
|
||
|
|
||
|
|
||
|
testOptions {
|
||
|
unitTests.includeAndroidResources true
|
||
|
unitTests.all {
|
||
|
testLogging {
|
||
|
events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
|
||
|
outputs.upToDateWhen { false }
|
||
|
showStandardStreams = true
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
flavorDimensions 'brand'
|
||
|
productFlavors {
|
||
|
generic {
|
||
|
applicationId = 'medic.gateway.alert.generic'
|
||
|
buildConfigField "boolean", "IS_GENERIC_FLAVOUR", "true"
|
||
|
buildConfigField "boolean", "IS_MEDIC_FLAVOUR", "false"
|
||
|
}
|
||
|
medic {
|
||
|
applicationId = 'medic.gateway.alert'
|
||
|
buildConfigField "boolean", "IS_GENERIC_FLAVOUR", "false"
|
||
|
buildConfigField "boolean", "IS_MEDIC_FLAVOUR", "true"
|
||
|
}
|
||
|
}
|
||
|
namespace 'medic.gateway.alert'
|
||
|
lint {
|
||
|
abortOnError false
|
||
|
disable 'UnusedResources', 'GradleDependency', 'JcenterRepositoryObsolete', 'RtlHardcoded'
|
||
|
warningsAsErrors true
|
||
|
xmlReport false
|
||
|
}
|
||
|
buildFeatures {
|
||
|
buildConfig true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
unMock {
|
||
|
keep 'android.net.Uri'
|
||
|
}
|
||
|
|
||
|
//Skip Findbugs
|
||
|
afterEvaluate { project ->
|
||
|
project.tasks.androidFindbugs {
|
||
|
onlyIf {
|
||
|
println 'Skipping...'
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
}
|