Advertisement
Guest User

Untitled

a guest
Mar 7th, 2018
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 11.35 KB | None | 0 0
  1. import com.android.build.gradle.api.BaseVariant
  2. import com.android.build.gradle.internal.dsl.ProductFlavor
  3.  
  4. import static Libraries.*
  5. import static NetworkApiConfig.*
  6.  
  7. buildscript {
  8.     ext.KOTLIN_VERSION = '1.2.30'
  9.  
  10.     repositories {
  11.         jcenter()
  12.         mavenCentral()
  13.         maven { url "https://jitpack.io" }
  14.         maven { url 'https://maven.fabric.io/public' }
  15.         google()
  16.     }
  17.  
  18.     dependencies {
  19.         classpath 'com.android.tools.build:gradle:3.0.1'
  20.         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION"
  21.         //noinspection GradleDynamicVersion
  22.         classpath 'io.fabric.tools:gradle:1.+'
  23.         classpath 'com.akaita.android:easylauncher:1.1.0'
  24.     }
  25. }
  26.  
  27. repositories {
  28.     mavenCentral()
  29.     maven { url "https://jitpack.io" }
  30.     maven { url 'https://maven.fabric.io/public' }
  31.     google()
  32. }
  33.  
  34. apply plugin: 'com.android.application'
  35. apply plugin: 'kotlin-android'
  36. apply plugin: 'kotlin-kapt'
  37. apply plugin: 'kotlin-android-extensions'
  38. apply plugin: 'io.fabric'
  39. apply plugin: 'com.akaita.android.easylauncher'
  40.  
  41. class NetworkApiConfig {
  42.     static
  43.     final KIT_TEST_PARTNER_ID = "cf1ef832c94a129ad0e89e7fe9bf139eb8c158f87a5a3d88c4b0ea5fcb524f21"
  44.     static
  45.     final KIT_PROD_PARTNER_ID = "3a57bd0f86fb68f94f446aed1af60275b7723eed6475516129e99e7535fc1346"
  46.     static
  47.     final SI_TEST_PARTNER_ID = "a3f1f7b40cd04bc21573a2c81250d10dc69625ecc6263844f34f8c1865d9b643"
  48.     static
  49.     final SI_PROD_PARTNER_ID = "e2f622bff930e55729eeb7531a1391d2ab9b69ac64ed8e303e1751d65223b7c7"
  50.     static
  51.     final ABSOLUT_RETAIL_PROD_PARTNER_ID = "d65207eee5937bb02d36c797459a75e111f06a0b4e13320fdc895036f980387e"
  52.     static
  53.     final ABSOLUT_RETAIL_TEST_PARTNER_ID = "6a8f2be1d77ddb38c65c41d648a554b3819a516d5535d734524ddef744b19b51"
  54.     static
  55.     final ABSOLUT_VIP_PROD_PARTNER_ID = "e9ad5db2f3e740510e681598cc2fd13a756ed49641de1f5a45b77127b18d318e"
  56.     static
  57.     final ABSOLUT_VIP_TEST_PARTNER_ID = "31ec5c1f4a79fbbfc6b9daa73c92eb4fa550105246f05df34b85f20bb3603ec3"
  58.  
  59.     static final SI_BASE_RELEASE_URL = "https://prod.simple-invest.mobi/api/v1/"
  60.     static final SI_BASE_TEST_URL = "https://test.simple-invest.mobi/api/v1/"
  61.  
  62.     private String apiUrl
  63.     private String partnerId
  64.     private boolean sslTrustAllCertificates
  65.  
  66.     static NetworkApiConfig create(Map params = [sslTrustAllCertificates: true]) {
  67.         new NetworkApiConfig(params)
  68.     }
  69.  
  70.     void apply(BaseVariant variant) {
  71.         variant.buildConfigField "String", "API_BASE_URL", "\"$apiUrl\""
  72.         variant.buildConfigField "String", "PARTNER_ID", "\"$partnerId\""
  73.         variant.buildConfigField "boolean", "SSL_TRUST_ALL_CERTIFICATES", sslTrustAllCertificates.toString()
  74.     }
  75. }
  76.  
  77. class VersionConfig {
  78.     private static final String VERSION_CODE_TEMPLATE = '%d%02d%02d%03d'
  79.  
  80.     private int sdkVersion, majorVersion, minorVersion, buildNumber
  81.  
  82.     static VersionConfig create(Map params) {
  83.         new VersionConfig(params)
  84.     }
  85.  
  86.     void apply(ProductFlavor flavor) {
  87.         flavor.versionName = "$majorVersion.$minorVersion.$buildNumber"
  88.         flavor.versionCode = String.format(VERSION_CODE_TEMPLATE,
  89.                 sdkVersion,
  90.                 majorVersion,
  91.                 minorVersion,
  92.                 buildNumber).toInteger()
  93.     }
  94. }
  95.  
  96. android {
  97.     int sdkVersion = 27
  98.  
  99.     compileSdkVersion sdkVersion
  100.  
  101.     compileOptions {
  102.         sourceCompatibility JavaVersion.VERSION_1_8
  103.         targetCompatibility JavaVersion.VERSION_1_8
  104.     }
  105.  
  106.     defaultConfig {
  107.         minSdkVersion 16
  108.         targetSdkVersion sdkVersion
  109.         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  110.     }
  111.  
  112.     flavorDimensions "default"
  113.  
  114.     buildTypes {
  115.         release {
  116.             debuggable true
  117.             shrinkResources true
  118.             multiDexEnabled true
  119.             useProguard true
  120.             minifyEnabled true
  121.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  122.         }
  123.  
  124.         beta {
  125.             initWith debug
  126.             multiDexEnabled true
  127.             applicationIdSuffix '.beta'
  128.             versionNameSuffix 'b'
  129.         }
  130.     }
  131.  
  132.     variantFilter { variant ->
  133.         def buildName = variant.buildType.name
  134.         if (buildName == 'debug') {
  135.             setIgnore(true)
  136.         }
  137.     }
  138.  
  139.     applicationVariants.all { variant ->
  140.         variant.outputs.all {
  141.             outputFileName = "${variant.flavorName}-${variant.versionName}.apk"
  142.         }
  143.  
  144.         String url = variant.buildType.name == 'release' ? SI_BASE_RELEASE_URL : SI_BASE_TEST_URL
  145.  
  146.         switch (variant.name) {
  147.             case "KitFinanceRelease":
  148.                 NetworkApiConfig.create(apiUrl: url, partnerId: KIT_PROD_PARTNER_ID).apply(variant)
  149.                 break
  150.             case "KitFinanceBeta":
  151.                 NetworkApiConfig.create(apiUrl: url, partnerId: KIT_TEST_PARTNER_ID).apply(variant)
  152.                 break
  153.             case "SimpleInvestRelease":
  154.                 NetworkApiConfig.create(apiUrl: url, partnerId: SI_PROD_PARTNER_ID).apply(variant)
  155.                 break
  156.             case "SimpleInvestBeta":
  157.                 NetworkApiConfig.create(apiUrl: url, partnerId: SI_TEST_PARTNER_ID).apply(variant)
  158.                 break
  159.             case "AbsolutBankRelease":
  160.                 NetworkApiConfig.create(apiUrl: url, partnerId: ABSOLUT_VIP_PROD_PARTNER_ID).apply(variant)
  161.                 break
  162.             case "AbsolutBankBeta":
  163.                 NetworkApiConfig.create(apiUrl: url, partnerId: ABSOLUT_VIP_TEST_PARTNER_ID).apply(variant)
  164.                 break
  165.         }
  166.     }
  167.  
  168.     productFlavors {
  169.         KitFinance {
  170.             dimension "default"
  171.             resValue "string", "app_name", "КИТ Финанс"
  172.             VersionConfig.create(sdkVersion: sdkVersion,
  173.                     majorVersion: 1,
  174.                     minorVersion: 0,
  175.                     buildNumber: 2)
  176.                     .apply(it)
  177.             applicationId "ru.brokerkf.android"
  178.             signingConfig signingConfigs.KitFinance
  179.         }
  180.         SimpleInvest {
  181.             dimension "default"
  182.             resValue "string", "app_name", "Simple Invest"
  183.             VersionConfig.create(sdkVersion: sdkVersion,
  184.                     majorVersion: 2,
  185.                     minorVersion: 0,
  186.                     buildNumber: 0)
  187.                     .apply(it)
  188.             applicationId "com.simpleinvest"
  189.             signingConfig signingConfigs.SimpleInvest
  190.         }
  191.         AbsolutBank {
  192.             dimension "default"
  193.             resValue "string", "app_name", "AbsolutBank Invest"
  194.             VersionConfig.create(sdkVersion: sdkVersion,
  195.                     majorVersion: 1,
  196.                     minorVersion: 0,
  197.                     buildNumber: 0)
  198.                     .apply(it)
  199.             applicationId "ru.absolutbank.android"
  200.             signingConfig signingConfigs.KitFinance
  201.         }
  202.     }
  203.  
  204.     dataBinding {
  205.         enabled = true
  206.     }
  207.  
  208.     packagingOptions {
  209.         exclude 'META-INF/LICENSE'
  210.         exclude 'META-INF/NOTICE'
  211.     }
  212.  
  213.     lintOptions {
  214.         disable('InvalidPackage', 'MissingTranslation', 'RtlSymmetry', 'HardcodedText')
  215.     }
  216.  
  217.     dexOptions {
  218.         javaMaxHeapSize "4g"
  219.     }
  220. }
  221.  
  222. easylauncher {
  223.     productFlavors {
  224.         KitFinance {
  225.             filters = overlayFilter(new File("icons/beta_black.png"))
  226.         }
  227.         SimpleInvest {
  228.             filters = overlayFilter(new File("icons/beta_white.png"))
  229.         }
  230.         AbsolutBank {
  231.             filters = overlayFilter(new File("icons/beta_black.png"))
  232.         }
  233.     }
  234.     buildTypes {
  235.         release {
  236.             enable false
  237.         }
  238.     }
  239. }
  240.  
  241. kotlin {
  242.     experimental {
  243.         coroutines "enable"
  244.     }
  245. }
  246.  
  247. enum Libraries {
  248.     SUPPORT_LIBRARY('27.1.0'),
  249.     RETROFIT2('2.3.0'),
  250.     REQUERY('1.5.0'),
  251.     OKHTTP3('3.8.0'),
  252.     DAGGER2('2.11'),
  253.     MOCKITO('2.8.47'),
  254.     LEAK_CANARY('1.5.4'),
  255.     GLIDE('4.4.0')
  256.  
  257.     final String version
  258.  
  259.     Libraries(String version) {
  260.         this.version = version
  261.     }
  262.  
  263.     String toString() {
  264.         return version
  265.     }
  266. }
  267.  
  268. dependencies {
  269.     implementation fileTree(dir: 'libs', include: ['*.jar'])
  270.  
  271.     //android
  272.     implementation "com.android.support:appcompat-v7:$SUPPORT_LIBRARY"
  273.     implementation "com.android.support:support-v13:$SUPPORT_LIBRARY"
  274.     implementation "com.android.support:design:$SUPPORT_LIBRARY"
  275.     implementation "com.android.support:cardview-v7:$SUPPORT_LIBRARY"
  276.     implementation 'com.android.support.constraint:constraint-layout:1.0.2'
  277.     implementation "com.android.support:customtabs:$SUPPORT_LIBRARY"
  278.     kapt "com.android.databinding:compiler:3.0.1"
  279.  
  280.     //tests
  281.     testImplementation 'junit:junit:4.12'
  282.     testImplementation "org.mockito:mockito-inline:$MOCKITO"
  283.     testImplementation "com.squareup.okhttp3:mockwebserver:$OKHTTP3"
  284.     testImplementation 'com.nhaarman:mockito-kotlin-kt1.1:1.5.0', {
  285.         exclude group: 'org.jetbrains.kotlin'
  286.     }
  287.     androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2', {
  288.         exclude group: 'com.android.support', module: 'support-annotations'
  289.     }
  290.  
  291.     //multidex
  292.     implementation 'com.android.support:multidex:1.0.3'
  293.  
  294.     //di
  295.     implementation "com.google.dagger:dagger:$DAGGER2"
  296.     kapt "com.google.dagger:dagger-compiler:$DAGGER2"
  297.  
  298.     //rx
  299.     implementation "io.reactivex.rxjava2:rxjava:2.1.10"
  300.     implementation "io.reactivex.rxjava2:rxandroid:2.0.2"
  301.  
  302.     //network
  303.     implementation "com.squareup.retrofit2:retrofit:$RETROFIT2"
  304.     implementation "com.squareup.retrofit2:converter-gson:$RETROFIT2"
  305.     implementation "com.squareup.retrofit2:adapter-rxjava2:$RETROFIT2"
  306.     implementation "com.squareup.okhttp3:logging-interceptor:$OKHTTP3"
  307.  
  308.     //orm
  309.     implementation "io.requery:requery:$REQUERY"
  310.     implementation "io.requery:requery-android:$REQUERY"
  311.     kapt "io.requery:requery-processor:$REQUERY"
  312.  
  313.     //flow
  314.     implementation 'com.squareup.flow:flow:1.0.0-alpha3'
  315.  
  316.     //crypt
  317.     implementation 'com.madgag.spongycastle:pkix:1.54.0.0'
  318.  
  319.     //kotlin
  320.     implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$KOTLIN_VERSION"
  321.     implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'
  322.     implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:0.22.5"
  323.     implementation "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:0.22.5"
  324.  
  325.     //custom views
  326.     implementation 'me.relex:circleindicator:1.2.2@aar'
  327.     implementation 'net.cachapa.expandablelayout:expandablelayout:2.9.2'
  328.     implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'
  329.     implementation 'com.redmadrobot:inputmask:2.3.0'
  330.     implementation 'com.github.chrisbanes:PhotoView:2.1.3'
  331.     implementation 'com.aurelhubert:ahbottomnavigation:2.2.0'
  332.     implementation "ru.tinkoff.scrollingpagerindicator:scrollingpagerindicator:1.0.3"
  333.     implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
  334.  
  335.     //glide
  336.     implementation "com.github.bumptech.glide:glide:$GLIDE"
  337.     implementation "com.github.bumptech.glide:okhttp3-integration:$GLIDE"
  338.     kapt "com.github.bumptech.glide:compiler:$GLIDE"
  339.  
  340.     //util
  341.     implementation "org.jetbrains.anko:anko:0.10.1"
  342.     implementation('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') { transitive = true }
  343.     implementation('io.branch.sdk.android:library:2.11.0') { exclude module: 'answers-shim' }
  344. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement