eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott/*
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * The contents of this file are subject to the terms of the Common Development and
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * Distribution License (the License). You may not use this file except in compliance with the
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * License.
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott *
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * specific language governing permission and limitations under the License.
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott *
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * When distributing Covered Software, include this CDDL Header Notice in each file and include
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * Header, with the fields enclosed by brackets [] replaced by your own identifying
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * information: "Portions copyright [year] [name of copyright owner]".
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott *
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott * Copyright 2016 ForgeRock AS.
eaf6de42255b7dab8d5531d29fffc299b3aaddd4Robert Wapshott */
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbingsapply plugin: 'com.android.application'
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings
b20e6d7f9b72b863c867d2f033af1bcf4c53d110Robert Wapshottdef buildNumber = System.getenv('BUILD_NUMBER') ?: "2"
7e792a0c170be02537c2179a4c864a4cbaa2a94fJoe Bandenburg
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg// The keystore.properties holds configuration for the release keystore
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburgdef keystorePropertiesFile = rootProject.file("keystore.properties")
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburgdef keystorePropertiesFileExists = keystorePropertiesFile.exists()
e9ab8230221330177acd6d51d924d4b5ec395807Joe Bandenburgdef keystoreProperties
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburgif (keystorePropertiesFileExists) {
e9ab8230221330177acd6d51d924d4b5ec395807Joe Bandenburg keystoreProperties = new Properties()
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg}
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbingsandroid {
4ae3c3faf53b9b7f0c4e8375d0a3cdf3846ef6c0Ken Stubbings compileSdkVersion 23
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings buildToolsVersion "23.0.2"
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings defaultConfig {
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings applicationId "com.forgerock.authenticator"
79153694f3d5870db134bf807c876eb3940b5f3aRobert Wapshott minSdkVersion 14
4ae3c3faf53b9b7f0c4e8375d0a3cdf3846ef6c0Ken Stubbings targetSdkVersion 23
7e792a0c170be02537c2179a4c864a4cbaa2a94fJoe Bandenburg versionCode buildNumber.toInteger()
4ae3c3faf53b9b7f0c4e8375d0a3cdf3846ef6c0Ken Stubbings versionName "2.0"
76e306183bb8c3935c091a558690edc310edbd70Tom Rumsey testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings }
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg signingConfigs {
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg if (keystorePropertiesFileExists) {
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg release {
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg keyAlias keystoreProperties['keyAlias']
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg keyPassword keystoreProperties['keyPassword']
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg storeFile file(keystoreProperties['storeFile'])
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg storePassword keystoreProperties['storePassword']
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg }
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg }
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg }
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings buildTypes {
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings release {
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings minifyEnabled false
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg if (keystorePropertiesFileExists) {
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg signingConfig signingConfigs.release
5590cb68b5fe53ba04ed0b0e09285a814395b4b7Joe Bandenburg }
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings }
79153694f3d5870db134bf807c876eb3940b5f3aRobert Wapshott debug {
79153694f3d5870db134bf807c876eb3940b5f3aRobert Wapshott debuggable true
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey testCoverageEnabled true
79153694f3d5870db134bf807c876eb3940b5f3aRobert Wapshott }
79153694f3d5870db134bf807c876eb3940b5f3aRobert Wapshott }
79153694f3d5870db134bf807c876eb3940b5f3aRobert Wapshott
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings lintOptions {
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings abortOnError false
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings }
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey // Workaround for compile issue with Robolectric, which should be fixed in 3.1
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey // https://github.com/robolectric/robolectric/issues/1862
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey useLibrary 'org.apache.http.legacy'
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings}
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings
f3fa3b65e8ebafc90b1044cf522ee35213299c42Tom Rumseyrepositories {
f3fa3b65e8ebafc90b1044cf522ee35213299c42Tom Rumsey maven {
f3fa3b65e8ebafc90b1044cf522ee35213299c42Tom Rumsey url 'http://maven.forgerock.org/repo/releases/'
f3fa3b65e8ebafc90b1044cf522ee35213299c42Tom Rumsey }
f3fa3b65e8ebafc90b1044cf522ee35213299c42Tom Rumsey}
f3fa3b65e8ebafc90b1044cf522ee35213299c42Tom Rumsey
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbingsdependencies {
9e257788c96e27128e1ac9f7de72256f0da6b0fdKen Stubbings
76e306183bb8c3935c091a558690edc310edbd70Tom Rumsey androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
76e306183bb8c3935c091a558690edc310edbd70Tom Rumsey exclude module: 'support-annotations'
76e306183bb8c3935c091a558690edc310edbd70Tom Rumsey }
76e306183bb8c3935c091a558690edc310edbd70Tom Rumsey androidTestCompile 'com.squareup.spoon:spoon-client:1.5.0'
76e306183bb8c3935c091a558690edc310edbd70Tom Rumsey androidTestCompile 'com.jraska:falcon-spoon-compat:1.0.1'
76e306183bb8c3935c091a558690edc310edbd70Tom Rumsey
9e257788c96e27128e1ac9f7de72256f0da6b0fdKen Stubbings testCompile 'org.testng:testng:6.8.5'
9e257788c96e27128e1ac9f7de72256f0da6b0fdKen Stubbings testCompile 'org.mockito:mockito-core:1.9.5'
e5376708c3eed4e7bde42fa8d7fb20cf76d47861Tom Rumsey testCompile "org.robolectric:robolectric:3.0"
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey testCompile('uk.org.lidalia:slf4j-test:1.2.0') {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey exclude group: 'org.slf4j'
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey }
c864b6b9d1cf692f7ddba65b2d886dcd9343a00cTom Rumsey testCompile 'com.squareup.okhttp3:mockwebserver:3.3.1'
9e257788c96e27128e1ac9f7de72256f0da6b0fdKen Stubbings
55f1b0b17df3287fab644f68b9418905e26842daRobert Wapshott // Gson for Serialisation
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings compile 'com.google.code.gson:gson:2.6.2'
55f1b0b17df3287fab644f68b9418905e26842daRobert Wapshott // ZXing for QR Code library
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings compile 'com.google.zxing:core:3.2.1'
55f1b0b17df3287fab644f68b9418905e26842daRobert Wapshott // For image management
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings compile 'com.squareup.picasso:picasso:2.5.2'
55f1b0b17df3287fab644f68b9418905e26842daRobert Wapshott // GCM Notifications
4ae3c3faf53b9b7f0c4e8375d0a3cdf3846ef6c0Ken Stubbings compile 'com.google.android.gms:play-services-gcm:8.4.0'
4ae3c3faf53b9b7f0c4e8375d0a3cdf3846ef6c0Ken Stubbings compile 'com.android.support:appcompat-v7:23.2.0'
9e257788c96e27128e1ac9f7de72256f0da6b0fdKen Stubbings compile 'com.android.support:support-v4:23.2.0'
55f1b0b17df3287fab644f68b9418905e26842daRobert Wapshott // Logging framework
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey compile 'org.slf4j:slf4j-api:1.7.18'
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey apk 'org.slf4j:slf4j-android:1.7.18'
d4ba104b978e28c3f9254b390959e08bb8c2122fTom Rumsey // Guice
d4ba104b978e28c3f9254b390959e08bb8c2122fTom Rumsey compile 'org.roboguice:roboguice:3.+'
d4ba104b978e28c3f9254b390959e08bb8c2122fTom Rumsey provided 'org.roboguice:roboblender:3.+'
f3fa3b65e8ebafc90b1044cf522ee35213299c42Tom Rumsey // JWT
f3fa3b65e8ebafc90b1044cf522ee35213299c42Tom Rumsey compile 'org.forgerock.commons:json-web-token:3.0.3'
58301c01ee221a4834ea46ddc0130fe5fc42faceTom Rumsey // Joda Time
58301c01ee221a4834ea46ddc0130fe5fc42faceTom Rumsey compile group: 'joda-time', name: 'joda-time', version: '2.2'
b76e85d5549ba6fc5535ec2a590bad9443bb14d8Ken Stubbings}
4ae3c3faf53b9b7f0c4e8375d0a3cdf3846ef6c0Ken Stubbings
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseyapply plugin: 'jacoco'
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
cf3e1e789e876b017034ac7f3c7f87be7dced857Joe Bandenburgjacoco {
cf3e1e789e876b017034ac7f3c7f87be7dced857Joe Bandenburg toolVersion = "0.7.6.201602180812"
cf3e1e789e876b017034ac7f3c7f87be7dced857Joe Bandenburg}
cf3e1e789e876b017034ac7f3c7f87be7dced857Joe Bandenburg
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumseytask generateCoverage(type: JacocoReport, dependsOn: 'testDebugUnitTest') {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey sourceDirectories = files('src/main/java')
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey classDirectories = fileTree('build/intermediates/classes/debug') {
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey exclude 'android', 'com/google', '**/R$*.class', '**/R.class', '**/BuildConfig.class'
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey }
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey executionData = files('build/jacoco/testDebugUnitTest.exec')
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey}
ef28ad515cc0858ccbfba09e17a844052ed79356Tom Rumsey
4ae3c3faf53b9b7f0c4e8375d0a3cdf3846ef6c0Ken Stubbingsapply plugin: 'com.google.gms.google-services'
76e306183bb8c3935c091a558690edc310edbd70Tom Rumsey
76e306183bb8c3935c091a558690edc310edbd70Tom Rumseyapply plugin: 'spoon'