diff --git a/.github/workflows/gradle_build.yml b/.github/workflows/gradle_build.yml index 1a220dc4..1655bf0e 100644 --- a/.github/workflows/gradle_build.yml +++ b/.github/workflows/gradle_build.yml @@ -1,30 +1,137 @@ -name: Build Jar +name: Build Jar and DEB on: push: branches: [ "master" ] pull_request: branches: [ "master" ] + workflow_dispatch: # ---> Para ejecutar desde la interfaz permissions: contents: read jobs: build: - runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Set up JDK 8 uses: actions/setup-java@v4 with: java-version: '8' distribution: 'temurin' + - uses: gradle/actions/setup-gradle@v4 + - name: Build with Gradle - run: ./gradlew fatJar - - uses: actions/upload-artifact@v4 + run: ./gradlew fatJar --no-daemon # --> Evitar algunos errores CI + + - name: Install dependencies for DEB packaging + run: | + sudo apt-get update + sudo apt-get install -y dh-make debhelper devscripts + + - name: Create DEB package structure DEBIAN + run: | + ################ DEBIAN ##################### + mkdir -p deb-package-debian/usr/share/apkeditor + mkdir -p deb-package-debian/usr/bin + mkdir -p deb-package-debian/DEBIAN + chmod 755 deb-package-debian + + # Copy the built jar + cp build/libs/*.jar deb-package-debian/usr/share/apkeditor/apkeditor.jar + + # Create launcher script + echo '#!/bin/sh' > deb-package-debian/usr/bin/apkeditor + echo 'java -jar /usr/share/apkeditor/apkeditor.jar "$@"' >> deb-package-debian/usr/bin/apkeditor + chmod +x deb-package-debian/usr/bin/apkeditor + + # Create control file + cat > deb-package-debian/DEBIAN/control < + Description: APK Editor tool + A tool for editing APK files. + EOL + + - name: Create DEB package structure TERMUX + run: | + ############## TERMUX ############### + mkdir -p deb-package-termux/data/data/com.termux/files/usr/share/apkeditor + mkdir -p deb-package-termux/data/data/com.termux/files/usr/bin + mkdir -p deb-package-termux/DEBIAN + chmod 755 deb-package-termux + + # Copy the built jar + cp build/libs/*.jar deb-package-termux/data/data/com.termux/files/usr/share/apkeditor/apkeditor.jar + + # Create launcher script + # + cat > deb-package-termux/data/data/com.termux/files/usr/bin/apkeditor << 'EOF' + #!/data/data/com.termux/files/usr/bin/bash + + JAR_PATH="/data/data/com.termux/files/usr/share/apkeditor/apkeditor.jar" + if [ ! -f "$JAR_PATH" ]; then + echo "Error: I can't find apkeditor.jar en $JAR_PATH" >&2 + exit 1 + fi + + JAVA_OPTS="-Xmx512M " + + exec java -jar $JAVA_OPTS "$JAR_PATH" "$@" + EOF + + + chmod +x deb-package-termux/data/data/com.termux/files/usr/bin/apkeditor + + # Create control file + cat > deb-package-termux/DEBIAN/control < + Description: APK Editor tool + A tool for editing APK files. + EOL + + + - name: Build DEB package + run: | + #### debian #### + dpkg-deb --build deb-package-debian + mkdir -p artifacts + mv deb-package-debian.deb artifacts/apkeditor_1.4-${{ github.run_number }}_all.deb + #### termux #### + dpkg-deb --build deb-package-termux + mkdir -p artifacts1 + mv deb-package-termux.deb artifacts1/apkeditor_1.4-${{ github.run_number }}_all.deb + + + - name: Upload DEBIAN-DEB-APKEDITOR + uses: actions/upload-artifact@v4 + with: + name: DEBIAN-DEB-APKEDITOR + path: artifacts + + - name: Upload TERMUX-DEB-APKEDITOR + uses: actions/upload-artifact@v4 with: - name: APKEditor - path: build/libs + name: TERMUX-DEB-APKEDITOR + path: artifacts1 + + - name: Upload APKEDITOR.jar + uses: actions/upload-artifact@v4 + with: + name: APKEDITOR + path: build/libs + + diff --git a/build.gradle b/build.gradle index 3c66c9ce..4df5b93b 100755 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,11 @@ - +apply plugin: 'application' apply plugin: 'java' group 'com.reandroid.apkeditor' version '1.4.5' +mainClassName = 'com.reandroid.apkeditor.Main' + java { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 @@ -16,19 +18,20 @@ if (JavaVersion.current().isJava8Compatible()) { } } } + repositories { mavenCentral() } dependencies { //implementation("io.github.reandroid:ARSCLib:+") - compile(files("$rootProject.projectDir/libs/ARSCLib.jar")) + implementation(files("$rootProject.projectDir/libs/ARSCLib.jar")) // built from: https://github.com/REAndroid/smali-lib - compile(files("$rootProject.projectDir/libs/smali.jar")) + implementation(files("$rootProject.projectDir/libs/smali.jar")) // built from: https://github.com/REAndroid/JCommand - compile(files("$rootProject.projectDir/libs/JCommand.jar")) + implementation(files("$rootProject.projectDir/libs/JCommand.jar")) } processResources { @@ -40,19 +43,23 @@ processResources { javadoc { exclude('com/reandroid/test/**') } + jar { exclude('com/reandroid/test/**') duplicatesStrategy = DuplicatesStrategy.FAIL + manifest { + attributes 'Main-Class': mainClassName + } } task fatJar(type: Jar) { duplicatesStrategy = DuplicatesStrategy.EXCLUDE manifest { attributes( - 'Main-Class': 'com.reandroid.apkeditor.Main' + 'Main-Class': mainClassName ) } - from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } + from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } with jar } diff --git a/src/main/java/com/reandroid/apkeditor/common/AndroidManifestHelper.java b/src/main/java/com/reandroid/apkeditor/common/AndroidManifestHelper.java index d8124fea..6e528b2c 100644 --- a/src/main/java/com/reandroid/apkeditor/common/AndroidManifestHelper.java +++ b/src/main/java/com/reandroid/apkeditor/common/AndroidManifestHelper.java @@ -71,8 +71,9 @@ public static void removeAttributeFromManifestByName(AndroidManifestBlock androi } return; } + // Antes hera un valor entero boolean removed = manifestElement.removeAttributesWithName(resourceName); - if (removed && logger != null) { + if (removed ) { logger.logMessage("Removed-attribute : " + resourceName); } } @@ -86,7 +87,7 @@ public static void removeAttributeFromManifestById(AndroidManifestBlock androidM return; } boolean removed = manifestElement.removeAttributesWithId(resourceId); - if (removed && logger != null) { + if (removed ) { logger.logMessage("Removed-attribute : " + HexUtil.toHex8("@0x", resourceId)); } } @@ -108,7 +109,7 @@ public static void removeAttributeFromManifestAndApplication(AndroidManifestBloc ResXmlElement applicationElement = manifestElement.getElement( AndroidManifest.TAG_application); - if(removed && logger != null) { + if(removed ) { logger.logMessage("Attributes on removed: " + HexUtil.toHex8("0x", resourceId) + " (" + nameForLogging + ")"); } @@ -116,7 +117,7 @@ public static void removeAttributeFromManifestAndApplication(AndroidManifestBloc return; } removed = applicationElement.removeAttributesWithId(resourceId); - if(removed && logger != null) { + if(removed ) { logger.logMessage("Attributes on removed: " + HexUtil.toHex8("0x", resourceId) + " (" + nameForLogging + ")"); }