Skip to content

Commit

Permalink
feat(app, android): firebase-android-sdk 31.2.0
Browse files Browse the repository at this point in the history
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
  • Loading branch information
mikehardy committed Feb 14, 2023
1 parent 9f5f231 commit 87156e7
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 23 deletions.
2 changes: 1 addition & 1 deletion docs/app-distribution/usage/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Add the plugin to your `/android/build.gradle` file as a dependency:
buildscript {
dependencies {
// ...
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.1.1'
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.2.0'
}
```

Expand Down
4 changes: 2 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ First, add the `google-services` plugin as a dependency inside of your `/android
buildscript {
dependencies {
// ... other dependencies
classpath 'com.google.gms:google-services:4.3.14'
classpath 'com.google.gms:google-services:4.3.15'
// Add me --- /\
}
}
Expand Down Expand Up @@ -217,7 +217,7 @@ project.ext {
// Overriding Library SDK Versions
firebase: [
// Override Firebase SDK Version
bom : "31.1.1"
bom : "31.2.0"
],
],
])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,19 @@
*/

import android.util.Log;
import androidx.annotation.NonNull;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseApp;
import com.google.firebase.appcheck.AppCheckProvider;
import com.google.firebase.appcheck.AppCheckProviderFactory;
import com.google.firebase.appcheck.AppCheckToken;
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory;
import com.google.firebase.appcheck.debug.InternalDebugSecretProvider;
import com.google.firebase.appcheck.debug.internal.DebugAppCheckProvider;
import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory;
import com.google.firebase.appcheck.safetynet.SafetyNetAppCheckProviderFactory;
import java.lang.reflect.Constructor;
import com.google.firebase.inject.Provider;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

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

AppCheckProvider delegateProvider;

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

// the debug configuration may have a token, or may not
if (debugToken != null) {
// Create a debug provider using hidden factory constructor and our debug token
Class<DebugAppCheckProviderFactory> debugACFactoryClass =
DebugAppCheckProviderFactory.class;
Class<?>[] argType = {String.class};
Constructor c = debugACFactoryClass.getDeclaredConstructor(argType);
Object[] cArgs = {debugToken};
delegateProvider = ((AppCheckProviderFactory) c.newInstance(cArgs)).create(app);
// To use this token, create debug provider using local secret provider + standard thread
// pool
ExecutorService executor = Executors.newCachedThreadPool();
delegateProvider =
new DebugAppCheckProvider(
app,
new Provider<InternalDebugSecretProvider>() {
public InternalDebugSecretProvider get() {
return new InternalDebugSecretProvider() {
public String getDebugSecret() {
return debugToken;
}
};
}
},
executor,
executor,
executor);

} else {
delegateProvider = DebugAppCheckProviderFactory.getInstance().create(app);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@
*/

import android.util.Log;
import androidx.annotation.NonNull;
import com.google.firebase.FirebaseApp;
import com.google.firebase.appcheck.AppCheckProvider;
import com.google.firebase.appcheck.AppCheckProviderFactory;
import java.util.HashMap;
import java.util.Map;

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

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

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

ReactNativeFirebaseAppCheckProvider provider = null;
ReactNativeFirebaseAppCheckProvider provider;

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

@NonNull
public AppCheckProvider create(FirebaseApp firebaseApp) {
String appName = firebaseApp.getName();
Log.d(LOGTAG, "ProviderFactory::create - fetching provider for app " + appName);
Expand Down
4 changes: 2 additions & 2 deletions packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,10 @@
"minSdk": 19,
"targetSdk": 33,
"compileSdk": 33,
"firebase": "31.1.1",
"firebase": "31.2.0",
"firebaseCrashlyticsGradle": "2.9.2",
"firebasePerfGradle": "1.4.2",
"gmsGoogleServicesGradle": "4.3.14",
"gmsGoogleServicesGradle": "4.3.15",
"playServicesAuth": "20.3.0"
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.14'
classpath 'com.google.gms:google-services:4.3.15'
classpath("com.android.tools.build:gradle:4.1.0")
// NOTE: Do not place your application dependencies here; they belong
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,7 @@ public Map<String, Object> getConstants() {
constants.put(
"isPerformanceCollectionEnabled",
FirebasePerformance.getInstance().isPerformanceCollectionEnabled());
constants.put(
"isInstrumentationEnabled",
true);
constants.put("isInstrumentationEnabled", true);
return constants;
}

Expand Down
4 changes: 2 additions & 2 deletions tests/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.14' // https://developers.google.com/android/guides/google-services-plugin
classpath 'com.google.gms:google-services:4.3.15' // https://developers.google.com/android/guides/google-services-plugin
classpath 'com.android.tools.build:gradle:7.2.1'
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("de.undercouch:gradle-download-task:5.0.1")
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
classpath 'com.google.firebase:perf-plugin:1.4.2'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.1.1'
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.2.0'
}
}

Expand Down

0 comments on commit 87156e7

Please sign in to comment.