-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtools.gradle.kts.bak
76 lines (69 loc) · 2.51 KB
/
tools.gradle.kts.bak
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
plugins {
id("com.android.application")
kotlin("android")
kotlin("android.extensions")
}
fun initial(rootProject: Project, project: Project) {
val logger: Logger = Logging.getLogger("MyCustomTask")
fun log(msg: String) {
logger.log(LogLevel.LIFECYCLE, ":+++> $msg")
}
fun createCopyApkTask(apkPath: String, variant: com.android.build.gradle.api.ApplicationVariant) {
log("createCopyApkTask variant:${variant.name}, project: ${project.name}")
val hostProject = rootProject.project("app")
val assetSrcDirs = hostProject.android.sourceSets.getByName("main").assets.srcDirs
var hostProjectAssetsDir = ""
if (assetSrcDirs.isNotEmpty()) {
hostProjectAssetsDir = assetSrcDirs.first().absolutePath
}
if (hostProjectAssetsDir.isEmpty()) {
return
}
project.tasks.create("copyApkToHostAssets${variant.name.capitalize()}") {
group = "custom"
dependsOn("assemble${variant.name.capitalize()}")
doLast {
log("Copy $apkPath to $hostProjectAssetsDir")
val fileName = File(apkPath).name.replace("-${variant.name}", "")
copy {
from(apkPath)
into(hostProjectAssetsDir)
rename {
it.replace("-${variant.name}", "")
}
}
if (File(hostProjectAssetsDir, fileName).isFile) {
log("Copy Success!!!")
} else {
log("Copy Failed!!! ")
}
}
}
}
project.afterEvaluate {
log("taskGraph.whenReady ")
project.android.applicationVariants.all { variant ->
log("开始遍历 applicationVariants, variant:${variant.name}, project: ${project.name}")
var apkFilePath = ""
variant.outputs.forEach {
log("${it.baseName},${it.dirName},${it.name}, ${it.outputFile}")
apkFilePath = it.outputFile.absolutePath
}
if (apkFilePath.isNotEmpty()) {
createCopyApkTask(apkFilePath, variant)
}
true
}
}
}