plugins { id("com.android.application") } android { namespace = "es.chiteroman.playintegrityfix" compileSdk = 34 ndkVersion = "26.1.10909125" buildToolsVersion = "34.0.0" defaultConfig { applicationId = "es.chiteroman.playintegrityfix" minSdk = 26 targetSdk = 34 versionCode = 1 versionName = "1.0" externalNativeBuild { ndk { jobs = Runtime.getRuntime().availableProcessors() abiFilters += "armeabi-v7a" abiFilters += "arm64-v8a" } } } buildTypes { release { isMinifyEnabled = true isShrinkResources = true proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } externalNativeBuild { ndkBuild { path = file("src/main/cpp/Android.mk") } } } tasks.register("copyFiles") { doLast { val moduleFolder = project.rootDir.resolve("module") val dexFile = project.buildDir.resolve("intermediates/dex/release/minifyReleaseWithR8/classes.dex") val soDir = project.buildDir.resolve("intermediates/stripped_native_libs/release/out/lib") dexFile.copyTo(moduleFolder.resolve("classes.dex"), overwrite = true) soDir.walk().filter { it.isFile && it.extension == "so" }.forEach { soFile -> val abiFolder = soFile.parentFile.name val destination = moduleFolder.resolve("zygisk/$abiFolder.so") soFile.copyTo(destination, overwrite = true) } } } tasks.register("zip") { dependsOn("copyFiles") archiveFileName.set("PlayIntegrityFix.zip") destinationDirectory.set(project.rootDir.resolve("out")) from(project.rootDir.resolve("module")) } afterEvaluate { tasks["assembleRelease"].finalizedBy("copyFiles", "zip") }