coding-blocks/CBOnlineApp

View on GitHub
app/build.gradle

Summary

Maintainability
Test Coverage
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

ext {
    ankoVersion = '0.10.6'
    room_version = "2.2.5"
    koin_version = "2.1.5"
    markwon_version = '4.5.1'
    ankoLibs = [
            // commons
            'commons',
            'sdk25', 'appcompat-v7',
            /// coroutines
            'sdk25-coroutines', 'appcompat-v7-coroutines', 'coroutines',
            'design',
    ]
}


def YOUTUBE_KEY = System.getenv('YOUTUBE_KEY') ?: "AIzaSyAqdhonCxTsQ5oQ-tyNaSgDJWjEMo7UaEt4"
def CLIENT_ID = System.getenv('CLIENT_ID') ?: "5633768694"
def REDIRECT_URI = System.getenv('REDIRECT_URI') ?: "app://online.codingblocks.com"
def DEBUG_REDIRECT_URI = System.getenv('REDIRECT_URI') ?: "app://online.codingblocks.xyz"
def OAUTH_URL = System.getenv('OAUTH_URL') ?: "https://account.codingblocks.com/oauth/authorize"
def DISCUSS_URL = System.getenv('DISCUSS_URL') ?: "https://discuss.codingblocks.com/tag/"

// Include signing configs
apply from: './signingconfigs.gradle'

android {
    compileSdkVersion 30
    defaultConfig {
        applicationId "com.codingblocks.cbonlineapp"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 101010101
        // 1 (versioning scheme)
        // 01 (major version)
        // 01 (minor version)
        // 01 (patch version)
        // 00 spare for betas/RCs
        versionName "1.1.1"
        signingConfig signingConfigs.debug
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        manifestPlaceholders = [
                onesignal_app_id               : '01d75aac-5123-4145-b655-ba8d27c5dc13',
                onesignal_google_project_number: 'REMOTE'
        ]
        buildConfigField "String", "YOUTUBE_KEY", '"' + YOUTUBE_KEY + '"'
        buildConfigField "String", "CLIENT_ID", '"' + CLIENT_ID + '"'
        buildConfigField "String", "OAUTH_URL", '"' + OAUTH_URL + '"'
        buildConfigField "String", "REDIRECT_URI", '"' + REDIRECT_URI + '"'
        buildConfigField "String", "DISCUSS_URL", '"' + DISCUSS_URL + '"'

        kapt {
            arguments {
                arg("room.schemaLocation", "$projectDir/schemas".toString())
            }
        }
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath true
            }
        }
    }
    lintOptions {
        abortOnError false
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
            minifyEnabled false
            versionNameSuffix '-debug-version'
            applicationIdSuffix = '.debug'
            buildConfigField "String", "BASE_URL", '"api-online.codingblocks.xyz"'

        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            buildConfigField "String", "BASE_URL", '"online-api.codingblocks.com"'

        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8
    }

    packagingOptions {
        exclude 'META-INF/atomicfu.kotlin_module'
    }
    buildToolsVersion = '29.0.3'
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    // Android Support
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    // Kotlin
    implementation 'androidx.activity:activity-ktx:1.2.0-alpha04'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9-native-mt'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9-native-mt'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.3.9-native-mt'

    implementation 'androidx.browser:browser:1.2.0'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    implementation 'com.google.android.play:core-ktx:1.8.1'
    implementation 'androidx.core:core-ktx:1.3.1'
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
    implementation "android.arch.work:work-runtime-ktx:1.0.1"
    implementation "androidx.fragment:fragment-ktx:1.2.5"
    implementation 'androidx.recyclerview:recyclerview-selection:1.0.0'
    implementation 'com.google.android.gms:play-services-auth:18.1.0'
    implementation 'com.google.android.gms:play-services-auth-api-phone:17.4.0'
    implementation 'androidx.drawerlayout:drawerlayout:1.1.1'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0'
    implementation 'com.google.android.material:material:1.3.0-alpha02'


    // 3rd party libs
    implementation 'es.voghdev.pdfviewpager:library:1.0.3'
    implementation 'com.onesignal:OneSignal:3.15.3'
    implementation 'com.facebook.shimmer:shimmer:0.5.0'
    implementation 'org.ocpsoft.prettytime:prettytime:4.0.5.Final'
    implementation "com.github.skydoves:progressview:1.0.5"
    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
    implementation 'com.razorpay:checkout:1.5.15'
    implementation "io.noties.markwon:core:$markwon_version"
    implementation "io.noties.markwon:ext-tables:$markwon_version"
    implementation "io.noties.markwon:editor:$markwon_version"
    implementation "io.noties.markwon:ext-strikethrough:$markwon_version"
    implementation "io.noties.markwon:html:$markwon_version"
    implementation "io.noties.markwon:linkify:$markwon_version"
    implementation 'com.airbnb.android:lottie:3.4.2'
    implementation 'com.github.bumptech.glide:glide:4.11.0'
    implementation 'androidx.paging:paging-runtime-ktx:2.1.2'
    kapt 'com.github.bumptech.glide:compiler:4.11.0'
    implementation 'com.hbb20:ccp:2.4.0'


    // Image view libraries
    implementation 'de.hdodenhof:circleimageview:3.1.0'
    implementation 'com.caverock:androidsvg-aar:1.4'
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.21'

    //database
    implementation "androidx.room:room-runtime:$room_version"
    implementation "androidx.room:room-ktx:$room_version"
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
    kapt "androidx.room:room-compiler:$room_version"


    //VideoCipher library
    implementation 'com.vdocipher.aegis:vdocipher-android:1.7.0'
    implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:10.0.5'


    // Koin
    implementation "org.koin:koin-android:$koin_version"
    implementation "org.koin:koin-androidx-viewmodel:$koin_version"


    //Routers
    implementation 'com.github.campusappcn.AndRouter:router:1.2.10'
    kapt 'com.github.campusappcn.AndRouter:compiler:1.2.10'

    //Anko
    ankoLibs.each { name ->
        implementation "org.jetbrains.anko:anko-$name:$ankoVersion"
    }
    //Firebase
    implementation 'com.google.firebase:firebase-common-ktx:19.3.1'
    implementation 'com.google.firebase:firebase-core:17.5.0'
    implementation 'com.google.firebase:firebase-messaging:20.2.4'
    implementation 'com.google.firebase:firebase-analytics-ktx:17.5.0'
    implementation 'com.google.firebase:firebase-crashlytics-ktx:17.2.1'
    implementation 'com.google.firebase:firebase-firestore-ktx:21.6.0'
    implementation 'com.google.firebase:firebase-inappmessaging-display:19.1.1'
    implementation 'com.google.guava:guava:27.0.1-android'



    implementation project(':onlineapi')
    implementation files('libs/YouTubeAndroidPlayerApi.jar')

    // Test Dependencies
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test:runner:1.3.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}