Skip to content

Commit b2d2550

Browse files
authored
Update plugin.gradle
1 parent 226b756 commit b2d2550

File tree

1 file changed

+38
-11
lines changed

1 file changed

+38
-11
lines changed

FairyPlugin/agp7_2_0/plugin.gradle

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import org.gradle.api.internal.artifacts.DefaultProjectComponentIdentifier
12
import org.xml.sax.InputSource
23
import org.xml.sax.SAXException
34
import org.xml.sax.helpers.DefaultHandler
@@ -22,13 +23,23 @@ configurations {
2223
class FaiyExt {
2324
private boolean requireHostVersion = true;
2425

26+
private String hostDependenciesToExclude;
27+
2528
public boolean getRequireHostVersion() {
2629
return requireHostVersion
2730
}
2831

2932
public void setRequireHostVersion(boolean required) {
3033
this.requireHostVersion = required
3134
}
35+
36+
public String getHostDependenciesToExclude() {
37+
return this.hostDependenciesToExclude;
38+
}
39+
40+
public void setHostDependenciesToExclude(String hostDependenciesToExclude) {
41+
this.hostDependenciesToExclude = hostDependenciesToExclude;
42+
}
3243
}
3344
extensions.create('fairy', FaiyExt)
3445

@@ -42,24 +53,39 @@ def hostBarRootDir = rootProject.rootDir.absolutePath + '/.gradle/fairy/baseline
4253
def defaultExtraDir = hostBarRootDir + "unspecified"
4354
def hostDependencies = defaultExtraDir + "/" + hostDependencyFile
4455
def currentSelectedBar = defaultExtraDir + "/" + hostBar
56+
def boolean startParameterWithhDebugOrRelease = false;
4557
gradle.startParameter.taskNames.each { startTaskName ->
4658
if (startTaskName.contains("Debug")) {
4759
hostDependencies = hostBarRootDir + "debug" + "/" + hostDependencyFile
4860
currentSelectedBar = hostBarRootDir + "debug" + "/" + hostBar
61+
startParameterWithhDebugOrRelease = true;
4962
} else if (startTaskName.contains("Release")) {
5063
hostDependencies = hostBarRootDir + "release" + "/" + hostDependencyFile
5164
currentSelectedBar = hostBarRootDir + "release" + "/" + hostBar
65+
startParameterWithhDebugOrRelease = true;
5266
}
5367
}
5468

5569
println "执行命令决定了bar文件依赖路径!"
5670
println ">>>" + hostBarRootDir
5771
println ">>>" + currentSelectedBar
58-
println ">>>" + hostDependencies
5972

60-
if (file(hostDependencies).exists()) {
61-
println ">>>apply from: " + hostDependencies
62-
apply from: hostDependencies
73+
if (fairy.hostDependenciesToExclude != null && file(fairy.hostDependenciesToExclude).exists()) {
74+
println ">>>apply from: " + fairy.hostDependenciesToExclude
75+
apply from: fairy.hostDependenciesToExclude
76+
} else {
77+
if (file(hostDependencies).exists()) {
78+
println ">>>apply from: " + hostDependencies
79+
apply from: hostDependencies
80+
} else {
81+
if (startParameterWithhDebugOrRelease) {
82+
throw new Exception("由于gradle脚本的执行顺序问题,宿主基线包可能还没编译、${hostDependencies}文件可能还没有从插件依赖的基线包中解压出来\n" +
83+
"此时需要自行手动下载hostBar并从中解压出host_dependencies.gradle, 再将此文件路径配置到插件工程的build.gradle内:\n" +
84+
"fairy {\n" +
85+
" hostDependenciesToExclude = \"<path/to/host_dependencies.gradle>\"\n" +
86+
"}\n")
87+
}
88+
}
6389
}
6490

6591
android.androidResources.additionalParameters(
@@ -179,6 +205,7 @@ afterEvaluate {
179205
it.doLast {
180206
if (rtConfig.isCanBeResolved() && rtConfig.getResolutionAlternatives() == null) {
181207
TreeSet hashSet = new TreeSet()
208+
//rtConfig.getIncoming().beforeResolve(new Action<ResolvableDependencies>() {})
182209
rtConfig.getIncoming().getResolutionResult().getRoot().getDependencies().each() { dependencyResult->
183210
if (dependencyResult instanceof ResolvedDependencyResult) {
184211
add(hashSet, dependencyResult)
@@ -190,13 +217,11 @@ afterEvaluate {
190217
dependenciesTxt.append("// variant is ${varName}\n")
191218
String hostTxt = new File(hostDependencies).text
192219
hashSet.each { moduleFullName->
193-
if (!moduleFullName.startsWith("project ")) {//源码依赖的不处理
194-
if (hostTxt.contains(moduleFullName)) {
195-
dependenciesTxt.append("// NOTICE: This module is both in host and plugin apk file!\n")
196-
}
197-
dependenciesTxt.append(moduleFullName)
198-
dependenciesTxt.append("\n")
220+
if (hostTxt.contains(moduleFullName)) {
221+
dependenciesTxt.append("// NOTICE: This module is both in host and plugin apk file!\n")
199222
}
223+
dependenciesTxt.append(moduleFullName)
224+
dependenciesTxt.append("\n")
200225
}
201226
dependenciesTxt.append("\n")
202227
}
@@ -296,7 +321,9 @@ afterEvaluate {
296321
}
297322

298323
def add(Set set, ResolvedDependencyResult dependencyResult) {
299-
set.add(dependencyResult.getSelected().getId().displayName)
324+
if (!(dependencyResult.getSelected().getId() instanceof DefaultProjectComponentIdentifier)) {//源码依赖的不处理
325+
set.add(dependencyResult.getSelected().getId().displayName)
326+
}
300327
dependencyResult.getSelected().getDependencies().each() { childDependencyResult->
301328
if (childDependencyResult instanceof ResolvedDependencyResult) {
302329
add(set, childDependencyResult)

0 commit comments

Comments
 (0)