Skip to content
This repository was archived by the owner on Jan 22, 2023. It is now read-only.

Commit 159795b

Browse files
authored
Merge pull request #64 from artyomd/development
Version 0.4
2 parents a360d45 + 4aba9e7 commit 159795b

16 files changed

Lines changed: 340 additions & 262 deletions

File tree

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Fri Apr 19 21:51:18 AMT 2019
1+
#Mon May 13 23:41:32 AMT 2019
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

injector-android-example/build.gradle

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,20 @@ buildscript {
99
jcenter()
1010
}
1111
dependencies {
12-
classpath "com.android.tools.build:gradle:3.4.0"
12+
classpath 'com.android.tools.build:gradle:3.4.1'
1313
classpath "app.artyomd.injector:injector:${VERSION_NAME}"
1414
}
1515
}
1616

17+
plugins {
18+
id 'com.gradle.build-scan' version '2.3'
19+
}
20+
21+
buildScan {
22+
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
23+
termsOfServiceAgree = 'yes'
24+
}
25+
1726
allprojects {
1827
repositories {
1928
google()

injector-android-example/lib/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ android {
1818

1919
dependencies {
2020
implementation 'androidx.appcompat:appcompat:1.0.2'
21-
inject 'com.airbnb.android:lottie:3.0.1'
21+
inject 'com.airbnb.android:lottie:3.0.3'
2222
}
2323
injectConfig {
2424
enabled = true
1.23 KB
Binary file not shown.

injector-android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ buildscript {
33
google()
44
}
55
dependencies {
6-
classpath 'com.android.tools.build:gradle:3.4.0'
6+
classpath 'com.android.tools.build:gradle:3.4.1'
77
}
88
}
99

injector/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ plugins {
77
apply from: '../versions.gradle'
88

99
sourceCompatibility = 1.8
10+
targetCompatibility = 1.8
1011

1112
repositories {
1213
google()
@@ -19,7 +20,7 @@ dependencies {
1920
compile 'com.squareup:javapoet:1.11.1'
2021
//compile 'com.github.javaparser:javaparser-core:3.13.6'
2122
compile 'commons-io:commons-io:2.6'
22-
compile 'com.android.tools.build:gradle:3.4.0'
23+
compile 'com.android.tools.build:gradle:3.4.1'
2324
}
2425

2526
def checkSigning() {

injector/src/main/java/app/artyomd/injector/InjectorPlugin.java

Lines changed: 21 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
11
package app.artyomd.injector;
22

3+
import app.artyomd.injector.extension.InjectorExtension;
4+
import app.artyomd.injector.model.AndroidArchiveLibrary;
5+
import app.artyomd.injector.task.ExtractAarTask;
6+
import app.artyomd.injector.util.Utils;
37
import com.android.build.gradle.AppExtension;
48
import com.android.build.gradle.LibraryExtension;
59
import com.android.build.gradle.api.BaseVariant;
610
import org.gradle.api.Plugin;
711
import org.gradle.api.Project;
8-
import org.gradle.api.Task;
912
import org.gradle.api.artifacts.Configuration;
1013
import org.gradle.api.artifacts.DependencyResolutionListener;
11-
import org.gradle.api.artifacts.ModuleVersionIdentifier;
1214
import org.gradle.api.artifacts.ResolvableDependencies;
1315
import org.gradle.api.artifacts.ResolvedArtifact;
16+
import org.gradle.api.tasks.TaskProvider;
1417
import org.jetbrains.annotations.NotNull;
1518

16-
import java.io.File;
17-
import java.io.IOException;
1819
import java.util.Collections;
19-
import java.util.HashMap;
2020
import java.util.HashSet;
21-
import java.util.Map;
2221
import java.util.Set;
23-
import java.util.function.Consumer;
2422

2523
public class InjectorPlugin implements Plugin<Project> {
2624

@@ -33,44 +31,20 @@ public class InjectorPlugin implements Plugin<Project> {
3331
private Set<ResolvedArtifact> jars;
3432
private Set<AndroidArchiveLibrary> aars;
3533

36-
private static void removeOldVersions(Set<? extends ResolvedArtifact> artifactsList) {
37-
Map<String, Map<String, ResolvedArtifact>> artifacts = new HashMap<>();
38-
for (ResolvedArtifact artifact : artifactsList) {
39-
ModuleVersionIdentifier id = artifact.getModuleVersion().getId();
40-
String name = id.getName();
41-
String group = id.getGroup();
42-
String version = id.getVersion();
43-
if (artifacts.containsKey(group)) {
44-
Map<String, ResolvedArtifact> names = artifacts.get(group);
45-
if (names.containsKey(name)) {
46-
ResolvedArtifact old = names.get(name);
47-
if (Utils.cmp(old.getModuleVersion().getId().getVersion(), version)) {
48-
names.put(name, artifact);
49-
artifactsList.remove(old);
50-
} else {
51-
artifactsList.remove(artifact);
52-
}
53-
} else {
54-
names.put(name, artifact);
55-
}
56-
} else {
57-
Map<String, ResolvedArtifact> names = new HashMap<>();
58-
names.put(name, artifact);
59-
artifacts.put(group, names);
60-
}
61-
}
62-
}
63-
6434
@Override
6535
public void apply(@NotNull Project project) {
6636
this.project = project;
67-
extension = project.getExtensions().create("injectConfig", InjectorExtension.class);
37+
createExtension();
6838
createConfiguration();
39+
createExtractAARsTask();
6940
project.afterEvaluate(project1 -> {
7041
resolveArtifacts();
71-
removeOldVersions(jars);
72-
removeOldVersions(aars);
73-
createExtractAARsTask();
42+
if (jars.isEmpty() && aars.isEmpty()) {
43+
return;
44+
}
45+
Utils.removeOldArtifacts(jars);
46+
Utils.removeOldArtifacts(aars);
47+
7448
Object extension = project1.getExtensions().getByName("android");
7549
if (extension instanceof LibraryExtension) {
7650
((LibraryExtension) extension).getLibraryVariants().all(this::processVariant);
@@ -80,19 +54,9 @@ public void apply(@NotNull Project project) {
8054
});
8155
}
8256

83-
private void createExtractAARsTask() {
84-
Task extractAars = project.getTasks().create(EXTRACT_AARS_TASK_NAME, Task.class);
85-
extractAars.doFirst(task -> aars.forEach((Consumer<ResolvedArtifact>) resolvedArtifact -> {
86-
String extractedAarPath = ((AndroidArchiveLibrary) resolvedArtifact).getRootFolder().getAbsolutePath();
87-
File extractedAar = new File(extractedAarPath);
88-
if (!extractedAar.exists()) {
89-
try {
90-
Utils.unzip(resolvedArtifact.getFile(), extractedAarPath);
91-
} catch (IOException e) {
92-
e.printStackTrace();
93-
}
94-
}
95-
}));
57+
private void createExtension() {
58+
extension = new InjectorExtension();
59+
project.getExtensions().add(InjectorExtension.class, "injectConfig", extension);
9660
}
9761

9862
private void createConfiguration() {
@@ -119,6 +83,11 @@ public void afterResolve(@NotNull ResolvableDependencies dependencies) {
11983
});
12084
}
12185

86+
private void createExtractAARsTask() {
87+
TaskProvider<ExtractAarTask> extractAarTaskTaskProvider = project.getTasks().register(EXTRACT_AARS_TASK_NAME, ExtractAarTask.class);
88+
extractAarTaskTaskProvider.configure(extractAarTask -> extractAarTask.setAndroidArchiveLibraries(aars));
89+
}
90+
12291
private void resolveArtifacts() {
12392
Set<ResolvedArtifact> jars = new HashSet<>();
12493
Set<AndroidArchiveLibrary> aars = new HashSet<>();

0 commit comments

Comments
 (0)