revanced-patcher/CHANGELOG.md
semantic-release-bot 1ce6098cad chore(release): 1.0.0 [skip ci]
# 1.0.0 (2022-06-05)

### Bug Fixes

* `compareSignatureToMethod` not matching correctly in case opcodes are null ([cca12aa](cca12aa34a))
* `ConcurrentModificationException` while iterating through `proxies` and modifying it ([6cb7cdb](6cb7cdb0b2))
* `JarPatchBundle` loading non-class files to class loader ([849616d](849616dc2b))
* `PackageMetadata` ([7399450](7399450139))
* `replaceWith` not replacing classes with used class proxies ([4178a1e](4178a1eedc))
* adding existing classes to the patchers cache ([9659a61](9659a61c5c))
* always return PatchResultSuccess on patch success ([996c4ac](996c4acb20))
* applying no patches throwing error ([5ca5a1c](5ca5a1c29e))
* applyPatches not returning successful patches ([f806cb3](f806cb38c5))
* avoid ignoring test resources (fixes [#1](https://github.com/revanced/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76389))
* Classes not being written properly because of array shifting ([6e4db11](6e4db110c8))
* current must be calculated after increment ([5f12bab](5f12bab5df))
* failing tests temporarily ([fc05fe7](fc05fe79de))
* fix classes having multiple instances of fields ([7cc8a7d](7cc8a7dec3))
* fix classes having multiple method instances ([398239d](398239dc10))
* Fixed writer & signature resolver, improved tests & speed, minor refactoring ([e6c2501](e6c2501539))
* fuzzy resolver warning params were turned around ([e5bea06](e5bea06353))
* give ClassWriter a ClassReader for symtable ([41749ba](41749ba829))
* **gradle:** publish source and javadocs ([c236ebe](c236ebe078))
* incorrect pattern offset ([f3b5f67](f3b5f67b39))
* **Io:** fix finding classes by name ([b957501](b957501e70))
* **Io:** JAR loading and saving ([#8](https://github.com/revanced/revanced-patcher/issues/8)) ([310a7c4](310a7c446b))
* make `methodMetadata` nullable in `MethodSignatureMetadata` ([4e56652](4e56652429))
* make warnings nullable instead of lateinit ([8f1a629](8f1a629191))
* match to correct signature method parameters ([1ee2e4b](1ee2e4ba56))
* **MethodResolver:** fix cd57a8c9a0 ([cbd8df2](cbd8df2df0))
* **MethodResolver:** strip labels and line numbers so opcode patterns match ([699c730](699c730a7c))
* **MethodResolver:** strip labels nodes so opcode patterns match ([82c5306](82c530650f))
* MethodSignature#resolved throwing an exception ([c612676](c612676543))
* Move proxy package out of cache package ([ce21bd6](ce21bd60f3))
* null check causing an exception ([338bd9f](338bd9f739))
* nullable signature members ([#10](https://github.com/revanced/revanced-patcher/issues/10)) ([674461f](674461f08d))
* Patch should have access to the Cache ([4dd820f](4dd820ffdf))
* Patcher not writing resolved methods ([fac44a5](fac44a50c3))
* qualifying `Element` with wrong package ([024fa86](024fa867e1))
* reaching all constructors not possible ([c459beb](c459beb5f8))
* reformat (trigger release) ([bf48945](bf4894592b))
* remove broken code ([0e72a6e](0e72a6e85f))
* remove dependency to fork of Apktool ([11abc67](11abc67d9a))
* remove leftover debug code ([0f30eac](0f30eac32c))
* return mutable set of classes ([66a9b76](66a9b76845))
* returning failure on success ([48c4ea2](48c4ea2f6d))
* Search method map for existing class proxy ([a1e909b](a1e909b163))
* set index for insertAt to 0 by default ([d5b4c99](d5b4c99c00))
* set marklimit to Integer.MAX_VALUE ([e6e468f](e6e468fbb5))
* string signature in `SignatureResolver` ([e5ae970](e5ae970009))
* Suppress unused for addFiles ([3d6a1d3](3d6a1d38f3))
* throwing in case the opcode patterns do not match ([3144ec8](3144ec872a))
* use Array instead of Iterable for methodParameters ([dfac8f0](dfac8f03a3))
* using old instance of `Androlib` when saving ([a4d8be2](a4d8be20fc))
* workflow on dev branch ([428f7f4](428f7f4dec))
* write all classes ([f068fc8](f068fc87ff))

### Code Refactoring

* bump multidexlib2 to 2.5.2.r2 ([a6c6b49](a6c6b4979a))
* Change all references from Array to Iterable ([72f3cad](72f3cad3f9))
* convert Patch to abstract class ([cb9b1b9](cb9b1b9416))
* Optimize Signature class ([#11](https://github.com/revanced/revanced-patcher/issues/11)) ([7faa001](7faa001406))
* Rename `net.revanced` to `app.revanced` ([7087230](70872307e3))

### Features

* `Dependencies` annotation ([893d4c6](893d4c699b))
* `PatchLoader` ([ec9fd15](ec9fd15f9b))
* Add `findParentMethod` utility method ([#4](https://github.com/revanced/revanced-patcher/issues/4)) ([bbb2c54](bbb2c547aa))
* add `MethodWalker` ([7755bbc](7755bbc645))
* add `p` naming scheme to smali compiler ([79909cf](79909cf260))
* add extensions for cloning methods ([01bfbd6](01bfbd656e))
* add findClass method with className ([4087f49](4087f49863))
* Add first tests ([544bcf7](544bcf76bd))
* add fuzzy resolver ([7a56dca](7a56dca004))
* add immutableMethod ([c63b20f](c63b20fa65))
* add inline smali compiler ([bfe4e3e](bfe4e3e298))
* add missing test for fields ([6b8b057](6b8b0573d4))
* add or extension for AccessFlags ([00c85b5](00c85b5d75))
* Add patch metadata ([642e903](642e9031eb)), closes [ReVancedTeam/revanced-patches#1](https://github.com/ReVancedTeam/revanced-patches/issues/1)
* add SafeClassWriter ([6626014](6626014ef3))
* Add warnings for Fuzzy resolver ([715a2ad](715a2ad025))
* allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called ([1db735b](1db735b1e2))
* Allow unknown opcodes using `null` ([0e5f4ba](0e5f4ba2d5))
* Finish first patcher test ([0d8d19e](0d8d19e708))
* Improve `SignatureResolver` ([139a23b](139a23b750))
* migrate to `DexPatchBundle` and `JarPatchBundle` ([8615798](8615798711))
* migrate to dexlib ([3651981](3651981161))
* Minor refactor and return proxy, if class has been proxied already ([4b26305](4b26305bd5))
* optional `forStaticMethod` parameter for `InlineSmaliCompiler.compileMethodInstructions` ([41e8860](41e88605c3))
* patch dependencies annotation and `PatcherOptions` ([6c65952](6c65952d80))
* properly manage `ClassProxy` & add `ProxyBackedClassList` ([6cb1fdf](6cb1fdf617))
* remaining mutable `EncodedValue` classes ([3f97cc8](3f97cc8e1f))
* string signature ([#22](https://github.com/revanced/revanced-patcher/issues/22)) ([612515a](612515acf8))
* use annotations instead of metadata objects ([d20f7fd](d20f7fd6e1))
* utility functions to get metadata of patch & sigs ([54511a4](54511a4fc6))

### Performance Improvements

* check type instead of class ([c7ef264](c7ef2644d8))
* decode manifest only when not using resource patcher ([4f60bea](4f60bea81e))
* depend on `androlib` instead of `ApkDecoder` ([cc9416d](cc9416dd11))
* do not resolve empty signatures list ([b1eebc9](b1eebc99a7))
* lazy-ify all mutable clones ([d18a3b6](d18a3b6a28))
* optimize indexOf call away ([9991f39](9991f39c9a))
* use Set instead of List since there are no dupes ([e65ebd2](e65ebd27c2))
* use String List and compare instead of any lambda ([5bd416b](5bd416b409))

### Reverts

* AccessFlag extensions not working with IDE ([0bfb92a](0bfb92a0cb))
* previous commits check for dupes in dexFile, not cache ([e810197](e810197e2a))

### 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<Int> 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.
2022-06-05 06:10:56 +00:00

33 KiB

1.0.0 (2022-06-05)

Bug Fixes

  • compareSignatureToMethod not matching correctly in case opcodes are null (cca12aa)
  • ConcurrentModificationException while iterating through proxies 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 in MethodSignatureMetadata (4e56652)
  • make warnings nullable instead of lateinit (8f1a629)
  • match to correct signature method parameters (1ee2e4b)
  • MethodResolver: fix cd57a8c9a0 (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 to app.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 and JarPatchBundle (8615798)
  • migrate to dexlib (3651981)
  • Minor refactor and return proxy, if class has been proxied already (4b26305)
  • optional forStaticMethod parameter for InlineSmaliCompiler.compileMethodInstructions (41e8860)
  • patch dependencies annotation and PatcherOptions (6c65952)
  • properly manage ClassProxy & add ProxyBackedClassList (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 of ApkDecoder (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.

1.0.0-dev.18 (2022-06-04)

Features

  • Dependencies annotation (83d608a)
  • optional forStaticMethod parameter for InlineSmaliCompiler.compileMethodInstructions (28b9847)

1.0.0-dev.17 (2022-05-31)

Features

  • patch dependencies annotation and PatcherOptions (8442991)

1.0.0-dev.16 (2022-05-27)

Bug Fixes

  • JarPatchBundle loading non-class files to class loader (3f0c740)
  • remove dependency to fork of Apktool (0fa529f)

Features

  • migrate to DexPatchBundle and JarPatchBundle (7573db2)

1.0.0-dev.15 (2022-05-25)

Features

  • utility functions to get metadata of patch & sigs (72f16b7)

1.0.0-dev.14 (2022-05-24)

Bug Fixes

  • reformat (trigger release) (45a167e)

1.0.0-dev.13 (2022-05-24)

Performance Improvements

  • decode manifest only when not using resource patcher (40b1fa4)

1.0.0-dev.12 (2022-05-22)

Bug Fixes

  • using old instance of Androlib when saving (5630e49)

1.0.0-dev.11 (2022-05-22)

Features

  • PatchLoader (1a99eca)
  • use annotations instead of metadata objects (6726884)

1.0.0-dev.10 (2022-05-07)

Bug Fixes

  • qualifying Element with wrong package (4d74de4)

1.0.0-dev.9 (2022-05-07)

Bug Fixes

  • compareSignatureToMethod not matching correctly in case opcodes are null (5ae5e98)
  • ConcurrentModificationException while iterating through proxies and modifying it (bfeeaf4)
  • PackageMetadata (305a817)
  • replaceWith not replacing classes with used class proxies (f0f3403)
  • adding existing classes to the patchers cache (4281546)
  • always return PatchResultSuccess on patch success (866b03a)
  • applying no patches throwing error (f88c118)
  • applyPatches not returning successful patches (8b70bb4)
  • Classes not being written properly because of array shifting (1471956)
  • failing tests temporarily (66b08f8)
  • fix classes having multiple instances of fields (b711b80)
  • fix classes having multiple method instances (12c10d8)
  • Fixed writer & signature resolver, improved tests & speed, minor refactoring (bb42fa3)
  • fuzzy resolver warning params were turned around (d49df10)
  • incorrect pattern offset (03700ff)
  • make methodMetadata nullable in MethodSignatureMetadata (864e38c)
  • make warnings nullable instead of lateinit (04b49b8)
  • match to correct signature method parameters (c49071a)
  • MethodSignature#resolved throwing an exception (82b1e66)
  • Move proxy package out of cache package (6bc4e7e)
  • null check causing an exception (560c485)
  • Patcher not writing resolved methods (d15240d)
  • reaching all constructors not possible (37fa994)
  • remove leftover debug code (4458141)
  • return mutable set of classes (84bc7e0)
  • returning failure on success (3b68d5c)
  • Search method map for existing class proxy (d5e694c)
  • string signature in SignatureResolver (ac36d19)
  • Suppress unused for addFiles (a0d6d46)
  • throwing in case the opcode patterns do not match (f72dd68)
  • use Array instead of Iterable for methodParameters (312235b)
  • write all classes (6ad51aa)

Code Refactoring

  • bump multidexlib2 to 2.5.2.r2 (32e6458)
  • Change all references from Array to Iterable (264989f)

Features

  • add MethodWalker (659e108)
  • add p naming scheme to smali compiler (38556d6)
  • add extensions for cloning methods (df7503b)
  • add findClass method with className (78235d1)
  • Add first tests (6767c8f)
  • add fuzzy resolver (a492808)
  • add immutableMethod (eed1cfd)
  • add inline smali compiler (dbafe2a)
  • add missing test for fields (4022b8b)
  • add or extension for AccessFlags (aec5eeb)
  • Add patch metadata (8544fc4), closes ReVancedTeam/revanced-patches#1
  • Add warnings for Fuzzy resolver (643a14e)
  • allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called (5f71a34)
  • Allow unknown opcodes using null (f4a47d4)
  • Finish first patcher test (a9e4e8a)
  • Improve SignatureResolver (88a6a27)
  • migrate to dexlib (be51f42)
  • Minor refactor and return proxy, if class has been proxied already (2d3c611)
  • properly manage ClassProxy & add ProxyBackedClassList (2319787)
  • remaining mutable EncodedValue classes (7d38bb0)
  • string signature (#22) (c245edb)

Performance Improvements

  • depend on androlib instead of ApkDecoder (e5c054a)
  • do not resolve empty signatures list (1f7bf3a)
  • lazy-ify all mutable clones (05e4400)
  • optimize indexOf call away (f8e978a)
  • use Set instead of List since there are no dupes (6221387)
  • use String List and compare instead of any lambda (aed4fd9)

Reverts

  • AccessFlag extensions not working with IDE (e161f7f)
  • previous commits check for dupes in dexFile, not cache (433914f)

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

1.0.0-dev.8 (2022-03-24)

Performance Improvements

  • check type instead of class (47eb493)

1.0.0-dev.7 (2022-03-24)

Bug Fixes

1.0.0-dev.6 (2022-03-24)

Bug Fixes

  • MethodResolver: strip labels nodes so opcode patterns match (cd57a8c)

1.0.0-dev.5 (2022-03-24)

Bug Fixes

  • MethodResolver: strip labels and line numbers so opcode patterns match (8d1bb5f)

1.0.0-dev.4 (2022-03-23)

Bug Fixes

  • give ClassWriter a ClassReader for symtable (e8f6973)

1.0.0-dev.3 (2022-03-23)

Features

1.0.0-dev.2 (2022-03-23)

Bug Fixes

  • set marklimit to Integer.MAX_VALUE (ab6453c)

1.0.0-dev.1 (2022-03-23)

Bug Fixes

  • avoid ignoring test resources (fixes #1) (d5a3c76)
  • current must be calculated after increment (5f12bab)
  • gradle: publish source and javadocs (87bbde5)
  • Io: fix finding classes by name (460d62a)
  • Io: JAR loading and saving (#8) (4d98cbc)
  • nullable signature members (#10) (8db8893)
  • Patch should have access to the Cache (6c0f082)
  • remove broken code (0e72a6e)
  • set index for insertAt to 0 by default (1769132)
  • workflow on dev branch (7e67daf)

Code Refactoring

  • convert Patch to abstract class (23e897a)
  • Optimize Signature class (#11) (49beec9)
  • Rename net.revanced to app.revanced (3ab42a9)

Features

  • Add findParentMethod utility method (#4) (00c6ab7)

BREAKING CHANGES

  • 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.