plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' } android { compileSdkVersion Integer.parseInt("$compileSdkVer") buildToolsVersion "$buildToolsVer" compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } defaultConfig { applicationId "com.v2ray.ang" minSdkVersion 21 targetSdkVersion Integer.parseInt("$targetSdkVer") multiDexEnabled true versionCode 532 versionName "1.8.12" } buildTypes { release { minifyEnabled false zipAlignEnabled false shrinkResources false ndk.abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' } debug { minifyEnabled false zipAlignEnabled false shrinkResources false ndk.abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' } } // flavorDimensions "versions" // // productFlavors { // dev { // applicationIdSuffix = ".dev" // versionNameSuffix = "-dev" // } // pre_release { // applicationIdSuffix = ".pre" // versionNameSuffix = "-pre-release" // } // prod { // } // } sourceSets { main { jniLibs.srcDirs = ['libs'] java.srcDirs += 'src/main/kotlin' } } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8 } splits { abi { enable true reset() include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' //select ABIs to build APKs for universalApk true //generate an additional APK that contains all the ABIs } } // map for the version code project.ext.versionCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4] android.applicationVariants.all { variant -> // assign different version code for each output variant.outputs.each { output -> output.outputFileName = "v2rayNG_" + variant.versionName + "_" + output.getFilter(com.android.build.OutputFile.ABI) + ".apk" output.versionCodeOverride = project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) * 1000000 + android.defaultConfig.versionCode } } buildFeatures { viewBinding true buildConfig true } namespace 'com.v2ray.ang' testNamespace 'com.v2ray.angTest' } dependencies { implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) testImplementation 'junit:junit:4.13.2' // Androidx implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.preference:preference-ktx:1.2.0' implementation 'androidx.recyclerview:recyclerview:1.3.0' implementation 'androidx.fragment:fragment-ktx:1.5.7' implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01' // Androidx ktx implementation 'androidx.activity:activity-ktx:1.7.1' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1' //kotlin implementation "org.jetbrains.kotlin:kotlin-reflect:1.8.0" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4" implementation 'com.tencent:mmkv-static:1.2.15' implementation 'com.google.code.gson:gson:2.10.1' implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' implementation 'com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar' implementation 'com.github.jorgecastilloprz:fabprogresscircle:1.01@aar' implementation 'me.drakeet.support:toastcompat:1.1.0' implementation 'com.blacksquircle.ui:editorkit:2.8.0' implementation 'com.blacksquircle.ui:language-base:2.8.0' implementation 'com.blacksquircle.ui:language-json:2.8.0' implementation 'io.github.g00fy2.quickie:quickie-bundled:1.6.0' implementation 'com.google.zxing:core:3.5.1' def work_version = "2.8.1" implementation "androidx.work:work-runtime-ktx:$work_version" implementation "androidx.work:work-multiprocess:$work_version" }