diff --git a/.github/workflows/build-workflow.yml b/.github/workflows/build-workflow.yml
index 277b20609..ac7c691f6 100644
--- a/.github/workflows/build-workflow.yml
+++ b/.github/workflows/build-workflow.yml
@@ -6,6 +6,11 @@ jobs:
env:
DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
steps:
+ - name: Configure JDK
+ uses: actions/setup-java@v2
+ with:
+ distribution: 'zulu'
+ java-version: 17
- name: Checkout the code
uses: actions/checkout@v2
- name: Install Ruby
@@ -42,6 +47,11 @@ jobs:
assemble_samples:
runs-on: ubuntu-latest
steps:
+ - name: Configure JDK
+ uses: actions/setup-java@v2
+ with:
+ distribution: 'zulu'
+ java-version: 17
- name: Checkout the code
uses: actions/checkout@v2
- name: Assemble Counter
diff --git a/build.gradle b/build.gradle
index f523b842b..6616c6950 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,7 +3,7 @@ apply plugin: "com.github.ben-manes.versions"
buildscript {
ext {
- kotlinVersion = '1.5.21'
+ kotlinVersion = '1.8.10'
versions = [:]
libraries = [:]
@@ -21,11 +21,13 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.0.2'
+ classpath 'com.android.tools.build:gradle:8.0.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
- classpath "com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0"
+ // We need to fork the plugin to fix an incorrect usage of tasks.withType(Test)
+ // https://github.com/vanniktech/gradle-android-junit-jacoco-plugin/compare/master...Laimiux:gradle-android-junit-jacoco-plugin:laimonas/gradle-8?expand=1
+ classpath("com.github.Jawnnypoo:gradle-android-junit-jacoco-plugin:61a9cc0129")
classpath "com.github.ben-manes:gradle-versions-plugin:0.38.0"
- classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.4.32"
+ classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.8.10"
classpath "org.jetbrains.dokka:android-documentation-plugin:1.4.32"
classpath "com.vanniktech:gradle-maven-publish-plugin:0.14.2"
}
@@ -57,8 +59,7 @@ task clean(type: Delete) {
apply plugin: "com.vanniktech.android.junit.jacoco"
junitJacoco {
- // WARNING! Don't upgrade unless https://github.com/Malinskiy/danger-jacoco/issues/10 is fixed
- jacocoVersion = '0.8.2'
+ jacocoVersion = '0.8.8'
excludes = [
// Defaults
'**/androidx/**/*.*',
diff --git a/dependencies.gradle b/dependencies.gradle
index 8e3513438..fb0261dd4 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -12,7 +12,7 @@ ext {
okhttpVersion = "3.13.1"
robolectricVersion = "4.6.1"
truthVersion = "1.1.3"
- composeVersion = "1.0.1"
+ composeVersion = "1.4.3"
kotlinCoroutinesVersion = "1.5.2"
lintVersion = "30.0.0"
autoServiceVersion = "1.0-rc7"
@@ -80,7 +80,7 @@ ext {
tests: "com.android.tools.lint:lint-tests:${lintVersion}",
],
robolectric : "org.robolectric:robolectric:$robolectricVersion",
- rxjava : "io.reactivex.rxjava3:rxjava:3.1.1",
+ rxjava : "io.reactivex.rxjava3:rxjava:3.1.6",
rxandroid : "io.reactivex.rxjava3:rxandroid:3.0.0",
rxrelays : "com.jakewharton.rxrelay3:rxrelay:3.0.1",
truth : "com.google.truth:truth:$truthVersion",
diff --git a/formula-android-compose/build.gradle b/formula-android-compose/build.gradle
index b6d41b71c..9f7e9409b 100644
--- a/formula-android-compose/build.gradle
+++ b/formula-android-compose/build.gradle
@@ -5,6 +5,7 @@ apply from: rootProject.file('.buildscript/configure-signing.gradle')
apply from: rootProject.file('.buildscript/jacoco-workaround.gradle')
android {
+ namespace "com.instacart.formula.android.compose"
compileSdkVersion constants.compileSdk
defaultConfig {
@@ -17,13 +18,12 @@ android {
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
- jvmTarget = "1.8"
- useIR = true
+ jvmTarget = JavaVersion.VERSION_11.toString()
}
composeOptions {
@@ -35,7 +35,7 @@ android {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
- jvmTarget = "1.8"
+ jvmTarget = JavaVersion.VERSION_11.toString()
}
}
diff --git a/formula-android-compose/src/main/AndroidManifest.xml b/formula-android-compose/src/main/AndroidManifest.xml
index 42519c3f1..cc947c567 100644
--- a/formula-android-compose/src/main/AndroidManifest.xml
+++ b/formula-android-compose/src/main/AndroidManifest.xml
@@ -1 +1 @@
-
+
diff --git a/formula-android-compose/src/main/java/com/instacart/formula/android/compose/ComposeViewFactory.kt b/formula-android-compose/src/main/java/com/instacart/formula/android/compose/ComposeViewFactory.kt
index 973115c2b..8e96b4690 100644
--- a/formula-android-compose/src/main/java/com/instacart/formula/android/compose/ComposeViewFactory.kt
+++ b/formula-android-compose/src/main/java/com/instacart/formula/android/compose/ComposeViewFactory.kt
@@ -9,7 +9,7 @@ import com.instacart.formula.android.FeatureView
import com.instacart.formula.android.ViewFactory
-abstract class ComposeViewFactory : ViewFactory {
+abstract class ComposeViewFactory : ViewFactory {
override fun create(inflater: LayoutInflater, container: ViewGroup?): FeatureView {
val view = ComposeView(inflater.context)
diff --git a/formula-android-tests/build.gradle b/formula-android-tests/build.gradle
index f7219c590..6fb789607 100644
--- a/formula-android-tests/build.gradle
+++ b/formula-android-tests/build.gradle
@@ -5,6 +5,7 @@ apply plugin: "kotlin-parcelize"
apply from: rootProject.file('.buildscript/jacoco-workaround.gradle')
android {
+ namespace "com.instacart.formula"
compileSdkVersion 28
defaultConfig {
applicationId "com.instacart.formula.samples"
@@ -16,8 +17,8 @@ android {
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
}
buildTypes {
@@ -36,7 +37,7 @@ android {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
- jvmTarget = "1.8"
+ jvmTarget = JavaVersion.VERSION_11.toString()
}
}
diff --git a/formula-android-tests/src/main/AndroidManifest.xml b/formula-android-tests/src/main/AndroidManifest.xml
index 4ff543a83..c48ff6712 100644
--- a/formula-android-tests/src/main/AndroidManifest.xml
+++ b/formula-android-tests/src/main/AndroidManifest.xml
@@ -1,5 +1,4 @@
-
+
+
diff --git a/formula-android/src/main/java/com/instacart/formula/android/FeatureView.kt b/formula-android/src/main/java/com/instacart/formula/android/FeatureView.kt
index e491b2a13..33abc7df4 100644
--- a/formula-android/src/main/java/com/instacart/formula/android/FeatureView.kt
+++ b/formula-android/src/main/java/com/instacart/formula/android/FeatureView.kt
@@ -16,12 +16,12 @@ import io.reactivex.rxjava3.core.Observable
* @param bind A bind function connects state observable to the view rendering.
* @param lifecycleCallbacks Optional lifecycle callbacks if you need to know the Fragment state.
*/
-class FeatureView(
+class FeatureView(
val view: View,
val bind: (State) -> Cancelable?,
val lifecycleCallbacks: FragmentLifecycleCallback? = null,
) {
- class State(
+ class State(
val observable: Observable,
val onError: (Throwable) -> Unit,
)
diff --git a/formula-android/src/main/java/com/instacart/formula/android/LayoutViewFactory.kt b/formula-android/src/main/java/com/instacart/formula/android/LayoutViewFactory.kt
index 07f843d9c..2b1f101a1 100644
--- a/formula-android/src/main/java/com/instacart/formula/android/LayoutViewFactory.kt
+++ b/formula-android/src/main/java/com/instacart/formula/android/LayoutViewFactory.kt
@@ -28,7 +28,7 @@ import com.instacart.formula.android.views.InflatedViewInstance
* }
* ```
*/
-abstract class LayoutViewFactory(@LayoutRes val layoutId: Int): ViewFactory {
+abstract class LayoutViewFactory(@LayoutRes val layoutId: Int): ViewFactory {
abstract fun ViewInstance.create(): FeatureView
diff --git a/formula-android/src/main/java/com/instacart/formula/android/ViewFactory.kt b/formula-android/src/main/java/com/instacart/formula/android/ViewFactory.kt
index d334dbc3a..1764dff5d 100644
--- a/formula-android/src/main/java/com/instacart/formula/android/ViewFactory.kt
+++ b/formula-android/src/main/java/com/instacart/formula/android/ViewFactory.kt
@@ -12,7 +12,7 @@ import com.instacart.formula.android.views.DelegateLayoutViewFactory
*
* To create a view factory, use static constructor [fromLayout] or extend [LayoutViewFactory].
*/
-fun interface ViewFactory {
+fun interface ViewFactory {
companion object {
/**
@@ -37,7 +37,7 @@ fun interface ViewFactory {
* @param layoutId Layout resource to be inflated.
* @param createView Called with a [ViewInstance] to finish [FeatureView] creation
*/
- fun fromLayout(
+ fun fromLayout(
@LayoutRes layoutId: Int,
createView: ViewInstance.() -> FeatureView
): ViewFactory {
diff --git a/formula-android/src/main/java/com/instacart/formula/android/ViewInstance.kt b/formula-android/src/main/java/com/instacart/formula/android/ViewInstance.kt
index 2123b9393..da7932828 100644
--- a/formula-android/src/main/java/com/instacart/formula/android/ViewInstance.kt
+++ b/formula-android/src/main/java/com/instacart/formula/android/ViewInstance.kt
@@ -19,7 +19,7 @@ abstract class ViewInstance {
/**
* Creates a [FeatureView] from a [render] function
*/
- fun featureView(
+ fun featureView(
lifecycleCallbacks: FragmentLifecycleCallback? = null,
render: (RenderModel) -> Unit
): FeatureView {
@@ -31,7 +31,7 @@ abstract class ViewInstance {
/**
* Creates a [FeatureView] from a [Renderer].
*/
- fun featureView(
+ fun featureView(
renderer: Renderer,
lifecycleCallbacks: FragmentLifecycleCallback? = null,
): FeatureView {
@@ -45,7 +45,7 @@ abstract class ViewInstance {
/**
* Creates a [FeatureView] from a [RenderView].
*/
- fun featureView(
+ fun featureView(
renderView: RenderView,
lifecycleCallbacks: FragmentLifecycleCallback? = null,
): FeatureView {
diff --git a/formula-android/src/main/java/com/instacart/formula/android/views/DelegateLayoutViewFactory.kt b/formula-android/src/main/java/com/instacart/formula/android/views/DelegateLayoutViewFactory.kt
index ac7fc3c7f..92fde0cc6 100644
--- a/formula-android/src/main/java/com/instacart/formula/android/views/DelegateLayoutViewFactory.kt
+++ b/formula-android/src/main/java/com/instacart/formula/android/views/DelegateLayoutViewFactory.kt
@@ -8,7 +8,7 @@ import com.instacart.formula.android.ViewInstance
/**
* An implementation of [LayoutViewFactory] which delegates [FeatureView] creation to [createView].
*/
-internal class DelegateLayoutViewFactory(
+internal class DelegateLayoutViewFactory(
@LayoutRes layoutId: Int,
private val createView: ViewInstance.() -> FeatureView
) : LayoutViewFactory(layoutId) {
diff --git a/formula-android/src/main/java/com/instacart/formula/android/views/FeatureViewBindFunction.kt b/formula-android/src/main/java/com/instacart/formula/android/views/FeatureViewBindFunction.kt
index c452ee173..ea8c05539 100644
--- a/formula-android/src/main/java/com/instacart/formula/android/views/FeatureViewBindFunction.kt
+++ b/formula-android/src/main/java/com/instacart/formula/android/views/FeatureViewBindFunction.kt
@@ -8,7 +8,7 @@ import java.lang.Exception
/**
* Binds [FeatureView.State] to a [render] function.
*/
-internal class FeatureViewBindFunction(
+internal class FeatureViewBindFunction(
private val render: Renderer
) : (FeatureView.State) -> Cancelable? {
override fun invoke(state: FeatureView.State): Cancelable {
diff --git a/formula-android/src/test/java/com/instacart/formula/android/fakes/NoOpViewFactory.kt b/formula-android/src/test/java/com/instacart/formula/android/fakes/NoOpViewFactory.kt
index 61832e947..9b8f3ac8a 100644
--- a/formula-android/src/test/java/com/instacart/formula/android/fakes/NoOpViewFactory.kt
+++ b/formula-android/src/test/java/com/instacart/formula/android/fakes/NoOpViewFactory.kt
@@ -4,7 +4,7 @@ import com.instacart.formula.android.FeatureView
import com.instacart.formula.android.LayoutViewFactory
import com.instacart.formula.android.ViewInstance
-class NoOpViewFactory : LayoutViewFactory(-1) {
+class NoOpViewFactory : LayoutViewFactory(-1) {
override fun ViewInstance.create(): FeatureView {
return featureView { }
}
diff --git a/formula-coroutines/build.gradle b/formula-coroutines/build.gradle
index dc504511b..42e5517e1 100644
--- a/formula-coroutines/build.gradle
+++ b/formula-coroutines/build.gradle
@@ -4,8 +4,8 @@ plugins {
}
java {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
}
dependencies {
@@ -22,6 +22,7 @@ dependencies {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_11.toString()
freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
}
}
\ No newline at end of file
diff --git a/formula-lint/build.gradle b/formula-lint/build.gradle
index 90e545791..6e9c04127 100644
--- a/formula-lint/build.gradle
+++ b/formula-lint/build.gradle
@@ -6,8 +6,8 @@ apply plugin: 'org.jetbrains.dokka'
apply from: rootProject.file('.buildscript/configure-signing.gradle')
-targetCompatibility = JavaVersion.VERSION_1_8
-sourceCompatibility = JavaVersion.VERSION_1_8
+targetCompatibility = JavaVersion.VERSION_11
+sourceCompatibility = JavaVersion.VERSION_11
dependencies {
compileOnly libraries.lint.api
diff --git a/formula-rxjava3/build.gradle b/formula-rxjava3/build.gradle
index 4a272b87b..3088dce4f 100644
--- a/formula-rxjava3/build.gradle
+++ b/formula-rxjava3/build.gradle
@@ -8,13 +8,13 @@ repositories {
}
tasks.withType(JavaCompile) {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
- jvmTarget = "1.8"
+ jvmTarget = JavaVersion.VERSION_11.toString()
}
}
diff --git a/formula-test/build.gradle b/formula-test/build.gradle
index 0dda0fe04..0564f10d2 100644
--- a/formula-test/build.gradle
+++ b/formula-test/build.gradle
@@ -3,8 +3,8 @@ apply plugin: 'org.jetbrains.dokka'
apply from: rootProject.file('.buildscript/configure-signing.gradle')
-sourceCompatibility = 1.8 // java 8
-targetCompatibility = 1.8
+sourceCompatibility = JavaVersion.VERSION_11
+targetCompatibility = JavaVersion.VERSION_11
repositories {
mavenCentral()
@@ -12,7 +12,7 @@ repositories {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
- jvmTarget = "1.8"
+ jvmTarget = JavaVersion.VERSION_11.toString()
}
}
diff --git a/formula/build.gradle b/formula/build.gradle
index 7213e6588..cf67502d9 100644
--- a/formula/build.gradle
+++ b/formula/build.gradle
@@ -8,13 +8,13 @@ repositories {
}
tasks.withType(JavaCompile) {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
- jvmTarget = "1.8"
+ jvmTarget = JavaVersion.VERSION_11.toString()
}
}
diff --git a/gradle/merge-reports.gradle b/gradle/merge-reports.gradle
index 4b20b16d5..3aa6c075d 100644
--- a/gradle/merge-reports.gradle
+++ b/gradle/merge-reports.gradle
@@ -24,7 +24,7 @@ afterEvaluate {
}
task mergeReports(type: Copy) {
- from { testTasks*.reports.junitXml.destination } {
+ from { file("$buildDir/test-results") } {
exclude("**/binary/*")
}
into { file("$buildDir/reports/allTests") }
@@ -39,7 +39,7 @@ def disableHtmlTestReport(Project project) {
project.android {
testOptions {
unitTests.all {
- reports.html.enabled = false
+ reports.html.required = false
}
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 29e413457..1f017e4ee 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/samples/composition/build.gradle b/samples/composition/build.gradle
index 33edd4593..6ec628243 100644
--- a/samples/composition/build.gradle
+++ b/samples/composition/build.gradle
@@ -3,6 +3,7 @@ apply plugin: 'kotlin-android'
apply plugin: "kotlin-parcelize"
android {
+ namespace "com.instacart.formula.samples.composition"
compileSdkVersion constants.compileSdk
defaultConfig {
applicationId "com.instacart.formula.samples.composition"
@@ -14,8 +15,8 @@ android {
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
}
buildTypes {
@@ -34,7 +35,7 @@ android {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
- jvmTarget = "1.8"
+ jvmTarget = JavaVersion.VERSION_11.toString()
}
}
diff --git a/samples/composition/src/main/AndroidManifest.xml b/samples/composition/src/main/AndroidManifest.xml
index 5c78cc3da..45a0419db 100644
--- a/samples/composition/src/main/AndroidManifest.xml
+++ b/samples/composition/src/main/AndroidManifest.xml
@@ -1,5 +1,4 @@
-
+
+
+
+
+
+
+