diff --git a/.travis.yml b/.travis.yml index 8f1e14b3e..c3911b26d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ jdk: - oraclejdk7 - openjdk7 - openjdk6 -script: gradle clean build samples +script: gradle clean build notifications: email: - skylot@gmail.com diff --git a/README.md b/README.md index 9201af214..240e1cab4 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 + ./gradlew dist (on Windows, use `gradlew.bat` instead of `./gradlew`) @@ -37,13 +37,13 @@ Run **jadx** on itself: ``` jadx[-gui] [options] (.dex, .apk or .jar) options: - -d, --output-dir - output directory - -j, --threads-count - processing threads count - -f, --fallback - make simple dump (using goto instead of 'if', 'for', etc) - --cfg - save methods control flow graph - --raw-cfg - save methods control flow graph (use raw instructions) - -v, --verbose - verbose output - -h, --help - print this help + -d, --output-dir - output directory + -j, --threads-count - processing threads count + -f, --fallback - make simple dump (using goto instead of 'if', 'for', etc) + --cfg - save methods control flow graph to dot file + --raw-cfg - save methods control flow graph (use raw instructions) + -v, --verbose - verbose output + -h, --help - print this help Example: jadx -d out classes.dex ``` diff --git a/build.gradle b/build.gradle index bd08e4af7..4d8d2ffa4 100644 --- a/build.gradle +++ b/build.gradle @@ -12,16 +12,17 @@ subprojects { gradle.projectsEvaluated { tasks.withType(Compile) { - options.compilerArgs << "-Xlint" << "-Xlint:unchecked" << "-Xlint:deprecation" + if (!"${it}".contains(":jadx-samples:")) { + options.compilerArgs << "-Xlint" << "-Xlint:unchecked" << "-Xlint:deprecation" + } } } jar { version = jadxVersion - } - - manifest { - mainAttributes('jadx-version' : jadxVersion) + manifest { + mainAttributes('jadx-version' : jadxVersion) + } } dependencies { @@ -48,10 +49,16 @@ task pack(type: Zip, dependsOn: copyArtifacts) { from copyArtifacts.destinationDir } -task build(dependsOn: pack) { +task dist(dependsOn: pack) { description = 'Build jadx distribution zip' } +task samples(dependsOn: 'jadx-samples:samples') { +} + +task build(dependsOn: [dist, samples]) { +} + task clean(type: Delete) { delete buildDir } @@ -59,4 +66,3 @@ task clean(type: Delete) { task wrapper(type: Wrapper) { gradleVersion = '1.8' } - diff --git a/jadx-core/src/main/java/jadx/core/Consts.java b/jadx-core/src/main/java/jadx/core/Consts.java index 3b61400b5..a71c69dd5 100644 --- a/jadx-core/src/main/java/jadx/core/Consts.java +++ b/jadx-core/src/main/java/jadx/core/Consts.java @@ -1,9 +1,7 @@ package jadx.core; -import jadx.core.utils.Utils; - public class Consts { - public static final String JADX_VERSION = Utils.getJadxVersion(); + public static final String JADX_VERSION = Jadx.getVersion(); public static final boolean DEBUG = false; diff --git a/jadx-core/src/main/java/jadx/core/Jadx.java b/jadx-core/src/main/java/jadx/core/Jadx.java index 4866aea6b..75605dd17 100644 --- a/jadx-core/src/main/java/jadx/core/Jadx.java +++ b/jadx-core/src/main/java/jadx/core/Jadx.java @@ -19,10 +19,15 @@ import jadx.core.dex.visitors.regions.ProcessVariables; import jadx.core.dex.visitors.regions.RegionMakerVisitor; import jadx.core.dex.visitors.typeresolver.FinishTypeResolver; import jadx.core.dex.visitors.typeresolver.TypeResolver; +import jadx.core.utils.Utils; import java.io.File; +import java.io.IOException; +import java.net.URL; import java.util.ArrayList; +import java.util.Enumeration; import java.util.List; +import java.util.jar.Manifest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -73,4 +78,19 @@ public class Jadx { passes.add(new CodeGen(args)); return passes; } + + public static String getVersion() { + try { + Enumeration resources = Utils.class.getClassLoader().getResources("META-INF/MANIFEST.MF"); + while (resources.hasMoreElements()) { + Manifest manifest = new Manifest(resources.nextElement().openStream()); + String ver = manifest.getMainAttributes().getValue("jadx-version"); + if (ver != null) + return ver; + } + } catch (IOException e) { + LOG.error("Can't get manifest file", e); + } + return "dev"; + } } diff --git a/jadx-core/src/main/java/jadx/core/utils/Utils.java b/jadx-core/src/main/java/jadx/core/utils/Utils.java index ad4ea242c..f1bf28e0d 100644 --- a/jadx-core/src/main/java/jadx/core/utils/Utils.java +++ b/jadx-core/src/main/java/jadx/core/utils/Utils.java @@ -3,14 +3,10 @@ package jadx.core.utils; import jadx.core.utils.exceptions.JadxRuntimeException; import java.io.File; -import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; -import java.net.URL; -import java.util.Enumeration; import java.util.Iterator; import java.util.List; -import java.util.jar.Manifest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -126,22 +122,6 @@ public class Utils { return end; } - public static String getJadxVersion() { - try { - Enumeration resources = - Utils.class.getClassLoader().getResources("META-INF/MANIFEST.MF"); - while (resources.hasMoreElements()) { - Manifest manifest = new Manifest(resources.nextElement().openStream()); - String ver = manifest.getMainAttributes().getValue("jadx-version"); - if (ver != null) - return ver; - } - } catch (IOException e) { - LOG.error("Can't get manifest file", e); - } - return "dev"; - } - public static void makeDirsForFile(File file) { File dir = file.getParentFile(); if (!dir.exists()) {