171 lines
5.5 KiB
Groovy
171 lines
5.5 KiB
Groovy
import org.apache.tools.ant.taskdefs.condition.Os
|
|
|
|
import java.util.zip.ZipEntry
|
|
import java.util.zip.ZipFile
|
|
import java.util.zip.ZipInputStream
|
|
|
|
plugins {
|
|
id 'com.android.application'
|
|
id 'net.nemerosa.versioning' version '2.15.1'
|
|
}
|
|
|
|
def smaliFolder = projectDir.toPath().resolve("../smali").normalize()
|
|
def scriptsFolder = projectDir.toPath().resolve("../scripts").normalize()
|
|
|
|
versionFile {
|
|
file = projectDir.toPath().resolve("src/main/assets/version.properties").toFile()
|
|
}
|
|
|
|
task cleanVersionFile {
|
|
projectDir.toPath().resolve("src/main/assets/version.properties").toFile().delete()
|
|
}
|
|
|
|
task exportDex {
|
|
doLast {
|
|
try {
|
|
File moduleDir = projectDir
|
|
ZipInputStream inputStream = new ZipInputStream(new FileInputStream(moduleDir.getAbsolutePath() + "/build/outputs/apk/release/app-release-unsigned.apk"))
|
|
ZipFile file = new ZipFile(moduleDir.getAbsolutePath() + "/build/outputs/apk/release/app-release-unsigned.apk");
|
|
ZipEntry entry
|
|
while ((entry = inputStream.nextEntry) != null) {
|
|
if (entry.getName().equals("classes.dex")) {
|
|
print('classes.dex found!')
|
|
|
|
FileOutputStream output = new FileOutputStream(new File(moduleDir.getAbsoluteFile(), "classes6.dex"))
|
|
|
|
byte[] buffer = new byte[1024]
|
|
int len = 0
|
|
while ((len = inputStream.read(buffer)) > 0) {
|
|
output.write(buffer, 0, len)
|
|
}
|
|
output.close()
|
|
}
|
|
if (entry.getName().equals("classes2.dex")) {
|
|
print('\nclasses2.dex found!')
|
|
|
|
FileOutputStream output = new FileOutputStream(new File(moduleDir.getAbsoluteFile(), "classes7.dex"))
|
|
|
|
byte[] buffer = new byte[1024]
|
|
int len = 0
|
|
while ((len = inputStream.read(buffer)) > 0) {
|
|
output.write(buffer, 0, len)
|
|
}
|
|
output.close()
|
|
}
|
|
}
|
|
|
|
for (ZipEntry e : Collections.list(file.entries())) {
|
|
if (e.getName().endsWith("assets/version.properties")) {
|
|
var is = file.getInputStream(e)
|
|
FileOutputStream output = new FileOutputStream(new File(moduleDir.getAbsoluteFile(), "version.properties"))
|
|
|
|
byte[] buffer = new byte[1024]
|
|
int len = 0
|
|
while ((len = is.read(buffer)) > 0) {
|
|
output.write(buffer, 0, len)
|
|
}
|
|
output.close()
|
|
|
|
print('\nversion.properties found!')
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace()
|
|
}
|
|
}
|
|
}
|
|
|
|
android {
|
|
compileSdkVersion 32
|
|
buildToolsVersion '32.0.0'
|
|
|
|
sourceSets {
|
|
main {
|
|
java.srcDirs += 'build/generated/aidl_source_output_dir/release/out'
|
|
}
|
|
}
|
|
|
|
defaultConfig {
|
|
applicationId "ru.vtosters.lite.utils.lite"
|
|
minSdk 22
|
|
targetSdkVersion 32
|
|
versionCode 1
|
|
versionName "1.0"
|
|
multiDexEnabled true
|
|
}
|
|
|
|
compileOptions {
|
|
coreLibraryDesugaringEnabled true
|
|
sourceCompatibility JavaVersion.VERSION_14
|
|
targetCompatibility JavaVersion.VERSION_14
|
|
}
|
|
namespace 'ru.vtosters.lite'
|
|
}
|
|
|
|
dependencies {
|
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
|
implementation 'net.sourceforge.streamsupport:streamsupport-minifuture:1.7.4'
|
|
implementation fileTree(dir: 'libs', include: ['*.aar'])
|
|
compileOnly fileTree(dir: 'libs', include: ['*.jar'])
|
|
}
|
|
|
|
task prepareDexForMerge(type: Copy) {
|
|
dependsOn('exportDex')
|
|
into smaliFolder.toString()
|
|
from(projectDir) {
|
|
include 'classes6.dex'
|
|
include 'classes7.dex'
|
|
}
|
|
from(projectDir) {
|
|
include 'version.properties'
|
|
into("assets")
|
|
}
|
|
doLast {
|
|
new File(projectDir, "classes6.dex").delete()
|
|
new File(projectDir, "classes7.dex").delete()
|
|
new File(projectDir, "version.properties").delete()
|
|
}
|
|
}
|
|
|
|
task buildVTL(type: Exec) {
|
|
dependsOn('prepareDexForMerge')
|
|
workingDir(projectDir.parentFile)
|
|
if (Os.isFamily("unix") || Os.isFamily("mac")) {
|
|
commandLine 'bash', '-c', './scripts/build.sh'
|
|
} else {
|
|
commandLine 'cmd', '/C', '.\\scripts\\build.bat'
|
|
}
|
|
}
|
|
|
|
task buildAndInstallVTL(type: Exec) {
|
|
dependsOn('buildVTL')
|
|
workingDir(scriptsFolder.toString())
|
|
ignoreExitValue true
|
|
if (Os.isFamily("unix") || Os.isFamily("mac")) {
|
|
commandLine 'bash', '-c', 'adb install VTLite.apk'
|
|
} else {
|
|
commandLine 'adb', 'install', 'VTLite.apk'
|
|
}
|
|
}
|
|
|
|
task buildAndLaunchVTL(type: Exec) {
|
|
dependsOn('buildAndInstallVTL')
|
|
if (Os.isFamily("unix") || Os.isFamily("mac"))
|
|
commandLine 'bash', '-c', 'adb shell monkey -p com.vtosters.lite -c android.intent.category.LAUNCHER 1'
|
|
else
|
|
commandLine 'adb', 'shell', 'monkey', '-p', 'com.vtosters.lite', '-c', 'android.intent.category.LAUNCHER', '1'
|
|
}
|
|
|
|
task generateRjava(type: Exec) {
|
|
workingDir(projectDir.parentFile)
|
|
if (Os.isFamily("unix") || Os.isFamily("mac"))
|
|
commandLine "bash", "-c", "./scripts/rclass_regenerator.sh"
|
|
else
|
|
commandLine "cmd", "/C", ".\\scripts\\rclass_regenerator.sh"
|
|
}
|
|
|
|
exportDex.dependsOn('assembleRelease')
|
|
clean.dependsOn('cleanVersionFile')
|
|
versionFile.dependsOn('cleanVersionFile')
|
|
preBuild.dependsOn('versionFile')
|