Releases: uber/okbuck
v0.37.1
v0.37.0
Enhancements
- Add support for artifact classifiers (#625)
- Remove classpath macro and make classpath_abi the default for lint (#629)
- Add support for java_annotation_processor rule. (#626)
java_annotation_processor rule allows to share classloaders across different runs for improved build times.
Generates processors rules in .okbuck/cache/processor/BUCK
file.
Build rules gets populated with plugins
parameter instead of annotation_processors
.
Enable using the experimental extension:
okuck {
experimental {
useAnnotationProcessorPlugin = true
}
}
Bugfixes
- Check for configuration's nullability before returning annotation processor (#628)
- Fix issue with functional interface that extends Serializable (#631)
Potential Breaking Changes
- If using the new annotation processor support, please use buck version facebook/buck@0326459 or later
v0.36.0
Enhancements
- Only get annotation processor classes from the configuration’s first level dependencies. This is to enable the upcoming work to migrate okbuck over to the new annotation processor format in buck (#617)
- Android libraries instrumentation apks. Okbuck now supports generating instrumentation test apk targets for android libraries (only apps were supported before) (#616). This is disabled by default and can be enabled via okbuck extension options
okbuck {
test {
espressoForLibraries = true
}
}
- A lot of code has been migrated from groovy to java for better performance (#329)
Bugfixes
- Make sdk types a string to allow values like 'P' (#624)
Breaking Changes
- If there were annotation processors that were picked up transitively before, they will need to be declared explicitly now for okbuck to generate them into the buck files.
- Dependencies in the
test
configurations no longer carry over toandroidTest
configurations when buck files are generated - Remove default aliases. Default aliases just for android apps does not make sense anymore since okbuck caters to more than just android projects now. There was also chance for conflicting with user generated aliases, so this functionality is being removed (#620)
v0.35.0
Enhancements
- Update Android Gradle Plugin to 3.1.0
- Enable kapt support (#604) (Thanks @thalescm @cwoodwar6 @runningcode)!
Bugfixes
- Pickup all resource dirs for java and android targets (#612)
Breaking Changes
- If using robolectric, this version of okbuck will only be compatible with robolectric v3.8 or higher
v0.34.1
Enhancements
-
Update gradle to 4.6 and use built in annotationProcessor configuration (#593)
Okbuck now uses theannotationProcessor
configuration that is available with Gradle version 4.6 forjava-library
projects to declare annotation processor dependencies. -
Use
classpath_abi
macro instead of classpath in lint genrule. (#590)
Okbuck supports generatinglint
genrules with abi jars (facebook/buck#1780). Android lint only depends on the dependency abis so it will not run the lint checks again if the dependency abis do not change. You can enable this behavior with
okbuck {
experimental {
lintWithClasspathAbi = true
}
}
Enabling this option will improve lint build times and also reduce the number of times the lint rules need to be re-run when changing code.
Bugfixes
-
Fix watchman config default ignores. (#586)
The comma at the end was causing watchman to silently ignore the config. To get this fix, remove the.watchmanconfig
file from your project root and re-run thebuckWrapper
task via./gradlew :buckWrapper
. You can also edit the file manually to remove any trailing commas from the last element -
Fix buckBinary configuration name: _ to CamelCase. (#589)
Breaking Changes
apt
is no longer supported as a configuration in java projects. This is so as to have a consistent way of declaring annotation processor dependencies across java and android projects. If you use annotation processors in java projects, you need to upgrade gradle to 4.6 and changeapt
toannotationProcessor
in java projects to continue using okbuck- Use of
classpath_abi
for lint requires buck version facebook/buck@89681a5 or later
v0.33.0
Enhancements
- Okbuck now supports Android Gradle Plugin version 3.1.x and higher. This is a major refactor. There is no compatibility with 3.0.x versions as some apis used by okbuck were internal in those releases. (#568)
- Okbuck correctly processes
java-library
projects andapi
/implementation
configurations. It is recommended to switch from the deprecatedcompile
configurations. - Flavor dimensions for android projects are supported now.
Breaking Changes
- Okbuck is no longer compatible with Android Gradle plugin versions < 3.1.x . If you need okbuck support for those projects, please use an older version (v0.32.2) of okbuck.
- Projects using buttkernife gradle plugin will need to use a snapshot version since there is no official release yet for the
9.0.0
version. It is recommended to use a named snapshot version (like9.0.0-20180212.024336-29
) to avoid issues with buck build caching. Only the gradle plugin needs to be updated. The versions of butterknife and butterknife compiler can unchanged till9.0.0
is released.
v0.32.2
Enhancements
- okbuck now uses prebuilt buck binaries (#579) from jitpack added as part of facebook/buck#1712 . This means okbuck will no longer build buck locally on the machine and will also not require
ant
to be installed. This should lead to faster updates and quicker switching between buck versions. - The version of buck to use can be customized via the okbuck extension like
okbuck {
buckBinary = "com.github.facebook:buck:26845eb89ba4464586787533d08984a993f247d4@pex"
}
- To download buck from a fork on github, you can change the maven coords appropriately. For example, for a fork at https://github.com/kageiit/buck one may use
"com.github.kageiit:buck:26845eb89ba4464586787533d08984a993f247d4@pex"
- If your fork is not on github, you can still configure okbuck to download prebuilt buck binaries from your maven server like so in your root
build.gradle
(you will have to manage uploading binaries to your maven server via your own infra as repos not on github are not visible to jitpack)
okbuck {
buckBinary = null
}
repositories {
maven { url <your-custom-maven-or-artifactory-url> }
}
dependencies {
buckBinary "com.example:buck:26845eb89ba4464586787533d08984a993f247d4@pex"
}
Bugfixes
- Added missing dependencies and annotation processor dependencies to exo app lib rule (#566)
- Add better error message when not defining a repositories block (#574)
- Change changing versions dependency check to be more accurate and less agressive (#577)
- Update gradle to 4.5 and stop relying on internal logic for sources (#578)
- Add better error messages for unsupported proguard configurations (#575)
Potential Breaking Changes
- Please regenerate your
buckw
wrapper script via./gradlew :buckWrapper
after upgrading okbuck as the previous version of the wrapper is no longer compatible with this release. - Okbuck will automatically add jitpack as a remote repository on the root project to fetch prebuilt buck binaries. The very first time a version is pulled, it can take a few minutes to build buck on jitpack, so you may experience timeouts fetching the binary. Just retry and from every next time, the artifact would be cached and served by jitpack as usual.
v0.32.0
Enhancements
- Cleanup buckw and make some usability improvements (#564). This update to
buckw
gracefully handles cases like watchman queries timing out locally. It also sets the foreground color instead of background now to make it more visible on terminals with different background colors. Please regenrate your buck wrapper with./gradlew :buckWrapper
to get the latest wrapper. - Update to support robolectric 3.6 (#565)
Breaking Changes
- Update to robolectric 3.6 support may not be backwards compatible with older versions of robolectric when running tests since the runtime components have changed.
V0.31.6
Enhancements
- Output lint reports only if it fails (e1ea872)
- Move okbuck to generate modern manifest skeleton based android_binary rules (#560)
- Add ability to customize kotlin version independent of classpath dependencies (51d6be5)
- Do not generate lint rules for instrumentation sources (d38c68d)
Bugfixes
v0.31.0
Enhancements
- Only use apt configuration for java project annotation processors (#557)
Potential Breaking Changes
Check your annotation processor dependency configuration in java modules.
Before this change, okbuck would pickup APs from the compileOnly
configuration that can cause processor dependencies to pollute the classpath of java projects (unlike android projects that separate the provided
and annotationProcessor
configurations). This would cause discrepancies in the buck and gradle builds.
This changes the behavior of okbuck to only pickup processors from the apt
/testApt
configurations for java projects. Android project behavior is unchanged.
You may use plugins like https://github.com/tbroyer/gradle-apt-plugin to easily gain access to the apt
configurations for java projects.