Skip to content

Releases: uber/okbuck

v0.37.1

20 Apr 00:03
Compare
Choose a tag to compare

Bugfixes

  • Initialize IntelliJ & Experimental extensions with default ones. (#634). Fixes #633

v0.37.0

19 Apr 07:20
Compare
Choose a tag to compare

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

v0.36.0

09 Apr 22:51
Compare
Choose a tag to compare

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 to androidTest 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

02 Apr 18:40
Compare
Choose a tag to compare

Enhancements

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

01 Mar 05:06
Compare
Choose a tag to compare

Enhancements

  • Update gradle to 4.6 and use built in annotationProcessor configuration (#593)
    Okbuck now uses the annotationProcessor configuration that is available with Gradle version 4.6 for java-library projects to declare annotation processor dependencies.

  • Use classpath_abi macro instead of classpath in lint genrule. (#590)
    Okbuck supports generating lint 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 the buckWrapper 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 change apt to annotationProcessor in java projects to continue using okbuck
  • Use of classpath_abi for lint requires buck version facebook/buck@89681a5 or later

v0.33.0

17 Feb 17:43
Compare
Choose a tag to compare

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 and api / implementation configurations. It is recommended to switch from the deprecated compile 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 (like 9.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 till 9.0.0 is released.

v0.32.2

26 Jan 22:00
Compare
Choose a tag to compare

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

20 Dec 18:17
Compare
Choose a tag to compare

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

13 Dec 06:06
Compare
Choose a tag to compare

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

  • Do not use manifest_skeleton for instrumentation apk rules (9412088)
  • Set package_type in android_binary rules (9994d90). Thie ensures the DEBUG constant in the apk's BuildConfig is generated correctly

v0.31.0

20 Nov 16:59
Compare
Choose a tag to compare

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.