Skip to content

Commit c6a326f

Browse files
author
Stewart Miles
committedMar 16, 2019
Initial open source commit.
1 parent b9c26d2 commit c6a326f

File tree

692 files changed

+114131
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

692 files changed

+114131
-0
lines changed
 

‎Android/firebase_dependencies.gradle

+152
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
// Copyright 2018 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
// A map of library to the dependencies that need to be added for it.
16+
def firebaseDependenciesMap = [
17+
'app' : ['com.google.firebase:firebase-core:16.0.7'],
18+
'admob' : ['com.google.firebase:firebase-ads:17.1.3'],
19+
'analytics' : ['com.google.firebase:firebase-analytics:16.3.0'],
20+
'auth' : ['com.google.firebase:firebase-auth:16.2.0'],
21+
'database' : ['com.google.firebase:firebase-database:16.1.0'],
22+
'dynamic_links' : ['com.google.firebase:firebase-invites:16.1.0'],
23+
'functions' : ['com.google.firebase:firebase-functions:16.2.0'],
24+
'instance_id' : ['com.google.firebase:firebase-iid:17.1.0'],
25+
'invites' : ['com.google.firebase:firebase-invites:16.1.0'],
26+
// Messaging has an additional local dependency to include.
27+
'messaging' : ['com.google.firebase:firebase-messaging:17.4.0',
28+
'firebase_cpp_sdk.messaging:messaging_java'],
29+
'performance' : ['com.google.firebase:firebase-perf:16.2.4'],
30+
'remote_config' : ['com.google.firebase:firebase-config:16.4.0'],
31+
'storage' : ['com.google.firebase:firebase-storage:16.1.0']
32+
]
33+
34+
// A map of library to the gradle resources that they depend upon.
35+
def firebaseResourceDependenciesMap = [
36+
'app' : [':app:app_resources',
37+
':app:google_api_resources',
38+
':app:invites_resources'],
39+
'admob' : [':admob:admob_resources'],
40+
'auth' : [':auth:auth_resources'],
41+
'database' : [':database:database_resources'],
42+
'storage' : [':storage:storage_resources']
43+
]
44+
45+
def setResourceDependencies(String subproject) {
46+
preDebugBuild.dependsOn gradle.includedBuild('firebase_cpp_sdk').task(
47+
"$subproject:generateDexJarDebug")
48+
preDebugBuild.dependsOn gradle.includedBuild('firebase_cpp_sdk').task(
49+
"$subproject:generateDexJarRelease")
50+
}
51+
52+
// Handles adding the Firebase C++ dependencies as properties.
53+
class Dependencies {
54+
HashSet<String> libSet = new HashSet<String>()
55+
56+
def getApp() {
57+
libSet.add('app')
58+
}
59+
def getAdmob() {
60+
libSet.add('admob')
61+
}
62+
def getAnalytics() {
63+
libSet.add('analytics')
64+
}
65+
def getAuth() {
66+
libSet.add('auth')
67+
}
68+
def getDatabase() {
69+
libSet.add('database')
70+
}
71+
def getDynamicLinks() {
72+
libSet.add('dynamic_links')
73+
}
74+
def getFunctions() {
75+
libSet.add('functions')
76+
}
77+
def getInstanceId() {
78+
libSet.add('instance_id')
79+
}
80+
def getInvites() {
81+
libSet.add('invites')
82+
}
83+
def getMessaging() {
84+
libSet.add('messaging')
85+
}
86+
def getPerformance() {
87+
libSet.add('performance')
88+
}
89+
def getRemoteConfig() {
90+
libSet.add('remote_config')
91+
}
92+
def getStorage() {
93+
libSet.add('storage')
94+
}
95+
}
96+
97+
// Extension to handle which Firebase C++ dependencies are being added to the
98+
// gradle project.
99+
// They are added via: firebaseCpp.dependencies "admob", "analytics", ...
100+
class FirebaseCppExtension {
101+
Dependencies dependencies = new Dependencies()
102+
103+
void dependencies(Closure c) {
104+
ConfigureUtil.configure(c, dependencies)
105+
}
106+
void dependencies(Action<? super Dependencies> action) {
107+
action.execute(dependencies)
108+
}
109+
}
110+
111+
project.extensions.create('firebaseCpp', FirebaseCppExtension)
112+
113+
apply from: "${gradle.firebase_cpp_sdk_dir}/android_build_files/generate_proguard.gradle"
114+
115+
def generateAndAddProguard(String lib) {
116+
// Set the property on the project, so it is easier to use
117+
project.ext.firebase_cpp_sdk_dir = "${gradle.firebase_cpp_sdk_dir}"
118+
119+
// Generate the proguard file for the library, and add it to the project
120+
generateProguardFileWithCallback(lib, new Action<File>() {
121+
public void execute(File proguardFile) {
122+
project.android.buildTypes.debug.proguardFile proguardFile
123+
project.android.buildTypes.release.proguardFile proguardFile
124+
}
125+
})
126+
}
127+
128+
project.afterEvaluate {
129+
if (!firebaseCpp.dependencies.libSet.isEmpty()) {
130+
// App is required, so add it if it wasn't included.
131+
if (!firebaseCpp.dependencies.libSet.contains('app')) {
132+
firebaseCpp.dependencies.libSet.add('app')
133+
}
134+
135+
for (String lib : firebaseCpp.dependencies.libSet) {
136+
// Generate and include the proguard file
137+
generateAndAddProguard(lib)
138+
139+
// Add the dependencies for the library
140+
for (String dep : firebaseDependenciesMap.get(lib)) {
141+
project.dependencies {
142+
implementation "$dep"
143+
}
144+
}
145+
if (firebaseResourceDependenciesMap.containsKey(lib)) {
146+
for (String resDep : firebaseResourceDependenciesMap.get(lib)) {
147+
setResourceDependencies(resDep)
148+
}
149+
}
150+
}
151+
}
152+
}

0 commit comments

Comments
 (0)
Please sign in to comment.