Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- apply plugin: 'com.android.application'
- apply plugin: 'kotlin-android'
- apply plugin: 'kotlin-android-extensions'
- apply plugin: 'kotlin-kapt'
- apply plugin: "androidx.navigation.safeargs.kotlin"
- apply plugin: 'jacoco'
- apply plugin: 'org.ajoberstar.grgit'
- // configuration from local properties
- def flag_testCoverageEnabled = true
- def localConfig = project.rootProject.file('local.properties')
- if (localConfig.exists()) {
- Properties properties = new Properties()
- properties.load(localConfig.newDataInputStream())
- flag_testCoverageEnabled = Boolean.parseBoolean(
- properties.getProperty('testCoverageEnabled', "true")
- )
- }
- android {
- compileSdkVersion rootProject.ext.compileSdkVersion
- buildToolsVersion rootProject.ext.buildToolsVersion
- defaultConfig {
- applicationId "vn.teko.android.vnshop"
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode Integer.valueOf(System.env.CIRCLE_BUILD_NUM ?: 00005)
- versionName "0.0.5"
- testInstrumentationRunner "vn.teko.android.vnshop.ShoppingAppTestRunner"
- multiDexEnabled true
- vectorDrawables.useSupportLibrary = true
- javaCompileOptions {
- annotationProcessorOptions {
- includeCompileClasspath true
- }
- }
- }
- flavorDimensions "env"
- productFlavors {
- develop {
- dimension "env"
- buildConfigField("String", "BASE_PRODUCT_LISTING_URL",
- '"https://listing-dev.services.teko.vn/"')
- buildConfigField("String", "BASE_CRM_URL", '"https://test-crm.teko.vn/"')
- buildConfigField("String", "BASE_OM_URL", '"https://orders.dev.svc.teko.com.vn/"')
- buildConfigField("String", "BASE_PPM_URL", '"https://dev-ppm.phongvu.vn/"')
- buildConfigField("String", "BASE_IMAGE_URL", '"http://catalog-dev.phongvu.vn:8882"')
- buildConfigField("String", "BASE_IAM_URL", '"https://dev-id.teko.vn/"')
- buildConfigField("String", "BASE_AUTH_URL", '"vn.teko.auth.android.demo:/authorize"')
- buildConfigField("String", "BASE_LOCATION_URL", '"https://extra-api-dev.tekshop.vn/"')
- buildConfigField("String", "BASE_USER_SERVICE_URL", '"http://user-dev.vnshop.vn/"')
- buildConfigField("String", "IAM_CLIENT_ID", '"d3de462c99f14daca0b6f13556618577"')
- buildConfigField("String", "APP_CENTER_SECRET_KEY", '"241bb4bb-5920-4f96-a850-f42cccbd5391"')
- buildConfigField("String", "PREF_NAME", '"vnshop_pref_dev"')
- buildConfigField("String", "DB_NAME", '"vnshop_db_dev"')
- buildConfigField("String", "GOOGLE_API_KEY", '"AIzaSyCKKUq4ilWKozNHVFC4kIP7KFfi5kSFbpw"')
- buildConfigField("String", "TRACKING_CLIENT_ID", '"consumer-android-v1"')
- buildConfigField("String", "DEFAULT_CHANNEL", '"vnshop_online"')
- buildConfigField("String", "DEFAULT_TERMINAL", '"vnshop_app"')
- buildConfigField("Integer", "TEST_ARGUMENT_LEVEL", '2')
- buildConfigField("String", "GIT_BRANCH", '\"' + grgit.branch.current.name + '\"')
- buildConfigField("String", "IS_CI", '\"' + System.getenv('IS_CI') + '\"')
- manifestPlaceholders = [
- "appAuthRedirectScheme": "vn.teko.auth.android.demo"
- ]
- }
- staging {
- dimension "env"
- buildConfigField("String", "BASE_PRODUCT_LISTING_URL",
- '"https://listing-stg.services.teko.vn/"')
- buildConfigField("String", "BASE_CRM_URL", '"https://test-crm.teko.vn/"')
- buildConfigField("String", "BASE_OM_URL", '"https://orders.stage.svc.teko.com.vn/"')
- buildConfigField("String", "BASE_PPM_URL", '"https://ppm-stg.services.teko.vn/"')
- buildConfigField("String", "BASE_IMAGE_URL", '"http://catalog-stg.phongvu.vn:8882"')
- // rieng thang nay chi co dev va live
- buildConfigField("String", "BASE_IAM_URL", '"https://dev-id.teko.vn/"')
- buildConfigField("String", "BASE_AUTH_URL", '"vn.teko.auth.android.demo:/authorize"')
- buildConfigField("String", "BASE_LOCATION_URL", '"https://extra-api-dev.tekshop.vn/"')
- buildConfigField("String", "BASE_USER_SERVICE_URL", '"http://user-dev.vnshop.vn/"')
- buildConfigField("String", "IAM_CLIENT_ID", '"d3de462c99f14daca0b6f13556618577"')
- buildConfigField("String", "APP_CENTER_SECRET_KEY", '"241bb4bb-5920-4f96-a850-f42cccbd5391"')
- buildConfigField("String", "PREF_NAME", '"vnshop_pref_stg"')
- buildConfigField("String", "DB_NAME", '"vnshop_db_stg"')
- buildConfigField("String", "GOOGLE_API_KEY", '"AIzaSyCKKUq4ilWKozNHVFC4kIP7KFfi5kSFbpw"')
- buildConfigField("String", "TRACKING_CLIENT_ID", '"consumer-android-v1"')
- buildConfigField("String", "DEFAULT_CHANNEL", '"vnshop_online"')
- buildConfigField("String", "DEFAULT_TERMINAL", '"vnshop_app"')
- buildConfigField("Integer", "TEST_ARGUMENT_LEVEL", '2')
- buildConfigField("String", "GIT_BRANCH", '\"' + grgit.branch.current.name + '\"')
- buildConfigField("String", "IS_CI", '\"' + System.getenv('IS_CI') + '\"')
- manifestPlaceholders = [
- "appAuthRedirectScheme": "vn.teko.auth.android.demo"
- ]
- }
- production {
- // tam thoi de giong stg, live env se config sau
- // dimension "env"
- // buildConfigField("String", "BASE_PRODUCT_LISTING_URL",
- // '"https://listing-stg.services.teko.vn/"')
- // buildConfigField("String", "BASE_CRM_URL", '"https://test-crm.teko.vn/"')
- // buildConfigField("String", "BASE_OM_URL", '"https://orders.stage.svc.teko.com.vn/"')
- // buildConfigField("String", "BASE_PPM_URL", '"https://ppm-stg.services.teko.vn/"')
- // buildConfigField("String", "BASE_IMAGE_URL", '"https://img.vnshop.vn"')
- // buildConfigField("String", "BASE_IAM_URL", '"https://id.teko.vn/"')
- // buildConfigField("String", "BASE_AUTH_URL", '"vnshop.android:/authorize"')
- // buildConfigField("String", "BASE_LOCATION_URL", '"https://extra-api-dev.tekshop.vn/"')
- // buildConfigField("String", "BASE_USER_SERVICE_URL", '"http://user-dev.vnshop.vn/"')
- // buildConfigField("String", "IAM_CLIENT_ID", '"68bde24ce62246899251409542e9bdea"')
- // buildConfigField("String", "APP_CENTER_SECRET_KEY", '""')
- // buildConfigField("String", "PREF_NAME", '"vnshop_pref"')
- // buildConfigField("String", "DB_NAME", '"vnshop_db"')
- // buildConfigField("String", "GOOGLE_API_KEY", '"AIzaSyCKKUq4ilWKozNHVFC4kIP7KFfi5kSFbpw"')
- // buildConfigField("String", "TRACKING_CLIENT_ID", '"94b46a06-cf95-11e9-bb65-2a2ae2dbcce4"')
- // buildConfigField("String", "DEFAULT_CHANNEL", '"vnshop_online"')
- // buildConfigField("String", "DEFAULT_TERMINAL", '"vnshop_app"')
- // buildConfigField("String", "GIT_BRANCH", '\"' + grgit.branch.current.name + '\"')
- // buildConfigField("String", "IS_CI", '\"' + System.getenv('IS_CI') + '\"')
- // manifestPlaceholders = [
- // "appAuthRedirectScheme": "vnshop.android"
- // ]
- dimension "env"
- buildConfigField("String", "BASE_PRODUCT_LISTING_URL",
- '"https://listing-stg.services.teko.vn/"')
- buildConfigField("String", "BASE_CRM_URL", '"https://test-crm.teko.vn/"')
- buildConfigField("String", "BASE_OM_URL", '"https://orders.stage.svc.teko.com.vn/"')
- buildConfigField("String", "BASE_PPM_URL", '"https://ppm-stg.services.teko.vn/"')
- buildConfigField("String", "BASE_IMAGE_URL", '"http://catalog-stg.phongvu.vn:8882"')
- // rieng thang nay chi co dev va live
- buildConfigField("String", "BASE_IAM_URL", '"https://dev-id.teko.vn/"')
- buildConfigField("String", "BASE_AUTH_URL", '"vn.teko.auth.android.demo:/authorize"')
- buildConfigField("String", "BASE_LOCATION_URL", '"https://extra-api-dev.tekshop.vn/"')
- buildConfigField("String", "BASE_USER_SERVICE_URL", '"http://user-dev.vnshop.vn/"')
- buildConfigField("String", "IAM_CLIENT_ID", '"d3de462c99f14daca0b6f13556618577"')
- buildConfigField("String", "APP_CENTER_SECRET_KEY", '"241bb4bb-5920-4f96-a850-f42cccbd5391"')
- buildConfigField("String", "PREF_NAME", '"vnshop_pref_stg"')
- buildConfigField("String", "DB_NAME", '"vnshop_db_stg"')
- buildConfigField("String", "GOOGLE_API_KEY", '"AIzaSyCKKUq4ilWKozNHVFC4kIP7KFfi5kSFbpw"')
- buildConfigField("String", "TRACKING_CLIENT_ID", '"consumer-android-v1"')
- buildConfigField("String", "DEFAULT_CHANNEL", '"vnshop_online"')
- buildConfigField("String", "DEFAULT_TERMINAL", '"vnshop_app"')
- buildConfigField("Integer", "TEST_ARGUMENT_LEVEL", '2')
- buildConfigField("String", "GIT_BRANCH", '\"' + grgit.branch.current.name + '\"')
- buildConfigField("String", "IS_CI", '\"' + System.getenv('IS_CI') + '\"')
- manifestPlaceholders = [
- "appAuthRedirectScheme": "vn.teko.auth.android.demo"
- ]
- }
- }
- signingConfigs {
- release
- }
- buildTypes {
- debug {
- minifyEnabled false
- testCoverageEnabled flag_testCoverageEnabled
- }
- release {
- debuggable false
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- signingConfig signingConfigs.release
- }
- }
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
- kotlinOptions {
- jvmTarget = "1.8"
- }
- dataBinding {
- enabled = true
- }
- androidExtensions {
- experimental = true
- }
- testOptions {
- unitTests {
- all {
- jacoco {
- includeNoLocationClasses = true
- }
- }
- includeAndroidResources = true
- }
- }
- sourceSets {
- String sharedTestDir = 'src/sharedTest/java'
- test {
- resources.srcDirs += ["src/sharedTestResources"]
- java.srcDir sharedTestDir
- }
- androidTest {
- assets.srcDirs += ["src/sharedTestResources"]
- java.srcDir sharedTestDir
- }
- }
- }
- dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'], exclude: ['jira-test-*.jar'])
- // kotlin
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- // kodein
- implementation "org.kodein.di:kodein-di-erased:${rootProject.kodeinVersion}"
- // multidex
- implementation "androidx.multidex:multidex:${rootProject.multidexVersion}"
- // android support libraries
- implementation "androidx.core:core-ktx:$rootProject.ktxVersion"
- implementation "androidx.appcompat:appcompat:$rootProject.appcompatVersion"
- implementation "androidx.appcompat:appcompat-resources:$rootProject.appcompatVersion"
- implementation "androidx.fragment:fragment-ktx:$rootProject.fragmentVersion"
- // google play services
- implementation "com.google.android.gms:play-services-location:$googlePlayServicesVersion"
- implementation "com.google.android.libraries.places:places:$rootProject.googlePlaceVersion"
- implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$rootProject.kotlinCoroutinesVersion"
- // constraint layout
- implementation "androidx.constraintlayout:constraintlayout:$rootProject.constraintlayoutVersion"
- // material components
- implementation "com.google.android.material:material:$rootProject.materialVersion"
- implementation "com.google.android:flexbox:$rootProject.flexboxVersion"
- // swipe refresh layout
- implementation "androidx.swiperefreshlayout:swiperefreshlayout:$rootProject.swiperefreshlayoutVersion"
- // lifecycle
- implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.lifecycleVersion"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$rootProject.lifecycleVersion"
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:$rootProject.lifecycleVersion"
- implementation "androidx.lifecycle:lifecycle-runtime-ktx:$rootProject.lifecycleVersion"
- implementation "androidx.lifecycle:lifecycle-common-java8:$rootProject.lifecycleVersion"
- // paging
- implementation "androidx.paging:paging-runtime-ktx:$rootProject.pagingVersion"
- // navigation
- implementation "androidx.navigation:navigation-fragment-ktx:$rootProject.navigationVersion"
- implementation "androidx.navigation:navigation-ui-ktx:$rootProject.navigationVersion"
- // db
- implementation "androidx.room:room-runtime:$rootProject.roomVersion"
- implementation "androidx.room:room-ktx:$rootProject.roomVersion"
- kapt "androidx.room:room-compiler:$rootProject.roomVersion"
- // dependency injection
- implementation "com.google.dagger:dagger:$rootProject.dagger2Version"
- implementation "com.google.dagger:dagger-android-support:$rootProject.dagger2Version"
- kapt "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
- kapt "com.google.dagger:dagger-android-processor:$rootProject.dagger2Version"
- // kotlin coroutines
- implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.kotlinCoroutinesVersion"
- implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.kotlinCoroutinesVersion"
- implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$rootProject.kotlinCoroutinesVersion"
- // networking
- implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
- implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion"
- implementation "com.squareup.okhttp3:okhttp:$rootProject.okhttp3Version"
- implementation "com.squareup.okhttp3:logging-interceptor:$rootProject.okhttp3Version"
- // json parser
- implementation "com.google.code.gson:gson:$rootProject.gsonVersion"
- // logger
- implementation "com.jakewharton.timber:timber:$rootProject.timberVersion"
- // material slider
- implementation "com.appyvet:materialrangebar:$rootProject.materialRangebarVersion"
- // image loader
- implementation "com.github.bumptech.glide:glide:$rootProject.glideVersion"
- kapt "com.github.bumptech.glide:compiler:$rootProject.glideVersion"
- // leak detection
- debugImplementation "com.squareup.leakcanary:leakcanary-android:$rootProject.leakCanaryVersion"
- // debug database
- debugImplementation "com.amitshekhar.android:debug-db:$rootProject.debugDBVersion"
- // for fragment testing
- debugImplementation "androidx.fragment:fragment-testing:$rootProject.fragmentVersion"
- // app center
- implementation "com.microsoft.appcenter:appcenter-analytics:$rootProject.appCenterVersion"
- implementation "com.microsoft.appcenter:appcenter-crashes:$rootProject.appCenterVersion"
- implementation "net.openid:appauth:$rootProject.appAuthVersion"
- // unit testing
- testImplementation fileTree(dir: 'libs', include: ['*.jar'])
- testImplementation "androidx.test:runner:$rootProject.androidJunitVersion"
- testImplementation "androidx.test:core:$rootProject.androidJunitVersion"
- testImplementation "androidx.test.ext:junit:$rootProject.androidJunitVersion"
- testImplementation "androidx.test.ext:truth:$rootProject.truthVersion"
- testImplementation "androidx.test.espresso:espresso-core:$rootProject.espressoVersion"
- testImplementation "androidx.test.espresso:espresso-intents:$rootProject.espressoVersion"
- testImplementation "androidx.test.espresso:espresso-contrib:$rootProject.espressoVersion"
- testImplementation "com.squareup.okhttp3:mockwebserver:$rootProject.okhttp3Version"
- testImplementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
- testImplementation "androidx.arch.core:core-testing:$rootProject.archTestingVersion"
- testImplementation "org.mockito:mockito-core:$rootProject.mockitoVersion"
- testImplementation "org.mockito:mockito-inline:$rootProject.mockitoVersion"
- testImplementation "org.robolectric:robolectric:$rootProject.robolectricVersion"
- testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$rootProject.kotlinCoroutinesVersion"
- kaptTest "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
- kaptTest "com.google.dagger:dagger-android-processor:$rootProject.dagger2Version"
- // ui testing
- androidTestImplementation fileTree(dir: 'libs', include: ['*.jar'])
- androidTestImplementation "androidx.test:runner:$rootProject.androidJunitVersion"
- androidTestImplementation "androidx.test:core:$rootProject.androidJunitVersion"
- androidTestImplementation "androidx.test.ext:junit:$rootProject.androidJunitVersion"
- androidTestImplementation "androidx.test.ext:truth:$rootProject.truthVersion"
- androidTestImplementation "androidx.test.espresso:espresso-core:$rootProject.espressoVersion"
- androidTestImplementation "androidx.test.espresso:espresso-intents:$rootProject.espressoVersion"
- androidTestImplementation "androidx.test.espresso:espresso-contrib:$rootProject.espressoVersion"
- androidTestImplementation "com.squareup.okhttp3:mockwebserver:$rootProject.okhttp3Version"
- androidTestImplementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
- androidTestImplementation "org.mockito:mockito-android:$rootProject.mockitoVersion"
- kaptAndroidTest "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
- kaptAndroidTest "com.google.dagger:dagger-android-processor:$rootProject.dagger2Version"
- //PhotoView
- implementation "com.github.chrisbanes:PhotoView:$rootProject.photoViewVersion"
- implementation "com.google.firebase:firebase-database-ktx:$rootProject.firebaseDatabaseVersion"
- implementation project(path: ':roundedbgtextview')
- }
- def props = new Properties()
- def propFile = file('../buildsystem/signing.properties')
- if (propFile.canRead()) {
- props.load(new FileInputStream(propFile))
- if (props != null
- && props.containsKey('STORE_FILE')
- && props.containsKey('STORE_PASSWORD')
- && props.containsKey('KEY_ALIAS')
- && props.containsKey('KEY_PASSWORD')) {
- android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
- android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
- android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
- android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
- } else {
- android.buildTypes.release.signingConfig = null
- }
- } else {
- android.buildTypes.release.signingConfig = null
- }
- jacoco {
- toolVersion '0.8.4'
- }
- task jacocoTestReport(type: JacocoReport) {
- reports {
- xml.enabled = true
- html.enabled = true
- }
- def fileFilter = ['**/*Test*.*',
- '**/AutoValue_*.*',
- '**/*JavascriptBridge.class',
- '**/R.class',
- '**/R$*.class',
- '**/Manifest*.*',
- 'android/**/*.*',
- '**/BuildConfig.*',
- '**/*$ViewBinder*.*',
- '**/*$ViewInjector*.*',
- '**/Lambda$*.class',
- '**/Lambda.class',
- '**/*Lambda.class',
- '**/*Lambda*.class',
- '**/*$InjectAdapter.class',
- '**/*$ModuleAdapter.class',
- '**/*$ViewInjector*.class',
- '**/*_MembersInjector.class', //Dagger2 generated code
- '*/*_MembersInjector*.*', //Dagger2 generated code
- '**/*_*Factory*.*', //Dagger2 generated code
- '*/*Component*.*', //Dagger2 generated code
- '**/*Args*.*',
- '**/*Directions*.**',
- '**/*Lazy*.**',
- ]
- //Dagger2 generated code
- def debugTree = fileTree(dir: "${buildDir}/tmp/kotlin-classes/developDebug", excludes: fileFilter)
- def mainSrc = "${project.projectDir}/src/main/java"
- sourceDirectories.from = files([mainSrc])
- classDirectories.from = files([debugTree])
- executionData.from = fileTree(dir: project.buildDir, includes: [
- 'jacoco/testDevelopDebugUnitTest.exec',
- 'outputs/code_coverage/developDebugAndroidTest/connected/*.ec'
- ])
- }
- import vn.teko.testmanagement.model.TestRunHelper
- gradle.taskGraph.afterTask { task ->
- if (task instanceof AbstractTestTask && task.name.contains("UnitTest")
- && grgit.branch.current.name != "develop" && grgit.branch.current.name != "master") {
- TestRunHelper.processResult(projectDir.absolutePath)
- }
- }
- apply plugin: 'com.google.gms.google-services'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement