From ccaa10d2246b0857b5378d8b62206feb6a17edfd Mon Sep 17 00:00:00 2001 From: saoq Date: Sat, 26 Nov 2022 01:38:22 +0300 Subject: [PATCH] Extract dex move to gradle task, apply to CI .yml --- .github/workflows/build.yml | 5 ++-- app/build.gradle | 34 +++++++++++++++++------ scripts/build.bat | 34 +---------------------- scripts/build.sh | 24 ----------------- scripts/buildworkflow.sh | 54 ------------------------------------- 5 files changed, 30 insertions(+), 121 deletions(-) delete mode 100644 scripts/buildworkflow.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 71f9f2cd2..ab6e6fe3c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,8 +39,9 @@ jobs: - name: Build VTLite run: | - bash scripts/buildworkflow.sh - + gradle prepareDexForMerge + java -jar scripts/apktool.jar b smali -o smali/VTLite.apk --use-aapt2 -p scripts/framework/ + - name: Sign and verify the apk run: | java -jar scripts/apksigner.jar sign --ks scripts/debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android smali/VTLite.apk diff --git a/app/build.gradle b/app/build.gradle index 8482f9bc9..83e493745 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,3 +1,4 @@ +import java.nio.file.Files import java.util.zip.ZipEntry import java.util.zip.ZipFile import java.util.zip.ZipInputStream @@ -9,10 +10,17 @@ plugins { 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 { @@ -96,25 +104,35 @@ dependencies { compileOnly fileTree(dir: 'libs', include: ['*.jar']) } - -task cleanVersionFile { - projectDir.toPath().resolve("src/main/assets/version.properties").toFile().delete() +task prepareDexForMerge(type: Copy) { + dependsOn('exportDex') + into smaliFolder.toString() + from(projectDir) { + include 'classes*.dex' + } + from(projectDir) { + include 'version.properties' + into("assets") + } + doLast { + Files.newDirectoryStream(projectDir.toPath(), "classes*.dex").forEach { it.toFile().delete() } + new File(projectDir, "version.properties").delete() + } } task buildVTL(type: Exec) { - dependsOn 'assembleRelease' - dependsOn 'exportDex' + dependsOn('prepareDexForMerge') workingDir(projectDir.parentFile) if (Os.isFamily("unix") || Os.isFamily("mac")) { - commandLine 'bash', '-c','./scripts/build.sh' + commandLine 'bash', '-c', './scripts/build.sh' } else { - commandLine 'cmd','/C', '.\\scripts\\build.bat' + commandLine 'cmd', '/C', '.\\scripts\\build.bat' } } task buildAndInstallVTL(type: Exec) { dependsOn('buildVTL') - workingDir(projectDir.toPath().resolve("../scripts").normalize().toString()) + workingDir(scriptsFolder.toString()) ignoreExitValue true if (Os.isFamily("unix") || Os.isFamily("mac")) { commandLine 'bash', '-c', 'adb install VTLite.apk' diff --git a/scripts/build.bat b/scripts/build.bat index 494c21331..918639a0a 100644 --- a/scripts/build.bat +++ b/scripts/build.bat @@ -11,38 +11,6 @@ setlocal call :setESC cls -echo. -echo %ESC%[1;4mMove dex6 to source dir...%ESC%[0m -echo. -move app\classes6.dex smali\ -if "%ERRORLEVEL%" == "0" ( - echo %ESC%[92mSuccessful%ESC%[0m -) else ( - echo %ESC%[31mFailed%ESC%[0m - exit /B 1 -) - -echo. -echo %ESC%[1;4mMove dex7 to source dir...%ESC%[0m -echo. -move app\classes7.dex smali\ -if "%ERRORLEVEL%" == "0" ( - echo %ESC%[92mSuccessful%ESC%[0m -) else ( - echo %ESC%[31mFailed%ESC%[0m -) - - -echo. -echo %ESC%[1;4mMove version.properties to source dir...%ESC%[0m -echo. -move app\version.properties smali\assets\ -if "%ERRORLEVEL%" == "0" ( - echo %ESC%[92mSuccessful%ESC%[0m -) else ( - echo %ESC%[31mFailed%ESC%[0m -) - echo. echo %ESC%[1;4mBuild apk...%ESC%[0m echo. @@ -55,7 +23,7 @@ if "%ERRORLEVEL%" == "0" ( exit /B 1 ) del classes6.dex -del classes8.dex +del classes7.dex del assets\version.properties echo. diff --git a/scripts/build.sh b/scripts/build.sh index e95cb99d2..89b1c089d 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -5,30 +5,6 @@ NC='\033[0m' BOLD='\033[1m' UNDERLINE='\033[4m' -echo -e "${BOLD}${UNDERLINE}Перенос dex6 в папку с исходным кодом..${NC}" -mv app/classes6.dex smali/ -if [ $? -eq 0 ]; then - echo -e "${GREEN}Успех!${NC}\n" -else - echo -e "${RED}Провал.${NC}\n" - exit 1 -fi - -echo -e "${BOLD}${UNDERLINE}Перенос dex7 в папку с исходным кодом..${NC}" -mv app/classes7.dex smali/ -if [ $? -eq 0 ]; then - echo -e "${GREEN}Успех!${NC}\n" -else - echo -e "${RED}Провал.${NC}\n" -fi - -echo -e "${BOLD}${UNDERLINE}Перенос version.properties в папку с исходным кодом..${NC}" -mv app/version.properties smali/assets/ -if [ $? -eq 0 ]; then - echo -e "${GREEN}Успех!${NC}\n" -else - echo -e "${RED}Провал.${NC}\n" -fi echo -e "${BOLD}${UNDERLINE}Сборка apk..${NC}" cd smali/ diff --git a/scripts/buildworkflow.sh b/scripts/buildworkflow.sh deleted file mode 100644 index 04b073538..000000000 --- a/scripts/buildworkflow.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -echo -e "${BOLD}${UNDERLINE}Сборка dex..${NC}\n" - -gradle versionFile -gradle assembleRelease -if [ $? -eq 0 ]; then - echo -e "${GREEN}Успех!${NC}\n" -else - echo -e "${RED}Провал.${NC}\n" - exit 1 -fi - -echo -e "${BOLD}${UNDERLINE}Экспорт dex..${NC}" -gradle exportDex -if [ $? -eq 0 ]; then - echo -e "${GREEN}Успех!${NC}\n" -else - echo -e "${RED}Провал.${NC}\n" - exit 1 -fi - -echo -e "${BOLD}${UNDERLINE}Перенос dex6 в папку с исходным кодом..${NC}" -mv app/classes6.dex smali/ -if [ $? -eq 0 ]; then - echo -e "${GREEN}Успех!${NC}\n" -else - echo -e "${RED}Провал.${NC}\n" - exit 1 -fi - -echo -e "${BOLD}${UNDERLINE}Перенос dex7 в папку с исходным кодом..${NC}" -mv app/classes7.dex smali/ -if [ $? -eq 0 ]; then - echo -e "${GREEN}Успех!${NC}\n" -else - echo -e "${RED}Провал.${NC}\n" -fi - -echo -e "${BOLD}${UNDERLINE}Перенос version.properties в папку с исходным кодом..${NC}" -mv app/version.properties smali/assets/ -if [ $? -eq 0 ]; then - echo -e "${GREEN}Успех!${NC}\n" -else - echo -e "${RED}Провал.${NC}\n" -fi - -echo -e "${BOLD}${UNDERLINE}Сборка apk..${NC}" -java -jar scripts/apktool.jar b smali -o smali/VTLite.apk --use-aapt2 -p scripts/framework/ -if [ $? -eq 0 ]; then - echo -e "${GREEN}Успех!${NC}\n" -else - echo -e "${RED}Провал.${NC}\n" - exit 1 -fi