108 lines
3.5 KiB
Groovy
108 lines
3.5 KiB
Groovy
import org.apache.tools.ant.filters.FixCrLfFilter
|
|
|
|
import java.nio.file.Paths
|
|
import java.nio.file.Files
|
|
|
|
apply plugin: 'com.android.library'
|
|
apply from: file(rootProject.file('module.gradle'))
|
|
|
|
android {
|
|
compileSdkVersion rootProject.ext.targetSdkVersion
|
|
ndkVersion '25.2.9519653'
|
|
defaultConfig {
|
|
minSdkVersion rootProject.ext.minSdkVersion
|
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
|
externalNativeBuild {
|
|
cmake {
|
|
arguments "-DMODULE_NAME:STRING=$moduleLibraryName"
|
|
}
|
|
}
|
|
}
|
|
buildFeatures {
|
|
prefab true
|
|
}
|
|
externalNativeBuild {
|
|
cmake {
|
|
path "src/main/cpp/CMakeLists.txt"
|
|
version "3.22.1"
|
|
}
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
}
|
|
|
|
afterEvaluate {
|
|
android.libraryVariants.forEach { variant ->
|
|
def variantCapped = variant.name.capitalize()
|
|
def variantLowered = variant.name.toLowerCase()
|
|
|
|
def zipName = "${magiskModuleId.replace('_', '-')}-${moduleVersion}-${variantLowered}.zip"
|
|
def magiskDir = file("$outDir/magisk_module_$variantLowered")
|
|
|
|
task("prepareMagiskFiles${variantCapped}", type: Sync) {
|
|
dependsOn("assemble$variantCapped")
|
|
|
|
def templatePath = "$rootDir/template/magisk_module"
|
|
|
|
into magiskDir
|
|
from(templatePath) {
|
|
exclude 'module.prop'
|
|
}
|
|
from(templatePath) {
|
|
include 'module.prop'
|
|
expand([
|
|
id : magiskModuleId,
|
|
name : moduleName,
|
|
version : moduleVersion,
|
|
versionCode: moduleVersionCode.toString(),
|
|
author : moduleAuthor,
|
|
description: moduleDescription,
|
|
])
|
|
filter(FixCrLfFilter.class,
|
|
eol: FixCrLfFilter.CrLf.newInstance("lf"))
|
|
}
|
|
from("$buildDir/intermediates/stripped_native_libs/$variantLowered/out/lib") {
|
|
into 'lib'
|
|
}
|
|
doLast {
|
|
file("$magiskDir/zygisk").mkdir()
|
|
fileTree("$magiskDir/lib").visit { f ->
|
|
if (!f.directory) return
|
|
def srcPath = Paths.get("${f.file.absolutePath}/lib${moduleLibraryName}.so")
|
|
def dstPath = Paths.get("$magiskDir/zygisk/${f.path}.so")
|
|
Files.move(srcPath, dstPath)
|
|
}
|
|
new File("$magiskDir/lib").deleteDir()
|
|
}
|
|
}
|
|
|
|
task("zip${variantCapped}", type: Zip) {
|
|
dependsOn("prepareMagiskFiles${variantCapped}")
|
|
from magiskDir
|
|
archiveFileName.set(zipName)
|
|
destinationDirectory.set(outDir)
|
|
}
|
|
|
|
task("push${variantCapped}", type: Exec) {
|
|
dependsOn("zip${variantCapped}")
|
|
workingDir outDir
|
|
commandLine android.adbExecutable, "push", zipName, "/data/local/tmp/"
|
|
}
|
|
|
|
task("flash${variantCapped}", type: Exec) {
|
|
dependsOn("push${variantCapped}")
|
|
commandLine android.adbExecutable, "shell", "su", "-c",
|
|
"magisk --install-module /data/local/tmp/${zipName}"
|
|
}
|
|
|
|
task("flashAndReboot${variantCapped}", type: Exec) {
|
|
dependsOn("flash${variantCapped}")
|
|
commandLine android.adbExecutable, "shell", "reboot"
|
|
}
|
|
|
|
variant.assembleProvider.get().finalizedBy("zip${variantCapped}")
|
|
}
|
|
}
|