apply plugin: 'com.android.application' apply plugin: 'kotlin-android' //apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' apply plugin: 'realm-android' // Crashlytics apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' // Serialization apply plugin: "kotlinx-serialization" repositories { maven { url 'https://jitpack.io' } // required for MPAndroidChart jcenter() // for kotlin serialization } android { compileSdkVersion 35 buildToolsVersion "30.0.3" compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8 } defaultConfig { applicationId "net.pokeranalytics.android" minSdkVersion 23 targetSdkVersion 35 versionCode 180 versionName "6.0.38" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { debug { ext.enableCrashlytics = false firebaseCrashlytics { mappingFileUploadEnabled false // should help speed up build times: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?hl=en&platform=android } } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' applicationVariants.all { variant -> variant.outputs.all { output -> def date = new Date() def formattedDate = date.format('yyMMdd_HHmm') def appName = "PokerAnalytics" def buildType = variant.buildType.name def newName if (buildType == 'debug'){ newName = "${appName}_${defaultConfig.versionName}(${defaultConfig.versionCode})_${formattedDate}_debug.apk" } else { newName = "${appName}_${defaultConfig.versionName}(${defaultConfig.versionCode})_${formattedDate}_release.apk" } outputFileName = newName } } } } flavorDimensions 'endOfUse' productFlavors { // already used: 50000, 51000, 52000, 52130, 52110, 52120 standard { dimension = 'endOfUse' } // oct2021 { // dimension = 'endOfUse' // versionNameSuffix = '_oct2021' // versionCode = 52120 + android.defaultConfig.versionCode // } } configurations { release { all*.exclude group: 'com.google.guava', module: 'listenablefuture' } } buildFeatures { viewBinding true } namespace 'net.pokeranalytics.android' lint { disable 'MissingTranslation' } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // Kotlin implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.6' implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.6" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" // implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0") // JVM dependency implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1" // Android implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.core:core-ktx:1.3.1' implementation 'com.google.android.material:material:1.3.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.work:work-runtime-ktx:2.7.1' // implementation 'com.google.android.play:core-ktx:1.8.1' // In-app Reviews implementation 'com.google.android.play:review:2.0.1' implementation 'com.google.android.play:review-ktx:2.0.1' // Places implementation 'com.google.android.libraries.places:places:2.3.0' // Billing / Subscriptions implementation 'com.android.billingclient:billing:7.0.0' // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.1.0') // Declare the dependencies for the Crashlytics and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-crashlytics-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' // Logs implementation 'com.jakewharton.timber:timber:4.7.1' // MPAndroidChart implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' // CSV Parser: https://mvnrepository.com/artifact/org.apache.commons/commons-csv implementation 'org.apache.commons:commons-csv:1.7' // Polynomial Regression implementation 'org.apache.commons:commons-math3:3.6.1' // ffmpeg for encoding video (HH export) // implementation 'com.arthenica:ffmpeg-kit-min-gpl:4.4.LTS' // Camera def camerax_version = "1.1.0" implementation "androidx.camera:camera-core:${camerax_version}" implementation "androidx.camera:camera-camera2:${camerax_version}" implementation "androidx.camera:camera-lifecycle:${camerax_version}" implementation "androidx.camera:camera-video:${camerax_version}" implementation "androidx.camera:camera-view:${camerax_version}" implementation "androidx.camera:camera-extensions:${camerax_version}" // Image picking and registerForActivityResult implementation 'androidx.activity:activity-ktx:1.6.1' implementation "androidx.fragment:fragment-ktx:1.4.1" // Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' // Volley implementation 'com.android.volley:volley:1.2.1' // Instrumented Tests androidTestImplementation 'androidx.test:core:1.6.1' androidTestImplementation 'androidx.test:runner:1.6.2' androidTestImplementation 'androidx.test:rules:1.6.1' androidTestImplementation 'androidx.test.ext:junit:1.2.1' // Test testImplementation 'junit:junit:4.13.2' testImplementation 'com.android.support.test:runner:1.0.2' testImplementation 'com.android.support.test:rules:1.0.2' // gross, somehow needed to make the stop notif work implementation 'com.google.guava:guava:27.0.1-android' }