From f76ff4f773d0e819278540102758ef982e20ebcd Mon Sep 17 00:00:00 2001 From: maelstrom Date: Fri, 19 Jul 2024 15:49:31 +0200 Subject: [PATCH] Merge smali --- build.gradle | 74 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index 9ce7dd0..6db69a9 100644 --- a/build.gradle +++ b/build.gradle @@ -28,22 +28,72 @@ tasks.register('extractApk', JavaExec) { args = ['d', 'source-apk/tumblr.apk', '-o', 'build/extracted'] } +tasks.register('mergeSmali') { + dependsOn tasks.extractApk + doLast { + copy { + into 'build/smali-merged' + from('src/main/smali') + from('build/extracted') { + include 'smali_classes*/**', 'smali/**' + } + + duplicatesStrategy 'exclude' + } + } +} + +tasks.register('smali') { + dependsOn tasks.mergeSmali + doLast { + mkdir('build/dex') + javaexec { + classpath = fileTree('tools/d2j').filter { it.name.endsWith('.jar') } + println(classpath.files) + + mainClass = 'com.googlecode.d2j.smali.SmaliCmd' + + args = ['-o', 'build/dex/classes.dex', 'build/smali-merged/smali'] + } + } +} + // NOTE: Maybe broken if gradle thinks the extracted files are newer? tasks.register('mergeResources') { dependsOn tasks.extractApk + dependsOn tasks.smali doLast { - copy { // Copy from extracted - from 'build/extracted' - into 'build/merged' - //exclude 'smali_classes*', 'smali' - } - copy { // Copy resources from src - from 'src/main/resources' - into 'build/merged' - } - copy { // Copy smali from src - from 'src/main/smali' - into 'build/merged' +// copy { // Copy from extracted +// from 'build/extracted' +// into 'build/merged' +// //exclude 'smali_classes*', 'smali' +// } +// copy { // Copy resources from src +// from 'src/main/resources' +// into 'build/merged' +// } +// copy { // Copy smali from src +// from 'src/main/smali' +// into 'build/merged' +// } + copy { + into('build/merged') + + from('build/extracted') { + exclude 'smali_classes*', 'smali' + } + from('build/dex') + from('src/main/resources') + + duplicatesStrategy 'include' } } +} + +tasks.register('buildApk', JavaExec) { + dependsOn mergeResources + + classpath = files('tools/apktool_2.9.3.jar') + + args = ['b', 'build/merged', '-o', 'build/merged-apktool/tumblr-ykit.apk'] } \ No newline at end of file