Skip to content

Commit 87156e7

Browse files
committed
feat(app, android): firebase-android-sdk 31.2.0
Required a change to debug provider in AppCheck as we use some internal tricks there to dynamically inject a debug token and they changed their internals upstream, as is their right
1 parent 9f5f231 commit 87156e7

8 files changed

Lines changed: 39 additions & 23 deletions

File tree

docs/app-distribution/usage/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Add the plugin to your `/android/build.gradle` file as a dependency:
3434
buildscript {
3535
dependencies {
3636
// ...
37-
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.1.1'
37+
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.2.0'
3838
}
3939
```
4040

docs/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ First, add the `google-services` plugin as a dependency inside of your `/android
6464
buildscript {
6565
dependencies {
6666
// ... other dependencies
67-
classpath 'com.google.gms:google-services:4.3.14'
67+
classpath 'com.google.gms:google-services:4.3.15'
6868
// Add me --- /\
6969
}
7070
}
@@ -217,7 +217,7 @@ project.ext {
217217
// Overriding Library SDK Versions
218218
firebase: [
219219
// Override Firebase SDK Version
220-
bom : "31.1.1"
220+
bom : "31.2.0"
221221
],
222222
],
223223
])

packages/app-check/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckProvider.java

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,19 @@
1818
*/
1919

2020
import android.util.Log;
21+
import androidx.annotation.NonNull;
2122
import com.google.android.gms.tasks.Task;
2223
import com.google.firebase.FirebaseApp;
2324
import com.google.firebase.appcheck.AppCheckProvider;
24-
import com.google.firebase.appcheck.AppCheckProviderFactory;
2525
import com.google.firebase.appcheck.AppCheckToken;
2626
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory;
27+
import com.google.firebase.appcheck.debug.InternalDebugSecretProvider;
28+
import com.google.firebase.appcheck.debug.internal.DebugAppCheckProvider;
2729
import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory;
2830
import com.google.firebase.appcheck.safetynet.SafetyNetAppCheckProviderFactory;
29-
import java.lang.reflect.Constructor;
31+
import com.google.firebase.inject.Provider;
32+
import java.util.concurrent.ExecutorService;
33+
import java.util.concurrent.Executors;
3034

3135
// Facade for all possible provider factory delegates,
3236
// configurable dynamically instead of at startup
@@ -35,6 +39,7 @@ public class ReactNativeFirebaseAppCheckProvider implements AppCheckProvider {
3539

3640
AppCheckProvider delegateProvider;
3741

42+
@NonNull
3843
@Override
3944
public Task<AppCheckToken> getToken() {
4045
Log.d(LOGTAG, "Provider::getToken - delegating to native provider");
@@ -58,13 +63,25 @@ public void configure(String appName, String providerName, String debugToken) {
5863

5964
// the debug configuration may have a token, or may not
6065
if (debugToken != null) {
61-
// Create a debug provider using hidden factory constructor and our debug token
62-
Class<DebugAppCheckProviderFactory> debugACFactoryClass =
63-
DebugAppCheckProviderFactory.class;
64-
Class<?>[] argType = {String.class};
65-
Constructor c = debugACFactoryClass.getDeclaredConstructor(argType);
66-
Object[] cArgs = {debugToken};
67-
delegateProvider = ((AppCheckProviderFactory) c.newInstance(cArgs)).create(app);
66+
// To use this token, create debug provider using local secret provider + standard thread
67+
// pool
68+
ExecutorService executor = Executors.newCachedThreadPool();
69+
delegateProvider =
70+
new DebugAppCheckProvider(
71+
app,
72+
new Provider<InternalDebugSecretProvider>() {
73+
public InternalDebugSecretProvider get() {
74+
return new InternalDebugSecretProvider() {
75+
public String getDebugSecret() {
76+
return debugToken;
77+
}
78+
};
79+
}
80+
},
81+
executor,
82+
executor,
83+
executor);
84+
6885
} else {
6986
delegateProvider = DebugAppCheckProviderFactory.getInstance().create(app);
7087
}

packages/app-check/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckProviderFactory.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@
1818
*/
1919

2020
import android.util.Log;
21+
import androidx.annotation.NonNull;
2122
import com.google.firebase.FirebaseApp;
2223
import com.google.firebase.appcheck.AppCheckProvider;
2324
import com.google.firebase.appcheck.AppCheckProviderFactory;
2425
import java.util.HashMap;
25-
import java.util.Map;
2626

2727
public class ReactNativeFirebaseAppCheckProviderFactory implements AppCheckProviderFactory {
2828
private static final String LOGTAG = "RNFBAppCheck";
2929

3030
// This object has one job - create + maintain control over one provider per app
31-
public Map<String, ReactNativeFirebaseAppCheckProvider> providers = new HashMap();
31+
public HashMap<String, ReactNativeFirebaseAppCheckProvider> providers = new HashMap<>();
3232

3333
// Our provider will serve as a facade to all the supported native providers,
3434
// we will just pass through configuration calls to it
@@ -41,7 +41,7 @@ public void configure(String appName, String providerName, String debugToken) {
4141
+ providerName
4242
+ (debugToken != null ? "/(not shown)" : "/null"));
4343

44-
ReactNativeFirebaseAppCheckProvider provider = null;
44+
ReactNativeFirebaseAppCheckProvider provider;
4545

4646
// Look up the correct provider for the given appName, create it if not created
4747
provider = providers.get(appName);
@@ -52,6 +52,7 @@ public void configure(String appName, String providerName, String debugToken) {
5252
provider.configure(appName, providerName, debugToken);
5353
}
5454

55+
@NonNull
5556
public AppCheckProvider create(FirebaseApp firebaseApp) {
5657
String appName = firebaseApp.getName();
5758
Log.d(LOGTAG, "ProviderFactory::create - fetching provider for app " + appName);

packages/app/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@
7373
"minSdk": 19,
7474
"targetSdk": 33,
7575
"compileSdk": 33,
76-
"firebase": "31.1.1",
76+
"firebase": "31.2.0",
7777
"firebaseCrashlyticsGradle": "2.9.2",
7878
"firebasePerfGradle": "1.4.2",
79-
"gmsGoogleServicesGradle": "4.3.14",
79+
"gmsGoogleServicesGradle": "4.3.15",
8080
"playServicesAuth": "20.3.0"
8181
}
8282
}

packages/app/plugin/__tests__/__snapshots__/androidPlugin.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ buildscript {
138138
jcenter()
139139
}
140140
dependencies {
141-
classpath 'com.google.gms:google-services:4.3.14'
141+
classpath 'com.google.gms:google-services:4.3.15'
142142
classpath("com.android.tools.build:gradle:4.1.0")
143143
144144
// NOTE: Do not place your application dependencies here; they belong

packages/perf/android/src/main/java/io/invertase/firebase/perf/UniversalFirebasePerfModule.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ public Map<String, Object> getConstants() {
5555
constants.put(
5656
"isPerformanceCollectionEnabled",
5757
FirebasePerformance.getInstance().isPerformanceCollectionEnabled());
58-
constants.put(
59-
"isInstrumentationEnabled",
60-
true);
58+
constants.put("isInstrumentationEnabled", true);
6159
return constants;
6260
}
6361

tests/android/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ buildscript {
3939
mavenCentral()
4040
}
4141
dependencies {
42-
classpath 'com.google.gms:google-services:4.3.14' // https://developers.google.com/android/guides/google-services-plugin
42+
classpath 'com.google.gms:google-services:4.3.15' // https://developers.google.com/android/guides/google-services-plugin
4343
classpath 'com.android.tools.build:gradle:7.2.1'
4444
classpath("com.facebook.react:react-native-gradle-plugin")
4545
classpath("de.undercouch:gradle-download-task:5.0.1")
4646
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
4747
classpath 'com.google.firebase:perf-plugin:1.4.2'
4848
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
49-
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.1.1'
49+
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.2.0'
5050
}
5151
}
5252

0 commit comments

Comments
 (0)