1.0.0 (2022-06-05)
Bug Fixes
compareSignatureToMethod
not matching correctly in case opcodes are null (cca12aa)ConcurrentModificationException
while iterating throughproxies
and modifying it (6cb7cdb)JarPatchBundle
loading non-class files to class loader (849616d)PackageMetadata
(7399450)replaceWith
not replacing classes with used class proxies (4178a1e)- adding existing classes to the patchers cache (9659a61)
- always return PatchResultSuccess on patch success (996c4ac)
- applying no patches throwing error (5ca5a1c)
- applyPatches not returning successful patches (f806cb3)
- avoid ignoring test resources (fixes #1) (d5a3c76)
- Classes not being written properly because of array shifting (6e4db11)
- current must be calculated after increment (5f12bab)
- failing tests temporarily (fc05fe7)
- fix classes having multiple instances of fields (7cc8a7d)
- fix classes having multiple method instances (398239d)
- Fixed writer & signature resolver, improved tests & speed, minor refactoring (e6c2501)
- fuzzy resolver warning params were turned around (e5bea06)
- give ClassWriter a ClassReader for symtable (41749ba)
- gradle: publish source and javadocs (c236ebe)
- incorrect pattern offset (f3b5f67)
- Io: fix finding classes by name (b957501)
- Io: JAR loading and saving (#8) (310a7c4)
- make
methodMetadata
nullable inMethodSignatureMetadata
(4e56652) - make warnings nullable instead of lateinit (8f1a629)
- match to correct signature method parameters (1ee2e4b)
- MethodResolver: fix cd57a8c (cbd8df2)
- MethodResolver: strip labels and line numbers so opcode patterns match (699c730)
- MethodResolver: strip labels nodes so opcode patterns match (82c5306)
- MethodSignature#resolved throwing an exception (c612676)
- Move proxy package out of cache package (ce21bd6)
- null check causing an exception (338bd9f)
- nullable signature members (#10) (674461f)
- Patch should have access to the Cache (4dd820f)
- Patcher not writing resolved methods (fac44a5)
- qualifying
Element
with wrong package (024fa86) - reaching all constructors not possible (c459beb)
- reformat (trigger release) (bf48945)
- remove broken code (0e72a6e)
- remove dependency to fork of Apktool (11abc67)
- remove leftover debug code (0f30eac)
- return mutable set of classes (66a9b76)
- returning failure on success (48c4ea2)
- Search method map for existing class proxy (a1e909b)
- set index for insertAt to 0 by default (d5b4c99)
- set marklimit to Integer.MAX_VALUE (e6e468f)
- string signature in
SignatureResolver
(e5ae970) - Suppress unused for addFiles (3d6a1d3)
- throwing in case the opcode patterns do not match (3144ec8)
- use Array instead of Iterable for methodParameters (dfac8f0)
- using old instance of
Androlib
when saving (a4d8be2) - workflow on dev branch (428f7f4)
- write all classes (f068fc8)
Code Refactoring
- bump multidexlib2 to 2.5.2.r2 (a6c6b49)
- Change all references from Array to Iterable (72f3cad)
- convert Patch to abstract class (cb9b1b9)
- Optimize Signature class (#11) (7faa001)
- Rename
net.revanced
toapp.revanced
(7087230)
Features
Dependencies
annotation (893d4c6)PatchLoader
(ec9fd15)- Add
findParentMethod
utility method (#4) (bbb2c54) - add
MethodWalker
(7755bbc) - add
p
naming scheme to smali compiler (79909cf) - add extensions for cloning methods (01bfbd6)
- add findClass method with className (4087f49)
- Add first tests (544bcf7)
- add fuzzy resolver (7a56dca)
- add immutableMethod (c63b20f)
- add inline smali compiler (bfe4e3e)
- add missing test for fields (6b8b057)
- add or extension for AccessFlags (00c85b5)
- Add patch metadata (642e903), closes ReVancedTeam/revanced-patches#1
- add SafeClassWriter (6626014)
- Add warnings for Fuzzy resolver (715a2ad)
- allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called (1db735b)
- Allow unknown opcodes using
null
(0e5f4ba) - Finish first patcher test (0d8d19e)
- Improve
SignatureResolver
(139a23b) - migrate to
DexPatchBundle
andJarPatchBundle
(8615798) - migrate to dexlib (3651981)
- Minor refactor and return proxy, if class has been proxied already (4b26305)
- optional
forStaticMethod
parameter forInlineSmaliCompiler.compileMethodInstructions
(41e8860) - patch dependencies annotation and
PatcherOptions
(6c65952) - properly manage
ClassProxy
& addProxyBackedClassList
(6cb1fdf) - remaining mutable
EncodedValue
classes (3f97cc8) - string signature (#22) (612515a)
- use annotations instead of metadata objects (d20f7fd)
- utility functions to get metadata of patch & sigs (54511a4)
Performance Improvements
- check type instead of class (c7ef264)
- decode manifest only when not using resource patcher (4f60bea)
- depend on
androlib
instead ofApkDecoder
(cc9416d) - do not resolve empty signatures list (b1eebc9)
- lazy-ify all mutable clones (d18a3b6)
- optimize indexOf call away (9991f39)
- use Set instead of List since there are no dupes (e65ebd2)
- use String List and compare instead of any lambda (5bd416b)
Reverts
- AccessFlag extensions not working with IDE (0bfb92a)
- previous commits check for dupes in dexFile, not cache (e810197)
BREAKING CHANGES
- arrayOf has to be changed to listOf.
- Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
- Removed usage of ASM library
- Array was changed to IntArray. This breaks existing patches.
- Package name was changed from "net.revanced" to "app.revanced"
- Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
- Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.