@@ -80,12 +80,14 @@ class GradleProjectPlugin implements Plugin<Project> {
8080 static def versionGroupAligns
8181 static Project project
8282 static def moduleVersionOverrides
83+ static def moduleCopied
8384
8485 @Override
8586 void apply (Project inProject ) {
8687 project = inProject
8788 versionGroupAligns = InternalUtils . deepcopy(VERSION_GROUP_ALIGNS )
8889 moduleVersionOverrides = [:]
90+ moduleCopied = [:]
8991
9092 resolutionHooksForAndroidPluginV3()
9193 resolutionHooksForAndroidPluginV2()
@@ -99,7 +101,6 @@ class GradleProjectPlugin implements Plugin<Project> {
99101 return
100102
101103 def configuration = variant. compileConfiguration
102-
103104 doResolutionStrategyAndroidPluginV3(configuration)
104105 }
105106 }
@@ -108,10 +109,10 @@ class GradleProjectPlugin implements Plugin<Project> {
108109 static void resolutionHooksForAndroidPluginV2 () {
109110 project. configurations. all { configuration ->
110111 project. afterEvaluate {
111- if (! isAndroidPluginV3()) {
112- generateHighestVersionsForGroups(configuration)
113- doResolutionStrategyAndroidPluginV2 (configuration)
114- }
112+ if (isAndroidPluginV3())
113+ return
114+ generateHighestVersionsForGroups (configuration)
115+ doResolutionStrategyAndroidPluginV2(configuration)
115116 }
116117
117118 // Catches Android specific tasks, <buildType>CompileClasspath
@@ -165,7 +166,7 @@ class GradleProjectPlugin implements Plugin<Project> {
165166 targetSdkVersion = mergedFlavor. targetSdkVersion. apiLevel
166167 }
167168
168- return targetSdkVersion
169+ targetSdkVersion
169170 }
170171
171172 static void doTargetSdkVersionAlign (DependencyResolveDetails details ) {
@@ -238,7 +239,7 @@ class GradleProjectPlugin implements Plugin<Project> {
238239 project. logger. info(" OneSignalProjectPlugin: ${ msg} " )
239240 }
240241
241- static boolean inGroupAlignList (def details ) {
242+ static boolean inGroupAlignList (details ) {
242243 // Only override groups we define
243244 def versionOverride = versionGroupAligns[details. requested. group]
244245 if (! versionOverride)
@@ -248,16 +249,20 @@ class GradleProjectPlugin implements Plugin<Project> {
248249 def omitModules = versionOverride[' omitModules' ]
249250 if (omitModules && omitModules. contains(details. requested. name))
250251 return false
251- return true
252+ true
252253 }
253254
254255 static String getHighestVersion (String version1 , String version2 ) {
255- return compareVersions(version1, version2) > 0 ? version1 : version2
256+ compareVersions(version1, version2) > 0 ? version1 : version2
257+ }
258+
259+ static String moduleGroupAndName (details ) {
260+ " ${ details.requested.group} :${ details.requested.name} "
256261 }
257262
258263 static int compareVersions (String version1 , String version2 ) {
259264 def versionComparator = new DefaultVersionComparator ()
260- return versionComparator. compare(new VersionInfo (version1), new VersionInfo (version2))
265+ versionComparator. compare(new VersionInfo (version1), new VersionInfo (version2))
261266 }
262267
263268 static Object finalAlignmentRules () {
@@ -268,7 +273,7 @@ class GradleProjectPlugin implements Plugin<Project> {
268273 updateMockVersionsIntoGradleVersions(finalVersionGroupAligns)
269274
270275 project. logger. debug(" OneSignalProjectPlugin: FINAL ALIGN PART 2: ${ finalVersionGroupAligns} " )
271- return finalVersionGroupAligns
276+ finalVersionGroupAligns
272277 }
273278
274279 static void alignAcrossGroups (def versionGroupAligns ) {
@@ -298,14 +303,24 @@ class GradleProjectPlugin implements Plugin<Project> {
298303 // project.android.@plugin - This looks to be on the AppExtension class however this didn't work
299304 // Found 'enforceUniquePackageName' by comparing project.android.properties between versions
300305 static boolean isAndroidPluginV3 () {
301- return ! project. android. hasProperty(' enforceUniquePackageName' )
306+ ! project. android. hasProperty(' enforceUniquePackageName' )
307+ }
308+
309+ static void forceCanBeResolved (def configuration ) {
310+ // canBeResolved not available on Gradle 2.14.1 and older
311+ if (configuration. hasProperty(' canBeResolved' ))
312+ configuration. canBeResolved = true
302313 }
303314
304315 static void generateHighestVersionsForGroups (def configuration ) {
316+ // Prevent duplicate runs for the same configuration name
317+ // Fixes infinite calls when multiDexEnabled is set
318+ if (moduleCopied[configuration. name])
319+ return
320+ moduleCopied[configuration. name] = true
321+
305322 def configCopy = configuration. copy()
306- // canBeResolved not available on Gradle 2.14.1 and older
307- if (configCopy. hasProperty(' canBeResolved' ))
308- configCopy. canBeResolved = true
323+ forceCanBeResolved(configCopy)
309324
310325 configCopy. resolutionStrategy. eachDependency { DependencyResolveDetails details ->
311326 doTargetSdkVersionAlign(details)
@@ -329,7 +344,7 @@ class GradleProjectPlugin implements Plugin<Project> {
329344 // Checking for configuration.name == 'compile' || 'implementation' skips to much however
330345 try {
331346 configuration. resolvedConfiguration. resolvedArtifacts
332- } catch (def e ) {}
347+ } catch (any ) {}
333348 }
334349
335350 static String getVersionFromDependencyResolveDetails (DependencyResolveDetails details ) {
@@ -347,8 +362,6 @@ class GradleProjectPlugin implements Plugin<Project> {
347362 return ' 9999.9999.9999'
348363 else
349364 project. logger. error(" OneSignalProjectPlugin: Unkown VersionSelector: ${ parsedVersion} " )
350-
351- return null
352365 }
353366
354367 static final int MAJOR_INDEX = 0
@@ -381,6 +394,6 @@ class GradleProjectPlugin implements Plugin<Project> {
381394 parts[MINOR_INDEX ] = minorVersion. toString()
382395 }
383396
384- return parts. join(' .' )
397+ parts. join(' .' )
385398 }
386399}
0 commit comments