-
Notifications
You must be signed in to change notification settings - Fork 346
Expand file tree
/
Copy pathbuild.gradle.kts
More file actions
117 lines (101 loc) · 4.19 KB
/
build.gradle.kts
File metadata and controls
117 lines (101 loc) · 4.19 KB
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import com.android.build.gradle.api.ApkVariantOutput
import com.android.build.gradle.api.ApplicationVariant
import com.android.build.gradle.api.BaseVariantOutput
/*
* Copyright 2020 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
plugins {
id("com.android.application")
kotlin("android")
}
android {
compileSdkVersion(29)
defaultConfig {
applicationId = "com.google.android.samples.dynamicnavigator"
minSdkVersion(21)
targetSdkVersion(29)
versionCode = 3
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
useLibrary("android.test.runner")
useLibrary("android.test.base")
useLibrary("android.test.mock")
testOptions.unitTests.isIncludeAndroidResources = true
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
dynamicFeatures = mutableSetOf(":dynamicfeature", ":includedgraphfeature")
packagingOptions {
exclude("META-INF/**.version")
}
}
dependencies {
api("androidx.navigation:navigation-dynamic-features-fragment:2.3.0")
api("androidx.appcompat:appcompat:1.2.0")
api("androidx.constraintlayout:constraintlayout:1.1.3")
// Testing
debugImplementation("androidx.fragment:fragment-testing:1.2.5")
// Testing - JVM
testImplementation("androidx.test.ext:junit:1.1.1")
testImplementation("androidx.test.ext:truth:1.2.0")
testImplementation("org.robolectric:robolectric:4.3.1")
testImplementation("androidx.test.espresso:espresso-core:3.2.0")
testImplementation("androidx.test.espresso:espresso-contrib:3.2.0")
testImplementation("androidx.test.espresso:espresso-intents:3.2.0")
testImplementation("androidx.navigation:navigation-testing:2.3.0")
}
val bundletoolJar = project.rootDir.resolve("third_party/bundletool/bundletool-all-0.13.0.jar")
android.applicationVariants.all(object : Action<ApplicationVariant> {
override fun execute(variant: ApplicationVariant) {
variant.outputs.forEach { output: BaseVariantOutput? ->
(output as? ApkVariantOutput)?.let { apkOutput: ApkVariantOutput ->
var filePath = apkOutput.outputFile.absolutePath
filePath = filePath.replaceAfterLast(".", "aab")
filePath = filePath.replace("build/outputs/apk/", "build/outputs/bundle/")
var outputPath = filePath.replace("build/outputs/bundle/", "build/outputs/apks/")
outputPath = outputPath.replaceAfterLast(".", "apks")
tasks.register<JavaExec>("buildApks${variant.name.capitalize()}") {
classpath = files(bundletoolJar)
args = listOf(
"build-apks",
"--overwrite",
"--local-testing",
"--bundle",
filePath,
"--output",
outputPath
)
dependsOn("bundle${variant.name.capitalize()}")
}
tasks.register<JavaExec>("installApkSplitsForTest${variant.name.capitalize()}") {
classpath = files(bundletoolJar)
args = listOf("install-apks", "--apks", outputPath)
dependsOn("buildApks${variant.name.capitalize()}")
}
}
}
}
})