Skip to content

Commit

Permalink
Update build scripts; add android library gradle setup; fix jvmTest; …
Browse files Browse the repository at this point in the history
…update readme
  • Loading branch information
Tetraquark committed Mar 17, 2020
1 parent d4a8bf6 commit 1ca8744
Show file tree
Hide file tree
Showing 8 changed files with 89 additions and 21 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,5 @@ freeline_project_description.json
Pods
xcuserdata
*.generated.swift

publish.gradle.kts
41 changes: 32 additions & 9 deletions MyersDiffKt/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,18 +1,40 @@
plugins {
id("com.android.library")
kotlin("multiplatform")
id("maven-publish")
}

group = "ru.tetraquark.kmplibs.myersdiffkt"
group = "ru.tetraquark.kmplibs"
version = Versions.MyersDiffKt

android {
compileSdkVersion(Versions.compileSdkVersion)
buildToolsVersion = Versions.buildToolsVersion

defaultConfig {
minSdkVersion(Versions.minSdkVersion)
targetSdkVersion(Versions.targetSdkVersion)

versionCode = 1
versionName = Versions.MyersDiffKt
}

sourceSets.forEach {
it.manifest.srcFile("src/androidMain/AndroidManifest.xml")
}

packagingOptions {
exclude("META-INF/*.kotlin_module")
}
}

kotlin {

jvm {
withJava()
android {
publishLibraryVariants("release", "debug")
}
jvm()
macosX64()
iosArm32()
iosArm64()
iosX64()

Expand All @@ -28,18 +50,19 @@ kotlin {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:${Versions.coroutines}")
}
}
val jvmMain by getting {
val androidMain by getting {
dependencies {
implementation(kotlin("stdlib"))
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutines}")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutines}")
}
}
val macosX64Main by getting {
val jvmMain by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-native:${Versions.coroutines}")
implementation(kotlin("stdlib"))
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutines}")
}
}
val iosArm32Main by getting {
val macosX64Main by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-native:${Versions.coroutines}")
}
Expand Down
2 changes: 2 additions & 0 deletions MyersDiffKt/src/androidMain/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="ru.tetraquark.kmplibs.myersdiffkt" />
35 changes: 32 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,43 @@
## MyersDiffKt

[ ![Download](https://api.bintray.com/packages/tetraquark/kmplibs/MyersDiffKt/images/download.svg) ](https://bintray.com/tetraquark/kmplibs/MyersDiffKt/_latestVersion)

Kotlin Multiplatform library implements iterative Myers algorithm for diff calculations without the second pass for moves detection.

The algorithm is implemented in common source set, so it can be used in any supported platform.

The main part of the algorithm implementation is rewritten to Kotlin from the Android Java library - [DiffUtil](https://developer.android.com/reference/android/support/v7/util/DiffUtil).

### Use example
### Versions

Library version | Kotlin version
------------ | -------------
1.0.0 | 1.3.61

## Setup

1. In **settings.gradle**:
```
enableFeaturePreview("GRADLE_METADATA")
```

2. In root **build.gradle** add the maven repository url:
```
allprojects {
repositories {
maven { url "https://dl.bintray.com/tetraquark/kmplibs" }
}
}
```

3. In a project **build.gradle**:
```
dependencies {
implementation "ru.tetraquark.kmplibs:MyersDiffKt:1.0.0"
}
```

## Usage

To calculate difference for two lists, use `DiffUtil` singleton object. There are two public functions:

Expand Down Expand Up @@ -45,5 +76,3 @@ launch {
```

There is simple example of Android application in **sample-android** module that uses the library to calculating and applying differences for RecyclerView content.


11 changes: 11 additions & 0 deletions buildSrc/src/main/kotlin/Versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,15 @@ object Versions {
const val kotlin = "1.3.61"
const val MyersDiffKt = "1.0.0"
const val coroutines = "1.3.3"

const val buildToolsVersion = "29.0.2"
const val minSdkVersion = 21
const val compileSdkVersion = 29
const val targetSdkVersion = compileSdkVersion

// Android sample deps:
const val appcompat = "1.1.0"
const val recyclerview = "1.1.0"
const val coreKtx = "1.2.0"
const val constraintlayout = "1.1.3"
}
17 changes: 8 additions & 9 deletions sample-android/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ plugins {
}

android {
compileSdkVersion(29)
buildToolsVersion = "29.0.2"
compileSdkVersion(Versions.compileSdkVersion)
buildToolsVersion = Versions.buildToolsVersion
defaultConfig {
applicationId = "ru.tetraquark.kmplibs.myersdiffkt.sample.android"
minSdkVersion(21)
targetSdkVersion(29)
minSdkVersion(Versions.minSdkVersion)
targetSdkVersion(Versions.targetSdkVersion)

versionCode = 1
versionName = "1.0"
Expand All @@ -29,13 +29,12 @@ android {
}

dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Versions.kotlin}")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutines}")
implementation("androidx.appcompat:appcompat:1.1.0")
implementation("androidx.recyclerview:recyclerview:1.1.0")
implementation("androidx.core:core-ktx:1.2.0")
implementation("androidx.constraintlayout:constraintlayout:1.1.3")
implementation("androidx.appcompat:appcompat:${Versions.appcompat}")
implementation("androidx.recyclerview:recyclerview:${Versions.recyclerview}")
implementation("androidx.core:core-ktx:${Versions.coreKtx}")
implementation("androidx.constraintlayout:constraintlayout:${Versions.constraintlayout}")

implementation(project(":MyersDiffKt"))
}
2 changes: 2 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
enableFeaturePreview("GRADLE_METADATA")

include(":MyersDiffKt")
include(":sample-android")

Expand Down

0 comments on commit 1ca8744

Please # to comment.