Skip to content

Commit fb36832

Browse files
committed
F-Droid flavor (without Google's Firebase)
1 parent 9d46bc6 commit fb36832

File tree

13 files changed

+203
-15
lines changed

13 files changed

+203
-15
lines changed

app/build.gradle

+19-4
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,24 @@ android {
115115
productFlavors {
116116
register("github") {
117117
dimension = "version"
118+
buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'true'
118119
}
119120
register("beta") {
120121
dimension = "version"
121122
versionNameSuffix = "-beta3"
123+
buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'true'
122124
}
123125
register("googleplay") {
124126
dimension = "version"
127+
buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'true'
125128
}
126129
register("amazon") {
127130
dimension = "version"
131+
buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'true'
132+
}
133+
register("fdroid") {
134+
dimension = "version"
135+
buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'false'
128136
}
129137
}
130138
}
@@ -145,10 +153,17 @@ dependencies {
145153
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
146154
implementation("androidx.appcompat:appcompat:1.7.0")
147155

148-
// Firebase
149-
implementation('com.google.firebase:firebase-analytics-ktx:22.1.0')
150-
implementation("com.google.firebase:firebase-crashlytics-ktx:19.0.3")
151-
implementation("com.google.firebase:firebase-perf-ktx:21.0.1")
156+
// Firebase (flavor-based conditional implementation)
157+
def firebase = [
158+
"com.google.firebase:firebase-analytics-ktx:22.1.0",
159+
"com.google.firebase:firebase-crashlytics-ktx:19.0.3",
160+
"com.google.firebase:firebase-perf-ktx:21.0.1",
161+
]
162+
githubImplementation(firebase)
163+
betaImplementation(firebase)
164+
googleplayImplementation(firebase)
165+
amazonImplementation(firebase)
166+
// fdroidImplementation() <- no firebase in F-Droid :)
152167

153168
// Retrofit, OkHttp, and Moshi
154169
implementation("com.squareup.retrofit2:retrofit:2.11.0")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.neilturner.aerialviews.firebase;
2+
3+
import androidx.annotation.NonNull
4+
import com.google.firebase.analytics.analytics
5+
import com.google.firebase.crashlytics.crashlytics
6+
import com.google.firebase.Firebase as googleFirebase
7+
8+
class Firebase () {
9+
object crashlytics {
10+
fun recordException(@NonNull throwable: Throwable) {
11+
googleFirebase.crashlytics.recordException(throwable)
12+
}
13+
}
14+
companion object {
15+
val analytics = googleFirebase.analytics
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.neilturner.aerialviews.firebase
2+
3+
import com.google.firebase.analytics.FirebaseAnalytics as google_FirebaseAnalytics
4+
5+
class FirebaseAnalytics {
6+
class Param :google_FirebaseAnalytics.Param() {
7+
companion object {
8+
val SCREEN_NAME = google_FirebaseAnalytics.Param.SCREEN_NAME
9+
val SCREEN_CLASS = google_FirebaseAnalytics.Param.SCREEN_CLASS
10+
}
11+
}
12+
13+
class Event :google_FirebaseAnalytics.Event() {
14+
companion object {
15+
val SCREEN_VIEW = google_FirebaseAnalytics.Event.SCREEN_VIEW
16+
}
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.neilturner.aerialviews.firebase;
2+
3+
import androidx.annotation.NonNull
4+
import com.google.firebase.analytics.analytics
5+
import com.google.firebase.crashlytics.crashlytics
6+
import com.google.firebase.Firebase as googleFirebase
7+
8+
class Firebase () {
9+
object crashlytics {
10+
fun recordException(@NonNull throwable: Throwable) {
11+
googleFirebase.crashlytics.recordException(throwable)
12+
}
13+
}
14+
companion object {
15+
val analytics = googleFirebase.analytics
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.neilturner.aerialviews.firebase
2+
3+
import com.google.firebase.analytics.FirebaseAnalytics as google_FirebaseAnalytics
4+
5+
class FirebaseAnalytics {
6+
class Param :google_FirebaseAnalytics.Param() {
7+
companion object {
8+
val SCREEN_NAME = google_FirebaseAnalytics.Param.SCREEN_NAME
9+
val SCREEN_CLASS = google_FirebaseAnalytics.Param.SCREEN_CLASS
10+
}
11+
}
12+
13+
class Event :google_FirebaseAnalytics.Event() {
14+
companion object {
15+
val SCREEN_VIEW = google_FirebaseAnalytics.Event.SCREEN_VIEW
16+
}
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.neilturner.aerialviews.firebase;
2+
3+
import android.os.Bundle
4+
import androidx.annotation.NonNull
5+
6+
class Firebase () {
7+
object crashlytics {
8+
fun recordException(@NonNull throwable: Throwable) {
9+
}
10+
}
11+
12+
object analytics {
13+
fun logEvent(x: String, bundle: Bundle) {
14+
}
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.neilturner.aerialviews.firebase
2+
3+
class FirebaseAnalytics {
4+
class Param {
5+
companion object {
6+
val SCREEN_NAME = "SCREEN_NAME"
7+
val SCREEN_CLASS = "SCREEN_NAME"
8+
}
9+
}
10+
11+
class Event {
12+
companion object {
13+
val SCREEN_VIEW = "SCREEN_VIEW"
14+
}
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.neilturner.aerialviews.firebase;
2+
3+
import androidx.annotation.NonNull
4+
import com.google.firebase.analytics.analytics
5+
import com.google.firebase.crashlytics.crashlytics
6+
import com.google.firebase.Firebase as googleFirebase
7+
8+
class Firebase () {
9+
object crashlytics {
10+
fun recordException(@NonNull throwable: Throwable) {
11+
googleFirebase.crashlytics.recordException(throwable)
12+
}
13+
}
14+
companion object {
15+
val analytics = googleFirebase.analytics
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.neilturner.aerialviews.firebase
2+
3+
import com.google.firebase.analytics.FirebaseAnalytics as google_FirebaseAnalytics
4+
5+
class FirebaseAnalytics {
6+
class Param :google_FirebaseAnalytics.Param() {
7+
companion object {
8+
val SCREEN_NAME = google_FirebaseAnalytics.Param.SCREEN_NAME
9+
val SCREEN_CLASS = google_FirebaseAnalytics.Param.SCREEN_CLASS
10+
}
11+
}
12+
13+
class Event :google_FirebaseAnalytics.Event() {
14+
companion object {
15+
val SCREEN_VIEW = google_FirebaseAnalytics.Event.SCREEN_VIEW
16+
}
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.neilturner.aerialviews.firebase;
2+
3+
import androidx.annotation.NonNull
4+
import com.google.firebase.analytics.analytics
5+
import com.google.firebase.crashlytics.crashlytics
6+
import com.google.firebase.Firebase as googleFirebase
7+
8+
class Firebase () {
9+
object crashlytics {
10+
fun recordException(@NonNull throwable: Throwable) {
11+
googleFirebase.crashlytics.recordException(throwable)
12+
}
13+
}
14+
companion object {
15+
val analytics = googleFirebase.analytics
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.neilturner.aerialviews.firebase
2+
3+
import com.google.firebase.analytics.FirebaseAnalytics as google_FirebaseAnalytics
4+
5+
class FirebaseAnalytics {
6+
class Param :google_FirebaseAnalytics.Param() {
7+
companion object {
8+
val SCREEN_NAME = google_FirebaseAnalytics.Param.SCREEN_NAME
9+
val SCREEN_CLASS = google_FirebaseAnalytics.Param.SCREEN_CLASS
10+
}
11+
}
12+
13+
class Event :google_FirebaseAnalytics.Event() {
14+
companion object {
15+
val SCREEN_VIEW = google_FirebaseAnalytics.Event.SCREEN_VIEW
16+
}
17+
}
18+
}

app/src/main/java/com/neilturner/aerialviews/ui/sources/SambaVideosFragment.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@ import androidx.preference.MultiSelectListPreference
1414
import androidx.preference.Preference
1515
import androidx.preference.PreferenceFragmentCompat
1616
import androidx.preference.PreferenceManager
17-
import com.google.firebase.crashlytics.ktx.crashlytics
18-
import com.google.firebase.ktx.Firebase
1917
import com.hierynomus.mssmb2.SMB2Dialect
2018
import com.neilturner.aerialviews.R
19+
import com.neilturner.aerialviews.firebase.Firebase
2120
import com.neilturner.aerialviews.models.prefs.SambaMediaPrefs
2221
import com.neilturner.aerialviews.providers.SambaMediaProvider
2322
import com.neilturner.aerialviews.utils.PermissionHelper
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.neilturner.aerialviews.utils
22

33
import androidx.core.os.bundleOf
4-
import com.google.firebase.analytics.FirebaseAnalytics
5-
import com.google.firebase.analytics.ktx.analytics
6-
import com.google.firebase.ktx.Firebase
4+
import com.neilturner.aerialviews.BuildConfig
5+
import com.neilturner.aerialviews.firebase.Firebase
6+
import com.neilturner.aerialviews.firebase.FirebaseAnalytics
77

88
object LoggingHelper {
99
private val firebaseAnalytics = Firebase.analytics
@@ -12,12 +12,14 @@ object LoggingHelper {
1212
screenName: String,
1313
activityName: String,
1414
) {
15-
val parameters =
16-
bundleOf(
17-
Pair(FirebaseAnalytics.Param.SCREEN_NAME, screenName),
18-
Pair(FirebaseAnalytics.Param.SCREEN_CLASS, activityName),
19-
)
15+
if (BuildConfig.FIREBASE_AVAILABLE) {
16+
val parameters =
17+
bundleOf(
18+
Pair(FirebaseAnalytics.Param.SCREEN_NAME, screenName),
19+
Pair(FirebaseAnalytics.Param.SCREEN_CLASS, activityName),
20+
)
2021

21-
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW, parameters)
22+
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW, parameters)
23+
}
2224
}
2325
}

0 commit comments

Comments
 (0)