Releases: uber/okbuck
Releases · uber/okbuck
v0.24.4
Enhancements
- Add alternative approach to deal with dependency conflicts in android apps (#490)
Provides an alternative way to force dependencies across all sub projects. This can be beneficial as gradle performance starts to degrade with many dependency substitution rules.
Consumers can now set forced versions of dependencies via
dependencies {
forcedOkbuck "com.foo:bar:1.0.0"
}
To force all sub projects to use 1.0.0 of com.foo:bar regardless of what they pull in transitively.
The okbuck wiki has been updated to reflect the same
v0.24.2
V0.24.0
Enhancements
Completely overhauled how dependencies are resolved and cached by okbuck (#482). Key changes are
- Okbuck now resolves every configuration individually and thus does not force using the highest dependency version across all subprojects. Individual projects can depend on different versions of any dependency now. This is mostly useful for apps that want to be on different versions of a dependency. Common/shared libraries between apps will still have to confirm to a common version that works for all apps.
- Classpaths used by buck for build/test are now exactly the same as what gradle uses for its tasks.
- Moved dependency cache creation logic from a single startup task to individual project
okbuck
tasks. This means operations like downloading dependencies, source jars, extraction of annotation processors, lint jars and proguard configs are all parallelized across subproject tasks. - Added the concept of a persistent
Store
to cache expensive operations like unzipping aars/jars to extract metadata and walking filetrees to determine source jars. This will help speed up subsequent okbuck runs till we can get fully incremental okbuck tasks. - Moved dependency validation (usage of snapshots etc.) towards the end of the okbuck lifecycle once all dependencies are materialized. This also makes the error messages more visible.
- Several other improvements to performance/documentation and code readability.
Bugfixes
- Made buckw agnostic of the directory it is run from (a1ccb54)
- Made java binary excludes work correctly (11fbab3)
Breaking Changes
Since okbuck no longer pins dependency versions to the highest version available across all sub projects, you may see some errors when building apps. Workarounds are documented on the wiki
V0.23.1
V0.23.0
Enhancements
- Added support for Scala libraries and tests (#475). The version of the scala compiler to us can be customized via the
okbuck.scala.version
extension option - Make application plugin support universal (#476). This means when the
application
plugin is applied to kotlin/groovy/scala projects etc. thejava_binary
rule is generated correctly. Previously it was only generated for java projects.
v0.22.4
Bugfixes
- Use relative path for merged proguard file to ensure hermetic builds when running proguard on different machines.
- Add logic to buckw to update buck and build it if needed (#469). Due to the changes in facebook/buck@bfa9171 buck no longer updates/builds itself. This ports the logic to buckw to preserve the ability to do so in a backward compatible manner.
Potential Breaking Changes
- Please update your
buckw
using./gradlew buckWrapper
to get the new fixes to the wrapper included in this release
V0.22.3
Enhancements
- Allow transform config to accept project dependencies (#466)
Potential Breaking Changes
- okbuck will now throw an exception if it detects a project type which it cannot process yet. Please use the
okbuck.buckProjects
extension option to exclude any project types that okbuck cannot process.
V0.22.2
V0.22.1
Enhancements
- Add option to exclude some resources from aapt (#455). This can speedup builds by excluding resource configs that are not useful for debug builds. This is similar to resConfigs
- Add support for Android Kotlin modules (#458)
- Add support for Mixed Kotlin/Java modules (#459)
Notes
- Mixed Kotlin/Java modules only work with kotlin 1.1.3 and above.
V0.21.0
Enhancements
- Added in memory kotlin compiler support. Incremental builds for kotlin modules are around 3~6x faster.
- Change how dependencies are resolved in preparation for Andrioid Gradle Plugin 3.x. This also improves okbuck performance on gradle versions 4.x and above (#451)
- Preserve any existing attributes in
<uses-sdk>
during manifest merging (#445)
Bugfixes
- Do not allow snapshot/dynamic dependencies in okbuck (#447)
- Fix target outputs for kotlin modules. This allows the output jars from kotlin modules to be consumed by other modules
- Switch the ordering of build config fields to match the behavior of the Android Gradle Plugin. (#449)
Potential Breaking Changes
- When using kotlin projects with okbuck, the minimum support version of kotlin is now
1.1.0
. You must also use.buckversion
of facebook/buck@800d5a9 or later to continue to build kotlin modules with buck correctly.