AndroidAPS/app/build.gradle

256 lines
8.6 KiB
Groovy
Raw Normal View History

2019-05-16 00:56:00 +02:00
apply plugin: 'com.android.application'
2019-04-10 00:33:05 +02:00
apply plugin: 'kotlin-android'
2020-04-24 12:00:31 +02:00
apply plugin: 'kotlin-kapt'
2021-08-16 13:47:14 +02:00
apply plugin: 'kotlin-allopen'
2019-04-04 17:15:45 +02:00
apply plugin: 'com.google.gms.google-services'
2020-07-28 23:49:21 +02:00
apply plugin: 'com.hiya.jacoco-android'
2020-05-31 10:12:36 +02:00
apply plugin: 'com.google.firebase.crashlytics'
2018-01-13 21:34:38 +01:00
2021-02-18 22:33:14 +01:00
apply from: "${project.rootDir}/gradle/android_dependencies.gradle"
2021-07-09 20:02:22 +02:00
apply from: "${project.rootDir}/gradle/jacoco_global.gradle"
2021-02-18 00:04:44 +01:00
2016-06-24 17:48:11 +02:00
repositories {
2019-04-10 00:33:05 +02:00
mavenCentral()
google()
2016-06-24 17:48:11 +02:00
}
2021-08-16 13:47:14 +02:00
allOpen {
// allows mocking for classes w/o directly opening them for release builds
annotation 'info.nightscout.androidaps.annotations.OpenForTesting'
}
def generateGitBuild = { ->
2019-07-26 23:21:01 +02:00
StringBuilder stringBuilder = new StringBuilder()
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--always'
standardOutput = stdout
}
String commitObject = stdout.toString().trim()
stringBuilder.append(commitObject)
} catch (ignored) {
2016-11-08 22:55:08 +01:00
stringBuilder.append('NoGitSystemAvailable')
}
2018-08-27 20:19:30 +02:00
return stringBuilder.toString()
}
2019-04-11 10:16:52 +02:00
def generateGitRemote = { ->
2019-08-21 11:08:23 +02:00
StringBuilder stringBuilder = new StringBuilder()
2019-04-11 10:16:52 +02:00
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'remote', 'get-url', 'origin'
standardOutput = stdout
}
String commitObject = stdout.toString().trim()
stringBuilder.append(commitObject)
} catch (ignored) {
stringBuilder.append('NoGitSystemAvailable')
}
return stringBuilder.toString()
}
2018-08-27 20:19:30 +02:00
def generateDate = { ->
2019-08-21 11:08:23 +02:00
StringBuilder stringBuilder = new StringBuilder()
2018-05-13 12:32:45 +02:00
stringBuilder.append((new Date()).format('yyyy.MM.dd-HH:mm'))
return stringBuilder.toString()
}
2016-06-04 17:28:05 +02:00
2019-04-16 11:15:40 +02:00
def isMaster = { ->
return !version.contains('-')
}
2020-04-24 12:00:31 +02:00
def gitAvailable = { ->
StringBuilder stringBuilder = new StringBuilder()
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', '--version'
standardOutput = stdout
}
String commitObject = stdout.toString().trim()
stringBuilder.append(commitObject)
} catch (ignored) {
return false // NoGitSystemAvailable
}
return !stringBuilder.toString().isEmpty()
}
2021-01-22 11:34:28 +01:00
def allCommitted = { ->
2019-08-21 11:08:23 +02:00
StringBuilder stringBuilder = new StringBuilder()
2019-04-16 11:15:40 +02:00
try {
def stdout = new ByteArrayOutputStream()
exec {
2019-04-25 20:42:34 +02:00
commandLine 'git', 'status', '-s'
2019-04-16 11:15:40 +02:00
standardOutput = stdout
}
// ignore all changes done in .idea/codeStyles
String cleanedList = stdout.toString().replaceAll(/(?m)^\s*(M|A|D|\?\?)\s*.*?\.idea\/codeStyles\/.*?\s*$/, "")
// ignore all files added to project dir but not staged/known to GIT
cleanedList = cleanedList.replaceAll(/(?m)^\s*(\?\?)\s*.*?\s*$/, "")
stringBuilder.append(cleanedList.trim())
2019-04-16 11:15:40 +02:00
} catch (ignored) {
2019-08-21 11:08:23 +02:00
return false // NoGitSystemAvailable
2019-04-16 11:15:40 +02:00
}
2019-04-25 20:42:34 +02:00
return stringBuilder.toString().isEmpty()
2019-04-16 11:15:40 +02:00
}
2018-04-20 17:27:31 +02:00
tasks.matching { it instanceof Test }.all {
2018-04-11 16:23:35 +02:00
testLogging.events = ["failed", "skipped", "started"]
2021-02-24 09:49:02 +01:00
// testLogging.events = ["failed", "skipped", "started", "standard_out"] use to display stdout in travis
testLogging.exceptionFormat = "full"
}
2016-06-04 17:28:05 +02:00
android {
2020-04-25 21:52:20 +02:00
ndkVersion "21.1.6352462"
2016-06-04 17:28:05 +02:00
defaultConfig {
2017-10-15 02:52:57 +02:00
multiDexEnabled true
2017-06-04 22:37:58 +02:00
versionCode 1500
2021-11-08 17:20:29 +01:00
version "2.8.2.10-dev"
2017-02-23 20:00:33 +01:00
buildConfigField "String", "VERSION", '"' + version + '"'
2018-08-27 20:19:30 +02:00
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
2019-04-16 11:15:40 +02:00
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
2018-08-27 20:19:30 +02:00
buildConfigField "String", "HEAD", '"' + generateGitBuild() + '"'
2021-01-22 11:34:28 +01:00
buildConfigField "String", "COMMITTED", '"' + allCommitted() + '"'
2017-09-13 00:35:03 +02:00
2016-06-04 17:28:05 +02:00
}
2021-02-18 22:33:14 +01:00
2021-02-04 12:43:14 +01:00
flavorDimensions "standard"
2016-07-15 23:53:14 +02:00
productFlavors {
2017-02-10 16:53:39 +01:00
full {
2018-08-07 21:07:43 +02:00
applicationId "info.nightscout.androidaps"
2016-11-26 05:31:23 +01:00
dimension "standard"
2017-02-23 20:00:33 +01:00
resValue "string", "app_name", "AndroidAPS"
versionName version
manifestPlaceholders = [
2019-04-16 11:15:40 +02:00
appIcon : "@mipmap/ic_launcher",
2018-06-14 19:43:16 +02:00
appIconRound: "@mipmap/ic_launcher_round"
]
2016-09-05 09:11:30 +02:00
}
2017-02-23 20:00:33 +01:00
pumpcontrol {
2019-03-22 23:08:13 +01:00
applicationId "info.nightscout.aapspumpcontrol"
2016-11-26 05:31:23 +01:00
dimension "standard"
2019-03-22 23:08:13 +01:00
resValue "string", "app_name", "Pumpcontrol"
versionName version + "-pumpcontrol"
manifestPlaceholders = [
2019-04-16 11:15:40 +02:00
appIcon : "@mipmap/ic_pumpcontrol",
2018-06-14 19:43:16 +02:00
appIconRound: "@null"
]
2016-07-15 23:53:14 +02:00
}
2017-02-23 20:00:33 +01:00
nsclient {
2018-08-07 21:07:43 +02:00
applicationId "info.nightscout.nsclient"
2016-11-26 05:31:23 +01:00
dimension "standard"
2017-02-23 20:00:33 +01:00
resValue "string", "app_name", "NSClient"
versionName version + "-nsclient"
manifestPlaceholders = [
2019-04-16 11:15:40 +02:00
appIcon : "@mipmap/ic_yellowowl",
2018-06-14 19:43:16 +02:00
appIconRound: "@null"
]
2018-08-07 21:07:43 +02:00
}
nsclient2 {
applicationId "info.nightscout.nsclient2"
dimension "standard"
resValue "string", "app_name", "NSClient2"
versionName version + "-nsclient"
manifestPlaceholders = [
2019-04-16 11:15:40 +02:00
appIcon : "@mipmap/ic_yellowowl",
2018-08-07 21:07:43 +02:00
appIconRound: "@null"
]
2016-07-15 23:53:14 +02:00
}
}
2018-02-15 21:00:09 +01:00
2019-04-16 11:15:40 +02:00
useLibrary "org.apache.http.legacy"
2018-04-20 17:27:31 +02:00
}
2016-06-04 17:28:05 +02:00
2017-01-29 13:00:21 +01:00
allprojects {
repositories {
flatDir {
dirs 'libs'
}
}
}
2016-06-04 17:28:05 +02:00
dependencies {
2017-10-12 18:01:10 +02:00
wearApp project(':wear')
2020-05-03 21:27:42 +02:00
implementation project(':core')
2021-02-22 17:22:30 +01:00
implementation project(':automation')
2021-02-21 14:34:31 +01:00
implementation project(':combo')
2021-02-04 18:22:58 +01:00
implementation project(':database')
2020-05-09 20:18:12 +02:00
implementation project(':dana')
2020-05-06 01:27:38 +02:00
implementation project(':danars')
2020-05-10 11:03:19 +02:00
implementation project(':danar')
2021-02-21 18:03:26 +01:00
implementation project(':insight')
implementation project(':pump-common')
implementation project(':rileylink')
implementation project(':medtronic')
2021-02-18 23:31:31 +01:00
implementation project(':omnipod-common')
2021-02-09 19:37:27 +01:00
implementation project(':omnipod-eros')
2021-02-09 21:21:30 +01:00
implementation project(':omnipod-dash')
2021-06-08 23:27:14 +02:00
implementation project(':diaconn')
implementation project(':openhumans')
2020-05-03 21:27:42 +02:00
2018-03-30 21:26:07 +02:00
implementation fileTree(include: ['*.jar'], dir: 'libs')
2020-04-24 12:00:31 +02:00
/* Dagger2 - We are going to use dagger.android which includes
2021-02-18 18:54:01 +01:00
* support for Activity and fragment injection so we need to include
* the following dependencies */
2020-05-04 21:37:03 +02:00
annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version"
kapt "com.google.dagger:dagger-android-processor:$dagger_version"
2020-04-24 12:00:31 +02:00
/* Dagger2 - default dependency */
2020-05-04 21:37:03 +02:00
kapt "com.google.dagger:dagger-compiler:$dagger_version"
2017-07-21 16:49:43 +02:00
}
2021-02-18 18:54:01 +01:00
apply from: "${project.rootDir}/gradle/test_dependencies.gradle"
2020-02-25 21:30:44 +01:00
/*
2020-02-11 17:06:30 +01:00
// Run 'adb' shell command to clear application data of main app for 'debug' variant
task clearMainAppData(type: Exec) {
// we have to iterate to find the 'debug' variant to obtain a variant reference
android.applicationVariants.all { variant ->
if (variant.name == "fullDebug") {
def applicationId = [variant.mergedFlavor.applicationId, variant.buildType.applicationIdSuffix].findAll().join()
def clearDataCommand = ['adb', 'shell', 'pm', 'clear', applicationId]
println "Clearing application data of ${variant.name} variant: [${clearDataCommand}]"
def stdout = new ByteArrayOutputStream()
exec {
commandLine clearDataCommand
standardOutput = stdout
}
String result = stdout.toString().trim()
if (!result.startsWith("Success")) {
println result
throw new GradleException(clearDataCommand.join(" "))
}
}
}
}
// Clear Application Data (once) before running instrumentation test
tasks.whenTaskAdded { task ->
// Both of these targets are equivalent today, although in future connectedCheck
// will also include connectedUiAutomatorTest (not implemented yet)
if(task.name == "connectedAndroidTest" || task.name == "connectedCheck"){
task.dependsOn(clearMainAppData)
}
}
2020-02-25 21:30:44 +01:00
*/
2019-04-16 11:15:40 +02:00
printf('--------------\n')
printf('isMaster: %s\n', isMaster().toString())
2020-04-24 12:00:31 +02:00
printf('gitAvailable: %s\n', gitAvailable().toString())
2021-01-22 11:34:28 +01:00
printf('allCommitted: %s\n', allCommitted().toString())
2019-04-16 11:15:40 +02:00
printf('--------------\n')
2020-04-24 12:00:31 +02:00
if (isMaster() && !gitAvailable()) {
throw new GradleException('GIT system is not available. On Windows try to run Android Studio as an Administrator. Check if GIT is installed and Studio have permissions to use it')
}
2021-01-22 11:34:28 +01:00
if (isMaster() && !allCommitted()) {
2021-05-26 17:04:47 +02:00
throw new GradleException('There are uncommitted changes. Clone sources again as described in wiki and do not allow gradle update')
2019-04-16 11:15:40 +02:00
}