diff --git a/README.md b/README.md index 96ba7d0168f5913ae6bf6294e8293327ae0caf6d..104e4c953925b3feaec3e337c03ce8097b01d643 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Latest version available at git clone https://github.com/skylot/jadx.git cd jadx - ./gradlew clean build pack + ./gradlew clean build (on Windows, use `gradlew.bat` instead of `./gradlew`) @@ -28,15 +28,14 @@ and also packed to `build/jadx-.zip` Run **jadx** on itself: cd build/jadx/ - bin/jadx-cli -d out lib/jadx-core-*.jar -or - + bin/jadx -d out lib/jadx-core-*.jar + #or bin/jadx-gui lib/jadx-core-*.jar ### Usage ``` -jadx [options] (.dex, .apk or .jar) +jadx[-gui] [options] (.dex, .apk or .jar) options: -d, --output-dir - output directory -j, --threads-count - processing threads count diff --git a/build.gradle b/build.gradle index 34729e68b10810f02722d3bc3905d0f4a73f222d..432a7c19b904da02c0a3eab04dc26bb313a32ca6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,3 @@ -apply plugin: 'idea' - ext.jadxVersion = file('version').readLines().get(0) subprojects { @@ -17,7 +15,7 @@ subprojects { } manifest { - mainAttributes("jadx-version" : jadxVersion) + mainAttributes('jadx-version' : jadxVersion) } dependencies { @@ -31,7 +29,7 @@ subprojects { } } -task copyArtifacts (type: Sync, dependsOn: ["jadx-cli:installApp", "jadx-gui:installApp"]) { +task copyArtifacts (type: Sync, dependsOn: ['jadx-cli:installApp', 'jadx-gui:installApp']) { destinationDir file("$buildDir/jadx") ['jadx-cli', 'jadx-gui'].each { from tasks.getByPath(":${it}:installApp").destinationDir @@ -44,6 +42,10 @@ task pack (type: Zip, dependsOn: copyArtifacts) { from copyArtifacts.destinationDir } +task build (dependsOn: pack) { + description = 'Build jadx distribution zip' +} + task clean(type: Delete) { delete buildDir } diff --git a/jadx-cli/build.gradle b/jadx-cli/build.gradle index e5d25495887e155e2f41816557dba9762f3305ac..355fcad7d3dbe879a840d119dc639226a8c83d53 100644 --- a/jadx-cli/build.gradle +++ b/jadx-cli/build.gradle @@ -1,15 +1,13 @@ apply plugin: 'application' -mainClassName = "jadx.cli.JadxCLI" +mainClassName = 'jadx.cli.JadxCLI' +applicationName = 'jadx' dependencies { - compile(project(":jadx-core")) + compile(project(':jadx-core')) compile 'com.beust:jcommander:1.30' } -build.dependsOn distZip -build.dependsOn installApp - startScripts { doLast { // increase default max heap size diff --git a/jadx-cli/src/main/java/jadx/cli/JadxArgs.java b/jadx-cli/src/main/java/jadx/cli/JadxArgs.java index fa1fe2deb179cd2f87a8f11b8efd814c0adb9f51..3e92b2f89211c00161375ef46d7ed1540b704a73 100644 --- a/jadx-cli/src/main/java/jadx/cli/JadxArgs.java +++ b/jadx-cli/src/main/java/jadx/cli/JadxArgs.java @@ -80,6 +80,7 @@ public class JadxArgs implements IJadxArgs { processArgs(); } catch (JadxException e) { LOG.error(e.getMessage()); + printUsage(); System.exit(1); } } @@ -103,10 +104,13 @@ public class JadxArgs implements IJadxArgs { if (input.isEmpty()) { if (inputRequired) - throw new JadxException("Please specify at least one input file"); + throw new JadxException("Please specify input file"); else return; } + if (input.size() > 1) { + throw new JadxException("Only one input file is supported"); + } if (outDirName == null) { File file = new File(files.get(0)); @@ -129,6 +133,7 @@ public class JadxArgs implements IJadxArgs { JCommander jc = new JCommander(this); // print usage in not sorted fields order (by default its sorted by description) PrintStream out = System.out; + out.println(); out.println("jadx - dex to java decompiler, version: " + Consts.JADX_VERSION); out.println(); out.println("usage: jadx [options] " + jc.getMainParameterDescription()); diff --git a/jadx-cli/src/main/java/jadx/cli/JadxCLI.java b/jadx-cli/src/main/java/jadx/cli/JadxCLI.java index 23b18d39b1f50588b0f9dab93ce6f00390d957f2..7fe1039bea3c3b158df7f813f40b92ff06b95a79 100644 --- a/jadx-cli/src/main/java/jadx/cli/JadxCLI.java +++ b/jadx-cli/src/main/java/jadx/cli/JadxCLI.java @@ -2,11 +2,7 @@ package jadx.cli; import jadx.api.Decompiler; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class JadxCLI { - private static final Logger LOG = LoggerFactory.getLogger(JadxCLI.class); public static void main(String[] args) { JadxArgs jadxArgs = new JadxArgs(args, true); diff --git a/jadx-gui/build.gradle b/jadx-gui/build.gradle index 9137b7b97c2395ac7b09f7e6741337eb0c70fdcf..922723e439f225e1c027651f019e43e9943c8ad0 100644 --- a/jadx-gui/build.gradle +++ b/jadx-gui/build.gradle @@ -8,9 +8,6 @@ dependencies { compile 'com.fifesoft:rsyntaxtextarea:2.0.7' } -build.dependsOn distZip -build.dependsOn installApp - startScripts { doLast { // increase default max heap size diff --git a/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java b/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java index b01cecd7d1cf1a86074aa40a4052128945ca8c5b..2fd8b1eacd27f49263903304cfcbdcbe94e110f6 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java @@ -4,7 +4,6 @@ import javax.swing.Icon; import java.awt.Component; import java.awt.Graphics; import java.util.ArrayList; -import java.util.Collection; import java.util.List; public class OverlayIcon implements Icon { @@ -48,10 +47,6 @@ public class OverlayIcon implements Icon { icons.add(icon); } - public void addAll(Collection icons) { - icons.addAll(icons); - } - public List getIcons() { return icons; }