diff --git a/README.md b/README.md
index 186b1f10..b3ee401c 100644
--- a/README.md
+++ b/README.md
@@ -48,8 +48,8 @@ buildscript {
}
}
dependencies {
- classpath "com.android.tools.build:gradle:3.6.1" // Compatible with 3.5 and above
- classpath "com.jeppeman.locallydynamic.gradle:plugin:0.2"
+ classpath "com.android.tools.build:gradle:4.0.0"
+ classpath "com.jeppeman.locallydynamic.gradle:plugin:0.3"
}
}
@@ -141,7 +141,7 @@ You can also have a look at the andr
Compatibility
---
-Compatible with Android Studio 3.5 and 3.6 as well as the Android Gradle Plugin 3.5 and 3.6 (support for 4 is coming soon)
+Compatible with Android Studio 3.5 and above as well as the Android Gradle Plugin 3.5 and above
Limitations
---
diff --git a/locallydynamic-android-lib/README.md b/locallydynamic-android-lib/README.md
index 3dacbb83..d5d9a0dc 100644
--- a/locallydynamic-android-lib/README.md
+++ b/locallydynamic-android-lib/README.md
@@ -45,8 +45,8 @@ buildscript {
}
}
dependencies {
- classpath "com.android.tools.build:gradle:3.5.3" // Compatible with 3.5 and above
- classpath "com.jeppeman.locallydynamic.gradle:plugin:0.2"
+ classpath "com.android.tools.build:gradle:4.0.0"
+ classpath "com.jeppeman.locallydynamic.gradle:plugin:0.3"
}
}
diff --git a/locallydynamic-android-lib/deps.gradle b/locallydynamic-android-lib/deps.gradle
index 42b1d2c2..0d55e625 100644
--- a/locallydynamic-android-lib/deps.gradle
+++ b/locallydynamic-android-lib/deps.gradle
@@ -2,7 +2,7 @@ def versions = [
kotlin : '1.3.60',
appcompat : '1.1.0',
coroutines : '1.3.2',
- androidplugin : '3.6.1',
+ androidplugin : '4.0.0',
lifecycle : '2.1.0',
mockito : '3.1.0',
robolectric : '4.3.1',
@@ -23,7 +23,7 @@ def versions = [
arch_core_testing : '2.1.0',
play : '1.6.5',
autoservice : '1.0-rc6',
- locallydynamic_gradle: '0.2',
+ locallydynamic_gradle: '0.3',
publish : '3.6.2',
uiautomator : '2.2.0',
]
diff --git a/locallydynamic-android-lib/gradle/wrapper/gradle-wrapper.properties b/locallydynamic-android-lib/gradle/wrapper/gradle-wrapper.properties
index 0823b562..79e5578c 100644
--- a/locallydynamic-android-lib/gradle/wrapper/gradle-wrapper.properties
+++ b/locallydynamic-android-lib/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
diff --git a/locallydynamic-android-lib/sample/installtimefeature/src/main/res/values/strings.xml b/locallydynamic-android-lib/sample/installtimefeature/src/main/res/values/strings.xml
index 14b41d51..267a3393 100644
--- a/locallydynamic-android-lib/sample/installtimefeature/src/main/res/values/strings.xml
+++ b/locallydynamic-android-lib/sample/installtimefeature/src/main/res/values/strings.xml
@@ -1,4 +1,4 @@
- Hi, I am a fragment from an install time feature
+ Hi, I am a fragment from an install time feature
\ No newline at end of file
diff --git a/locallydynamic-android-lib/sample/ondemandfeature/src/main/res/values/strings.xml b/locallydynamic-android-lib/sample/ondemandfeature/src/main/res/values/strings.xml
index faece58c..cd8ba735 100644
--- a/locallydynamic-android-lib/sample/ondemandfeature/src/main/res/values/strings.xml
+++ b/locallydynamic-android-lib/sample/ondemandfeature/src/main/res/values/strings.xml
@@ -1,4 +1,4 @@
- Hi, I am a fragment from an on demand feature
+ Hi, I am a fragment from an on demand feature
\ No newline at end of file
diff --git a/locallydynamic-gradle-plugin/README.md b/locallydynamic-gradle-plugin/README.md
index 7ba95cd1..25ed9dc5 100644
--- a/locallydynamic-gradle-plugin/README.md
+++ b/locallydynamic-gradle-plugin/README.md
@@ -1,7 +1,7 @@
# locallydynamic-gradle-plugin
A gradle plugin that hooks into the bundle build process of the Android Gradle Plugin and uploads produced bundles to a LocallyDynamic server.
-Compatible with AGP 3.5 and 3.6.
+Compatible with AGP 3.5 above
Usage
---
@@ -13,7 +13,7 @@ buildscript {
}
}
dependencies {
- classpath "com.jeppeman.locallydynamic.gradle:plugin:0.2"
+ classpath "com.jeppeman.locallydynamic.gradle:plugin:0.3"
}
}
@@ -29,7 +29,7 @@ buildscript {
}
}
dependencies {
- classpath "com.jeppeman.locallydynamic.gradle:plugin:0.3-SNAPSHOT"
+ classpath "com.jeppeman.locallydynamic.gradle:plugin:0.4-SNAPSHOT"
}
}
@@ -97,8 +97,8 @@ buildscript {
}
}
dependencies {
- classpath "com.android.tools.build:gradle:3.6.1" // Compatible with 3.5 and above
- classpath "com.jeppeman.locallydynamic.gradle:plugin:0.2"
+ classpath "com.android.tools.build:gradle:4.0.0"
+ classpath "com.jeppeman.locallydynamic.gradle:plugin:0.3"
}
}
diff --git a/locallydynamic-gradle-plugin/deps.gradle b/locallydynamic-gradle-plugin/deps.gradle
index 21be59b7..7ccfbcd4 100644
--- a/locallydynamic-gradle-plugin/deps.gradle
+++ b/locallydynamic-gradle-plugin/deps.gradle
@@ -1,10 +1,10 @@
def androidPluginVersion = project.hasProperty("agpVersion")
? project.properties.get("agpVersion")
- : '3.6.1'
+ : '4.0.0'
def versions = [
androidplugin : androidPluginVersion,
- kotlin : '1.3.60',
+ kotlin : '1.3.72',
versionsplugin : '0.25.0',
javapoet : '1.11.1',
junit : '5.5.2',
@@ -12,8 +12,7 @@ def versions = [
truth : '1.1.0',
mockito : '2.23.4',
mockito_kotlin : '2.1.0',
- locallydynamic_server: '0.2',
- gradle_publish : '0.10.1'
+ locallydynamic_server: '0.2'
]
ext.versions = versions
diff --git a/locallydynamic-gradle-plugin/gradle.properties b/locallydynamic-gradle-plugin/gradle.properties
index 757aaccf..f3ef16f9 100644
--- a/locallydynamic-gradle-plugin/gradle.properties
+++ b/locallydynamic-gradle-plugin/gradle.properties
@@ -1,5 +1,5 @@
GROUP=com.jeppeman.locallydynamic.gradle
-VERSION_NAME=0.3-SNAPSHOT
+VERSION_NAME=0.4-SNAPSHOT
POM_DESCRIPTION=LocallyDynamic - Gradle plugin to facilitate for local dynamic delivery for Android.
diff --git a/locallydynamic-gradle-plugin/plugin/build.gradle b/locallydynamic-gradle-plugin/plugin/build.gradle
index 09b519c9..71ee4095 100644
--- a/locallydynamic-gradle-plugin/plugin/build.gradle
+++ b/locallydynamic-gradle-plugin/plugin/build.gradle
@@ -2,7 +2,7 @@ plugins {
id 'java-gradle-plugin'
id 'java'
id 'kotlin'
- id 'com.gradle.plugin-publish' version '0.10.1'
+ id 'com.gradle.plugin-publish' version '0.12.0'
}
dependencies {
diff --git a/locallydynamic-gradle-plugin/plugin/src/main/java/com/jeppeman/locallydynamic/gradle/extensions/BuildType.kt b/locallydynamic-gradle-plugin/plugin/src/main/java/com/jeppeman/locallydynamic/gradle/extensions/BuildType.kt
new file mode 100644
index 00000000..a1628b89
--- /dev/null
+++ b/locallydynamic-gradle-plugin/plugin/src/main/java/com/jeppeman/locallydynamic/gradle/extensions/BuildType.kt
@@ -0,0 +1,10 @@
+package com.jeppeman.locallydynamic.gradle.extensions
+
+import com.android.build.gradle.internal.dsl.BuildType
+import com.jeppeman.locallydynamic.gradle.LocallyDynamicExtension
+import org.gradle.api.plugins.ExtensionAware
+
+fun BuildType.locallyDynamic(block: LocallyDynamicExtension.() -> Unit) {
+ val extension = (this as ExtensionAware).extensions.getByType(LocallyDynamicExtension::class.java)
+ extension.apply(block)
+}
diff --git a/locallydynamic-studio-plugin/build.gradle b/locallydynamic-studio-plugin/build.gradle
index a19ba111..c3e92b33 100644
--- a/locallydynamic-studio-plugin/build.gradle
+++ b/locallydynamic-studio-plugin/build.gradle
@@ -38,8 +38,7 @@ intellij {
plugins 'android'
type 'IC'
version '193.6911.18'
-// alternativeIdePath "${ANDROID_STUDIO_STABLE_PATH}"
- //localPath "${ANDROID_STUDIO_PREVIEW_PATH}" // android studio 3.6
+// localPath "${System.getenv("ANDROID_STUDIO_PATH")}"
}
publishPlugin {
@@ -77,7 +76,11 @@ patchPluginXml {
//"""
// 0.5
+// changeNotes """
+// Make compatible with Android Studio 4.0.
+//"""
+ // 0.6
changeNotes """
- Make compatible with Android Studio 4.0.
+ Add support for kotlin build scripts (build.gradle.kts)
"""
}
diff --git a/locallydynamic-studio-plugin/gradle.properties b/locallydynamic-studio-plugin/gradle.properties
index 8f7d617a..e85eefb0 100644
--- a/locallydynamic-studio-plugin/gradle.properties
+++ b/locallydynamic-studio-plugin/gradle.properties
@@ -1,5 +1,5 @@
GROUP=com.jeppeman.locallydynamic.idea
-VERSION_NAME=0.6-SNAPSHOT
+VERSION_NAME=0.7-SNAPSHOT
POM_DESCRIPTION=LocallyDynamic Server - Embeds a LocallyDynamic server into Android Studio that apps will download their splits from.
diff --git a/locallydynamic-studio-plugin/src/main/kotlin/com/jeppeman/locallydynamic/idea/extensions/Module.kt b/locallydynamic-studio-plugin/src/main/kotlin/com/jeppeman/locallydynamic/idea/extensions/Module.kt
index c3bfa5a6..58f4c089 100644
--- a/locallydynamic-studio-plugin/src/main/kotlin/com/jeppeman/locallydynamic/idea/extensions/Module.kt
+++ b/locallydynamic-studio-plugin/src/main/kotlin/com/jeppeman/locallydynamic/idea/extensions/Module.kt
@@ -1,57 +1,10 @@
package com.jeppeman.locallydynamic.idea.extensions
-import com.android.tools.idea.gradle.util.GradleUtil
+import com.android.tools.idea.gradle.project.facet.gradle.GradleFacet
import com.intellij.openapi.module.Module
-import org.jetbrains.kotlin.idea.core.util.toPsiFile
-import org.jetbrains.plugins.groovy.lang.psi.GroovyFile
-import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.GrListOrMap
-import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrNamedArgument
-import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression
-import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall
-import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrLiteral
-import java.util.HashMap
val Module.hasLocallyDynamicEnabled: Boolean
- get() {
- GradleUtil.getGradleBuildFile(this)?.let { file ->
- file.toPsiFile(project)?.let { psiFile ->
- return when (psiFile) {
- !is GroovyFile -> false
- else -> psiFile.plugins.contains("com.jeppeman.locallydynamic")
- }
- }
- }
- return false
- }
-
-val GroovyFile.plugins: List
- get() = ArrayList().apply {
- statements.toList().filterIsInstance()
- .filter { "apply" == it.invokedExpression.text }
- .forEach { methodCall ->
- val values = HashMap()
- methodCall.argumentList.allArguments.filterIsInstance().forEach {
- values[it.labelName] = it.expression?.parseValueExpression()
- }
- values["plugin"]?.let { plugin ->
- add(plugin.toString())
- }
- }
- }
-
-private fun GrExpression.parseValueExpression(): Any? {
- return when (this) {
- is GrLiteral -> value
- is GrListOrMap -> {
- if (isMap) return null
- ArrayList().apply {
- initializers.forEach { subexpression ->
- subexpression.parseValueExpression()?.let { subValue ->
- add(subValue)
- }
- }
- }
- }
- else -> null
- }
-}
+ get() = GradleFacet.getInstance(this)
+ ?.gradleModuleModel
+ ?.gradlePlugins
+ ?.contains("com.jeppeman.locallydynamic.gradle.LocallyDynamicPlugin") == true