Changelog History
Page 1
-
v10.2.3 Changes
August 12, 2020Heads up: Development on this tool is winding down as view binding is stable in AS/AGP 3.6+.
- Fix: Support receiving
MotionEvent
in an@OnTouch
callback when using 'butterknife-reflect'.
- Fix: Support receiving
-
v10.2.2 Changes
August 03, 2020Heads up: Development on this tool is winding down as view binding is stable in AS/AGP 3.6+.
- Fix: Views detached while processing click callbacks will no longer disable future clicks on other views.
-
v10.2.1 Changes
December 19, 2019Heads up: Development on this tool is winding down as view binding will be stable in AS/AGP 3.6.
- New: Make R2-generating Gradle task cacheable by default.
- Fix: R2 classes now generate their own unique values for entries. This ensures that the annotation processor
can always do a reverse mapping from ID back to name and type. In AGP 3.6.0, the
R.txt
symbol table that was previously used as a source for values now uses 0 for every entry which required this change. - Fix: Lint check for R2 values now properly handles static imports for entries.
-
v10.2.0 Changes
September 12, 2019- New: Support incremental annotation processing.
- Fix: Detect generated superclass bindings across compilation units.
- Fix: Avoid deprecated APIs from the Android Gradle plugin. As a result, the new minimum supported version of the Android Gradle plugin is 3.3.
-
v10.1.0 Changes
February 13, 2019- New: Listeners which require return values (e.g., long click) can now be bound to methods returning
void
. The default value oftrue
will be returned in this case. - New: Add support for
@OnTextChanged
and@OnPageChange
to reflection backend. - Remove enforcement of required views in the reflection backend. Most
@Nullable
annotations do not have runtime retention so they can't be checked at runtime with reflection. Instead of forcing everyone to find a new annotation, this enforcement is now dropped. While this might lead to nulls in otherwise required view bindings, they'll either be unused or quickly cause aNullPointerException
.
- New: Listeners which require return values (e.g., long click) can now be bound to methods returning
-
v10.0.0 Changes
January 03, 2019- Equivalent to 9.0.0 but only supports AndroidX-enabled builds.
- Removed APIs deprecated in 9.0.0.
-
v9.0.0 Changes
January 03, 2019New: Support for AndroidX. Requires
android.useAndroidX=true
ingradle.properties
to generate AndroidX code.New: A
butterknife-runtime
artifact has been extracted frombutterknife
which contains the APIs required for the generated code but does not contain the code to reflectively look up the generated code. This allows you to reference the generated code directly such that R8/ProGuard optimization can rename both the generated code and your classes.ButterKnife.bind
and the consumer R8/ProGuard rules remain in the oldbutterknife
artifact.New: Experimental
butterknife-reflect
artifact eliminates the need to run the annotation processor for IDE builds. This artifact is binary compatible withbutterknife
so it can be interchanged depending on how your build is being invoked. See [its README](butterknife-reflect/README.md) for more information. Currently about 90% of functionality is covered. File bugs for anything that does not work.
Note: This artifact requires Java 8. There's no good reason for this except to push the ecosystem to having this be a default. As of AGP 3.2 there is no reason not to do this.
New: Lint checks have been ported to UAST and now work on Kotlin code.
Helpers such as
apply
have been deprecated onButterKnife
and are now available on theViewCollections
class.Add support for Android Gradle plugin 3.3 and newer where
R
is no longer generated as Java source. This has a side-effect of removing support for Android Gradle plugin 3.0.x (and older).Use Java 8 bytecode for all artifacts as announced in RC1 release notes.
Fix: Allow
@BindFont
to work prior to API 26 usingResourcesCompat
.Fix: Update Android Gradle plugin to 3.1 or newer to fix binary incompatibilities.
Fix: Correct generated resource annotation names when running Turkish locale.
Fix: Use the application ID instead of the resource package for generating
R2
.Cache the fact that a class hierarchy has no remaining bindings to prevent traversing the hierarchy multiple times.
Deprecated methods from 8.x have been removed.
-
v9.0.0-rc3 Changes
December 20, 2018- Fix: Correct generated resource annotation names when running Turkish locale.
- Cache the fact that a class hierarchy has no remaining bindings to prevent traversing the hierarchy multiple times.
-
v9.0.0-rc2 Changes
November 19, 2018- Add support for Android Gradle plugin 3.3 and newer where
R
is no longer generated as Java source. This has a side-effect of removing support for Android Gradle plugin 3.0.x (and older). - Use Java 8 bytecode for all artifacts as announced in RC1 release notes.
- Add support for Android Gradle plugin 3.3 and newer where
-
v9.0.0-rc1 Changes
October 10, 2018New: Support for AndroidX. Requires
android.useAndroidX=true
ingradle.properties
to generate AndroidX code.New: A
butterknife-runtime
artifact has been extracted frombutterknife
which contains the APIs required for the generated code but does not contain the code to reflectively look up the generated code. This allows you to reference the generated code directly such that R8/ProGuard optimization can rename both the generated code and your classes.ButterKnife.bind
and the consumer R8/ProGuard rules remain in the oldbutterknife
artifact.New: Experimental
butterknife-reflect
artifact eliminates the need to run the annotation processor for IDE builds. This artifact is binary compatible withbutterknife
so it can be interchanged depending on how your build is being invoked. See [its README](butterknife-reflect/README.md) for more information. Currently about 90% of functionality is covered. File bugs for anything that does not work.
Note: This artifact requires Java 8. There's no good reason for this except to push the ecosystem to having this be a default. As of AGP 3.2 there is no reason not to do this.
New: Lint checks have been ported to UAST and now work on Kotlin code.
Fix: Allow
@BindFont
to work prior to API 26 usingResourcesCompat
.Fix: Update Android Gradle plugin to 3.1 or newer to fix binary incompatibilities.
Fix: Use the application ID instead of the resource package for generating
R2
.Deprecated methods from 8.x have been removed.
๐ Note: The next release candidate will switch all artifacts to require Java 8 bytecode which will force your applications to enable Java 8 bytecode. As of AGP 3.2 there is no cost to this, and there is no reason to have it set any lower.