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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
|
/*
* Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
* SPDX-License-Identifier: GPL-3.0-only
*/
@file:Suppress("UnstableApiUsage")
import me.champeau.gradle.igp.gitRepositories
rootProject.name = "APS"
// Plugin repositories
pluginManagement {
repositories {
includeBuild("build-logic")
exclusiveContent {
forRepository { google() }
filter {
includeGroup("androidx.databinding")
includeGroup("com.android")
includeGroup("com.android.tools.analytics-library")
includeGroup("com.android.tools.build")
includeGroup("com.android.tools.build.jetifier")
includeGroup("com.android.databinding")
includeGroup("com.android.tools.ddms")
includeGroup("com.android.tools.layoutlib")
includeGroup("com.android.tools.lint")
includeGroup("com.android.tools.utp")
includeGroup("com.google.testing.platform")
includeModule("com.android.tools", "annotations")
includeModule("com.android.tools", "common")
includeModule("com.android.tools", "desugar_jdk_libs")
includeModule("com.android.tools", "desugar_jdk_libs_configuration")
includeModule("com.android.tools", "dvlib")
includeModule("com.android.tools", "play-sdk-proto")
includeModule("com.android.tools", "repository")
includeModule("com.android.tools", "sdklib")
includeModule("com.android.tools", "sdk-common")
}
}
exclusiveContent {
forRepository { gradlePluginPortal() }
filter {
includeModule("com.github.ben-manes", "gradle-versions-plugin")
includeModule("com.gradle", "gradle-enterprise-gradle-plugin")
includeModule("com.gradle.enterprise", "com.gradle.enterprise.gradle.plugin")
includeModule("me.champeau.includegit", "me.champeau.includegit.gradle.plugin")
includeModule("me.champeau.gradle.includegit", "plugin")
}
}
exclusiveContent {
forRepository { maven("https://storage.googleapis.com/r8-releases/raw") }
filter { includeModule("com.android.tools", "r8") }
}
mavenCentral()
}
}
plugins {
id("com.gradle.enterprise") version "3.11.1"
id("me.champeau.includegit") version "0.1.5"
}
gradleEnterprise {
buildScan {
termsOfServiceUrl = "https://gradle.com/terms-of-service"
termsOfServiceAgree = if (System.getenv("GITHUB_WORKFLOW").isNullOrEmpty()) "no" else "yes"
publishOnFailureIf(!System.getenv("GITHUB_WORKFLOW").isNullOrEmpty())
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
exclusiveContent {
forRepository { google() }
filter {
includeGroup("androidx.activity")
includeGroup("androidx.appcompat")
includeGroup("androidx.annotation")
includeGroup("androidx.arch.core")
includeGroup("androidx.autofill")
includeGroup("androidx.biometric")
includeGroup("androidx.browser")
includeGroup("androidx.cardview")
includeGroup("androidx.collection")
includeGroup("androidx.compose.animation")
includeGroup("androidx.compose.compiler")
includeGroup("androidx.compose.foundation")
includeGroup("androidx.compose.material")
includeGroup("androidx.compose.material3")
includeGroup("androidx.compose.runtime")
includeGroup("androidx.compose.ui")
includeGroup("androidx.concurrent")
includeGroup("androidx.constraintlayout")
includeGroup("androidx.coordinatorlayout")
includeGroup("androidx.core")
includeGroup("androidx.cursoradapter")
includeGroup("androidx.customview")
includeGroup("androidx.databinding")
includeGroup("androidx.documentfile")
includeGroup("androidx.drawerlayout")
includeGroup("androidx.dynamicanimation")
includeGroup("androidx.emoji2")
includeGroup("androidx.exifinterface")
includeGroup("androidx.fragment")
includeGroup("androidx.hilt")
includeGroup("androidx.interpolator")
includeGroup("androidx.legacy")
includeGroup("androidx.lifecycle")
includeGroup("androidx.loader")
includeGroup("androidx.localbroadcastmanager")
includeGroup("androidx.preference")
includeGroup("androidx.print")
includeGroup("androidx.profileinstaller")
includeGroup("androidx.recyclerview")
includeGroup("androidx.resourceinspection")
includeGroup("androidx.room")
includeGroup("androidx.savedstate")
includeGroup("androidx.security")
includeGroup("androidx.slidingpanelayout")
includeGroup("androidx.startup")
includeGroup("androidx.sqlite")
includeGroup("androidx.swiperefreshlayout")
includeGroup("androidx.test")
includeGroup("androidx.test.espresso")
includeGroup("androidx.tracing")
includeGroup("androidx.transition")
includeGroup("androidx.vectordrawable")
includeGroup("androidx.versionedparcelable")
includeGroup("androidx.viewpager")
includeGroup("androidx.viewpager2")
includeGroup("androidx.window")
includeGroup("com.android")
includeGroup("com.android.tools.analytics-library")
includeGroup("com.android.tools.build")
includeGroup("com.android.tools.ddms")
includeGroup("com.android.tools.external.com-intellij")
includeGroup("com.android.tools.external.org-jetbrains")
includeGroup("com.android.tools.layoutlib")
includeGroup("com.android.tools.lint")
includeGroup("com.google.android.gms")
includeModule("com.android.tools", "annotations")
includeModule("com.android.tools", "common")
includeModule("com.android.tools", "desugar_jdk_libs")
includeModule("com.android.tools", "desugar_jdk_libs_configuration")
includeModule("com.android.tools", "dvlib")
includeModule("com.android.tools", "play-sdk-proto")
includeModule("com.android.tools", "repository")
includeModule("com.android.tools", "sdklib")
includeModule("com.android.tools", "sdk-common")
includeModule("com.google.android.material", "material")
}
}
exclusiveContent {
forRepository { maven("https://jitpack.io") }
filter { includeModule("com.github.haroldadmin", "WhatTheStack") }
}
exclusiveContent {
forRepository { maven("https://storage.googleapis.com/r8-releases/raw") }
filter { includeModule("com.android.tools", "r8") }
}
mavenCentral()
}
}
gitRepositories {
checkoutsDirectory.set(rootProject.projectDir.resolve("build/checkouts"))
include("pgpainless") {
uri.set("https://github.com/pgpainless/pgpainless.git")
branch.set("hardwareDecryption")
includeBuild {
dependencySubstitution {
substitute(module("org.pgpainless:pgpainless-core"))
.using(project(":pgpainless-core"))
}
}
}
include("hwsecurity") {
uri.set("https://github.com/tadfisher/hwsecurity.git")
branch.set("pendingintent-mutability")
includeBuild {
dependencySubstitution {
for (module in listOf(
"core",
"intent-usb",
"intent-nfc",
"provider",
"fido",
"fido2",
"openpgp",
"piv",
"sshj",
"ssh",
"ui",
)) {
substitute(module("com.github.android-password-store.hwsecurity:hwsecurity-$module"))
.using(project(":hwsecurity:$module"))
}
}
}
}
}
// Experimental features
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
enableFeaturePreview("STABLE_CONFIGURATION_CACHE")
// Modules
include("app")
include("autofill-parser")
include("coroutine-utils")
include("coroutine-utils-testing")
include("crypto-common")
include("crypto-pgpainless")
include("format-common")
include("passgen:diceware")
include("passgen:random")
include("sentry-stub")
include("ui-compose")
|