Skip to content

Releases: DexPatcher/dexpatcher-gradle

v1.0.0

30 Oct 22:40
Compare
Choose a tag to compare

IMPORTANT:
Always make sure to update your local clone of DexPatcher-gradle-tools.

First stable release of the DexPatcher Gradle plugins:

  • Supports the Java 8-based Android toolset:
    • Android Studio from v2.2.0 on.
    • Java-based Android Plugin for Gradle v2.2.0 through v2.2.3.
    • Tested with Gradle v2.14.1 and v3.0 through v3.5.1.
  • Supports the legacy Java 7-based Android toolset:
    • Android Studio up to v2.1.3.
    • Groovy-based Android Plugin for Gradle v1.5.0 through v2.1.3.
    • Adapts to Groovy/Java plugin differences via reflection.
    • Tested with Gradle v2.9 through v2.14.1. (But see the Android Plugin requirements.)
  • Supports javac/dx and the deprecated Jack/Jill compiler toolchains.
  • Supports Java 8 language features and patching of Android 7.x apps thanks to my updated builds of dex2jar.

Limitations:

Changes:

  • Simplified the structure of local dependencies:
    • Removed the per-plugin dependency groups.
    • Coalesced dependencies into the added and provided scopes.
  • Extended the officially-supported project property set:
    • dexpatcher.dir
    • dexpatcher.lib.dir
    • dexpatcher.lib.added.dir
    • dexpatcher.lib.provided.dir
    • dexpatcher.tool.dir
    • dexpatcher.tool.apktool.dir
    • dexpatcher.tool.apktool.framework.dir
    • dexpatcher.tool.apktool.aapt.file
    • dexpatcher.tool.dex2jar.dir
    • dexpatcher.tool.dexpatcher.dir
  • Added a project property access API for build scripts.
  • Added the apkFileOrDir property to the apk-library plugin extension object.
  • Reworked the extension object hierarchy.
  • Fail fast on misconfigured setups.
  • Updated samples.

The official video track for DexPatcher-gradle v1.0.0 is Arctic Monkeys' Do I Wanna Know?

v0.4.6

08 Oct 18:59
Compare
Choose a tag to compare

IMPORTANT:
Make sure you read all previous release notes down to v0.4.0.

  • Added the dexpatcher.constructorAutoIgnore option to disable the implicit ignore of trivial default constructors. This option complements the existing *.importSymbols options to ensure that all symbols potentially used in the patch are also declared and explicitly tagged there, trivial default constructors included. The motivation for this functionality is the planned @DexCheck tag.

v0.4.5

08 Oct 04:47
Compare
Choose a tag to compare

IMPORTANT:
Make sure you read all previous release notes down to v0.4.0.

  • Added the patchedApplication.importSymbols and patchLibrary.importSymbols options to disable import of Java symbols from the source app. These options complements the planned @DexCheck tag by ensuring that all symbols used in the patch are also declared there. They can also be used to side-step issues created by importing symbols of obfuscated apps.
  • Updated support of ApkTool decode command-line options.

v0.4.4

23 Aug 06:13
Compare
Choose a tag to compare

IMPORTANT:
Make sure you read all previous release notes down to v0.4.0.

  • The apk-library plugin features improved handling of ApkTool framework directory defaults.
    Now both of these examples are valid:
apply plugin: 'com.github.lanchon.dexpatcher.apk-library'

// Use a provided framework to decode the APK.
dexpatcherConfig {
    apktool {
        // Set defaults for all ApkTool-based tasks.
        frameworkDirAsInput = 'framework'
        frameworkTag = 'tag'
    }
}
apply plugin: 'com.github.lanchon.dexpatcher.apk-library'

// Use a provided framework to decode the APK.
decodeApk.with {
    // Set values for a specific ApkTool decode task.
    frameworkDirAsInput = 'framework'
    frameworkTag = 'tag'
}

v0.4.3

09 Aug 21:56
Compare
Choose a tag to compare

IMPORTANT:
You must update your local clone of DexPatcher-gradle-tools to use this release.
Make sure you read all previous release notes down to v0.4.0.

  • The plugins now leverage multi-dex support available in dex2jar v2.1 and later.
  • Patching of Android 7.x apps is now supported thanks to my updated builds of dex2jar.
  • Supports Android Plugin for Gradle v1.5.0 through v2.2.3.
  • Tested with Gradle v2.14.1 and v3.3.

v0.4.2

11 Nov 20:46
Compare
Choose a tag to compare

IMPORTANT:
Make sure you read all previous release notes down to v0.4.0.

A big load of small improvements. Most notable:

  • The locally installed DexPatcher-gradle-tools can now optionally include global and per-plugin dependency groups, with each group potentially including dependencies in the compile, provided and apk scopes. (The new plugins are compatible with the old DexPatcher-gradle-tools layout, but you should still update your local clone of the DexPatcher-gradle-tools repo whenever you update the DexPatcher-gradle plugins.)
  • The Apktool task no longer depends on locally installed framework(s) and will instead unpack a default framework within the build directory.
  • Added support for all options of all tools.

Note: This release fixes a regression in v0.4.1 involving multi-dex apps and dex2jar exception files. Release v0.4.1 has been retired.

v0.4.0

10 Nov 04:05
Compare
Choose a tag to compare

Major rework of the Gradle plugins, including a more robust implementation that is compatible with a wide range of tool versions and environments.

  • Supports the 'traditional' Java 7-based toolset:
    • Android Studio up to v2.1.3.
    • Groovy-based Android Plugin for Gradle v1.5.0 through v2.1.3.
    • Tested with Gradle v2.9 through v2.14.1. (But see the Android Plugin requirements.)
  • Supports the new Java 8-based toolset:
    • Android Studio from v2.2.0 on.
    • Java-based Android Plugin for Gradle v2.2.0 through v2.2.3.
    • Adapts to Groovy/Java plugin differences via reflection.
    • Tested with Gradle v2.14.1.
  • Supports both javac/dx and the new Jack/Jill compiler toolchains, including Java 8 language features. (But Jack has annotation processing bugs that may limit its usefulness with DexPatcher in the short term.)
  • Can speed up testing by using opportunistic multi-threaded multi-dex processing on debug builds.
  • Old limitation fixed: the patch-library plugin now supports bundling Java as well as Android resources.
  • The contents of APK library files have changed. The new files are marked with the double extension .apk.aar.
  • Updated samples.

Limitations:

  • Instant run must be disabled.
  • The old patchCode = false option is no longer supported.

The officially supported video track for DexPatcher-gradle v0.4.0 is Rone's Bye Bye Macadam.

v0.3.1

05 Nov 16:53
Compare
Choose a tag to compare
v0.3.1 Pre-release
Pre-release
  • Fixes a longstanding bug caused by a typo in the code affecting builds where patchCode was set to false. It mostly caused performance issues only.

v0.3.0

03 Nov 23:42
Compare
Choose a tag to compare
v0.3.0 Pre-release
Pre-release
  • Added multi-dex support !!!
  • Added support for new features in DexPatcher tool v1.2.0.

Requirements:

  • Android Studio v2.1.3 or earlier.
  • Android Plugin for Gradle v1.2.3 (com.android.tools.build:gradle:1.2.3).
  • Android Build Tools v21.1.1 or higher.
  • Gradle v2.2.1 to v2.9 (tested against v2.2.1).
  • DexPatcher tool v1.2.0 or higher.

v0.2.0

31 Jul 08:10
Compare
Choose a tag to compare
v0.2.0 Pre-release
Pre-release
  • New build script DSL syntax (breaks compatibility with previous build scripts, sorry)
  • Hierarchy of modularized extension objects replaces the previous fat interface
  • New patch-library plugin produces library file that bundles compiled changes to code and resources of an application without bundling any part of the application itself
  • Better error handling in DexPatcher, Apktool and dex2jar tasks
  • Major code refactoring and cleanup

Limitation: The patch-library plugin does not currently support bundling of Java resources, but the patched-application plugin does extract and merge Java resources if they are present in patch libraries. (This limitation applies to Java resources only; Android resources are fully supported.)

Note: A patch-library plugin sample is available in the sample repo.