import java.util.regex.Matcher import java.util.regex.Pattern apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.firebase-perf' apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'androidx.navigation.safeargs.kotlin' ext.langs = getLanguages() android { compileSdkVersion 30 buildToolsVersion "30.0.2" defaultConfig { applicationId "com.vanced.manager" minSdkVersion 21 targetSdkVersion 30 versionCode 200 versionName "2.0.0 (.nomagiskui)" vectorDrawables.useSupportLibrary true buildConfigField "String[]", "MANAGER_LANGUAGES", "{" + surroundWithQuotes(langs) + "}" buildConfigField "Boolean", "ENABLE_CROWDIN_AUTH", "false" buildConfigField "String", "CROWDIN_HASH", "\"${System.getenv('CROWDIN_HASH')}\"" buildConfigField "String", "CROWDIN_CLIENT_ID", "\"${System.getenv('CROWDIN_CLIENT_ID')}\"" buildConfigField "String", "CROWDIN_CLIENT_SECRET", "\"${System.getenv('CROWDIN_CLIENT_SECRET')}\"" } lintOptions { disable 'MissingTranslation', 'ExtraTranslation' } aaptOptions { noCompress 'apk', '.apk' } applicationVariants.all { variant -> resValue "string", "versionName", versionName } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } buildFeatures { dataBinding true } // To inline the bytecode built with JVM target 1.8 into // bytecode that is being built with JVM target 1.6. (e.g. navArgs) compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } def getLanguages() { List langs = new ArrayList() langs.add("en") Pattern pattern = Pattern.compile("-(\\w+)-") new File("${projectDir}/src/main/res").eachDir { dir -> if (dir.name.startsWith("values-") && !dir.name.contains("v23")) { Matcher matcher = pattern.matcher(dir.name) if (matcher.find()) { if (langs.contains(matcher.group(1))) langs.add(matcher.group(1) + "_${dir.name.substring(dir.name.length() - 2)}") else langs.add(matcher.group(1)) } } } return langs.toArray() } static def surroundWithQuotes(Object[] arr) { String[] dummyArr = arr for (int i = 0; i < arr.length; i++) { dummyArr[i] = "\"" + arr[i] + "\"" } return dummyArr.join(", ") } dependencies { // Kotlin implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" // AndroidX implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.browser:browser:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.core:core-ktx:1.3.2' implementation 'androidx.fragment:fragment-ktx:1.2.5' implementation 'androidx.lifecycle:lifecycle-livedata-core-ktx:2.2.0' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' implementation 'androidx.navigation:navigation-fragment-ktx:2.3.1' implementation 'androidx.navigation:navigation-ui-ktx:2.3.1' implementation 'androidx.preference:preference-ktx:1.1.1' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'com.google.android.material:material:1.3.0-alpha03' // Other // JSON parser implementation 'com.beust:klaxon:5.4' // Crowdin implementation 'com.crowdin.platform:mobile-sdk:1.2.0' // Tips implementation 'com.github.florent37:viewtooltip:1.2.2' // HTTP networking implementation 'com.github.kittinunf.fuel:fuel:2.3.0' implementation 'com.github.kittinunf.fuel:fuel-coroutines:2.2.3' implementation 'com.github.kittinunf.fuel:fuel-json:2.2.3' implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0' // Root permissions implementation 'com.github.topjohnwu.libsu:core:3.0.2' implementation 'com.github.topjohnwu.libsu:io:3.0.2' // Layout implementation 'com.google.android:flexbox:2.0.1' // File downloader implementation 'com.mindorks.android:prdownloader:0.6.0' // Firebase implementation 'com.google.firebase:firebase-analytics-ktx:18.0.0' implementation 'com.google.firebase:firebase-crashlytics:17.2.2' implementation 'com.google.firebase:firebase-messaging:21.0.0' implementation 'com.google.firebase:firebase-perf:19.0.9' }