Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit 2d176e8

Browse files
Bump Firebase Android SDK to the latest available versions #1213
1 parent 526acd3 commit 2d176e8

File tree

16 files changed

+27086
-1290
lines changed

16 files changed

+27086
-1290
lines changed

demo-ng/firebase.nativescript.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,6 @@
2424
"ml_kit_face_detection": true,
2525
"ml_kit_image_labeling": true,
2626
"ml_kit_custom_model": true,
27-
"ml_kit_natural_language_identification": true
27+
"ml_kit_natural_language_identification": true,
28+
"ml_kit_natural_language_smartreply": true
2829
}

publish/scripts/installer.js

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,14 @@ function promptQuestions() {
252252
name: 'ml_kit_custom_model',
253253
description: 'With Ml Kit, do you want to use a custom TensorFlow Lite model? (y/n)',
254254
default: 'n'
255-
// }, {
256-
// name: 'ml_kit_natural_language_identification',
257-
// description: 'With Ml Kit, do you want to use recognize natural languages? (y/n)',
258-
// default: 'n'
255+
}, {
256+
name: 'ml_kit_natural_language_identification',
257+
description: 'With Ml Kit, do you want to recognize natural languages? (y/n)',
258+
default: 'n'
259+
}, {
260+
name: 'ml_kit_natural_language_smartreply',
261+
description: 'With Ml Kit, do you want to use smart reply? (y/n)',
262+
default: 'n'
259263
}], function (mlkitErr, mlkitResult) {
260264
if (mlkitErr) {
261265
return console.log(mlkitErr);
@@ -429,8 +433,10 @@ end`) + `
429433
` + (isSelected(result.ml_kit) && isSelected(result.ml_kit_face_detection) ? `` : `#`) + `pod 'Firebase/MLVisionFaceModel'
430434
` + (isSelected(result.ml_kit) && isSelected(result.ml_kit_image_labeling) ? `` : `#`) + `pod 'Firebase/MLVisionLabelModel'
431435
` + (isSelected(result.ml_kit) && isSelected(result.ml_kit_custom_model) ? `` : `#`) + `pod 'Firebase/MLModelInterpreter'
432-
# Natural Language is commented for now, because of (likely) this issue: https://github.com/firebase/firebase-ios-sdk/issues/2324
433-
` + (isSelected(result.ml_kit) && isSelected(result.ml_kit_natural_language_identification) ? `#` : `#`) + `pod 'Firebase/MLNLLanguageID'
436+
` + (isSelected(result.ml_kit) && isSelected(result.ml_kit_natural_language_identification) ? `` : `#`) + `pod 'Firebase/MLNaturalLanguage'
437+
` + (isSelected(result.ml_kit) && isSelected(result.ml_kit_natural_language_identification) ? `` : `#`) + `pod 'Firebase/MLNLLanguageID'
438+
` + (isSelected(result.ml_kit) && isSelected(result.ml_kit_natural_language_smartreply) ? `` : `#`) + `pod 'Firebase/MLCommon'
439+
` + (isSelected(result.ml_kit) && isSelected(result.ml_kit_natural_language_smartreply) ? `` : `#`) + `pod 'Firebase/MLNLSmartReply'
434440
435441
# Facebook Authentication
436442
` + (isSelected(result.facebook_auth) ? `` : `#`) + `pod 'FBSDKCoreKit', '~> 4.38.0'
@@ -731,67 +737,66 @@ dependencies {
731737
implementation "com.android.support:support-compat:$supportVersion"
732738
733739
// make sure you have these versions by updating your local Android SDK's (Android Support repo and Google repo)
734-
implementation "com.google.firebase:firebase-core:16.0.6"
735-
736-
// implementation "com.google.firebase:firebase-analytics:16.0.6"
740+
implementation "com.google.firebase:firebase-core:16.0.8"
737741
738742
// for reading google-services.json and configuration
739743
implementation "com.google.android.gms:play-services-base:$googlePlayServicesVersion"
740744
741745
// Authentication
742-
` + (!externalPushClientOnly && (!isPresent(result.authentication) || isSelected(result.authentication)) ? `` : `//`) + ` implementation "com.google.firebase:firebase-auth:16.1.0"
746+
` + (!externalPushClientOnly && (!isPresent(result.authentication) || isSelected(result.authentication)) ? `` : `//`) + ` implementation "com.google.firebase:firebase-auth:16.2.1"
743747
744748
// Realtime DB
745-
` + (!externalPushClientOnly && (!isPresent(result.realtimedb) || isSelected(result.realtimedb)) ? `` : `//`) + ` implementation "com.google.firebase:firebase-database:16.0.6"
749+
` + (!externalPushClientOnly && (!isPresent(result.realtimedb) || isSelected(result.realtimedb)) ? `` : `//`) + ` implementation "com.google.firebase:firebase-database:16.1.0"
746750
747751
// Cloud Firestore
748-
` + (isSelected(result.firestore) ? `` : `//`) + ` implementation "com.google.firebase:firebase-firestore:18.0.0"
752+
` + (isSelected(result.firestore) ? `` : `//`) + ` implementation "com.google.firebase:firebase-firestore:18.2.0"
749753
750754
// Remote Config
751-
` + (isSelected(result.remote_config) ? `` : `//`) + ` implementation "com.google.firebase:firebase-config:16.1.3"
755+
` + (isSelected(result.remote_config) ? `` : `//`) + ` implementation "com.google.firebase:firebase-config:16.5.0"
752756
753757
// Performance Monitoring
754-
` + (isSelected(result.performance_monitoring) ? `` : `//`) + ` implementation "com.google.firebase:firebase-perf:16.2.3"
758+
` + (isSelected(result.performance_monitoring) ? `` : `//`) + ` implementation "com.google.firebase:firebase-perf:16.2.5"
755759
756760
// Crash Reporting
757761
` + (isSelected(result.crash_reporting) && !isSelected(result.crashlytics) ? `` : `//`) + ` implementation "com.google.firebase:firebase-crash:16.2.1"
758762
759763
// Crashlytics
760-
` + (isSelected(result.crashlytics) ? `` : `//`) + ` implementation "com.crashlytics.sdk.android:crashlytics:2.9.8"
764+
` + (isSelected(result.crashlytics) ? `` : `//`) + ` implementation "com.crashlytics.sdk.android:crashlytics:2.9.9"
761765
762766
// Cloud Messaging (FCM)
763-
` + (isSelected(result.messaging) || externalPushClientOnly ? `` : `//`) + ` implementation "com.google.firebase:firebase-messaging:17.3.4"
767+
` + (isSelected(result.messaging) || externalPushClientOnly ? `` : `//`) + ` implementation "com.google.firebase:firebase-messaging:17.6.0"
764768
765769
// In-App Messaging
766-
` + (isSelected(result.in_app_messaging) ? `` : `//`) + ` implementation "com.google.firebase:firebase-inappmessaging-display:17.0.5"
770+
` + (isSelected(result.in_app_messaging) ? `` : `//`) + ` implementation "com.google.firebase:firebase-inappmessaging-display:17.1.1"
767771
768772
// Cloud Storage
769-
` + (isSelected(result.storage) ? `` : `//`) + ` implementation "com.google.firebase:firebase-storage:16.0.5"
773+
` + (isSelected(result.storage) ? `` : `//`) + ` implementation "com.google.firebase:firebase-storage:16.1.0"
770774
771775
// Cloud Functions
772-
` + (isSelected(result.functions) ? `` : `//`) + ` implementation "com.google.firebase:firebase-functions:16.1.3"
776+
` + (isSelected(result.functions) ? `` : `//`) + ` implementation "com.google.firebase:firebase-functions:16.3.0"
773777
774778
// AdMob / Ads
775-
` + (isSelected(result.admob) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ads:17.1.2"
779+
` + (isSelected(result.admob) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ads:17.2.0"
776780
777781
// ML Kit
778-
` + (isSelected(result.ml_kit) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ml-vision:18.0.2"
782+
` + (isSelected(result.ml_kit) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ml-vision:19.0.3"
779783
` + (isSelected(result.ml_kit_image_labeling) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ml-vision-image-label-model:17.0.2"
780-
` + (isSelected(result.ml_kit_custom_model) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ml-model-interpreter:16.2.4"
781-
` + (isSelected(result.ml_kit_natural_language_identification) ? `//` : `//`) + ` implementation "com.google.firebase:firebase-ml-natural-language:18.1.1"
782-
` + (isSelected(result.ml_kit_natural_language_identification) ? `//` : `//`) + ` implementation "com.google.firebase:firebase-ml-natural-language-language-id-model:18.0.2"
784+
` + (isSelected(result.ml_kit_custom_model) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ml-model-interpreter:18.0.0"
785+
` + (isSelected(result.ml_kit_natural_language_identification) || isSelected(result.ml_kit_natural_language_smartreply) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ml-natural-language:18.2.0"
786+
` + (isSelected(result.ml_kit_natural_language_identification) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ml-natural-language-language-id-model:18.0.3"
787+
` + (isSelected(result.ml_kit_natural_language_smartreply) ? `` : `//`) + ` implementation "com.google.firebase:firebase-ml-natural-language-smart-reply-model:18.0.0"
783788
784789
// Facebook Authentication
785790
` + (isSelected(result.facebook_auth) ? `` : `//`) + ` implementation ("com.facebook.android:facebook-android-sdk:4.35.0"){ exclude group: 'com.google.zxing' }
786791
787792
// Google Sign-In Authentication
788-
` + (isSelected(result.google_auth) ? `` : `//`) + ` implementation "com.google.android.gms:play-services-auth:16.0.0"
793+
` + (isSelected(result.google_auth) ? `` : `//`) + ` implementation "com.google.android.gms:play-services-auth:$googlePlayServicesVersion"
789794
790795
// Invites
791-
` + (isSelected(result.invites) ? `` : `//`) + ` implementation "com.google.firebase:firebase-invites:16.0.6"
796+
` + (isSelected(result.invites) ? `` : `//`) + ` implementation "com.google.firebase:firebase-invites:16.1.1"
792797
793798
// Dynamic Links
794-
` + (isSelected(result.dynamic_links) ? `` : `//`) + ` implementation "com.google.firebase:firebase-dynamic-links:16.1.5"
799+
` + (isSelected(result.dynamic_links) ? `` : `//`) + ` implementation "com.google.firebase:firebase-dynamic-links:16.1.8"
795800
}
796801
797802
apply plugin: "com.google.gms.google-services"

src/firebase.android.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -553,11 +553,13 @@ firebase.getRemoteConfig = arg => {
553553
.build();
554554
firebaseRemoteConfig.setConfigSettings(remoteConfigSettings);
555555

556+
// TODO async, do we need to wait?
556557
const defaults = firebase.getRemoteConfigDefaults(arg.properties);
557-
firebaseRemoteConfig.setDefaults(firebase.toHashMap(defaults));
558+
firebaseRemoteConfig.setDefaultsAsync(firebase.toHashMap(defaults));
558559

559560
const returnMethod = throttled => {
560-
firebaseRemoteConfig.activateFetched();
561+
// TODO async, so do we need to wait?
562+
firebaseRemoteConfig.activate();
561563

562564
const lastFetchTime = firebaseRemoteConfig.getInfo().getFetchTimeMillis();
563565
const lastFetch = new Date(lastFetchTime);

src/mlkit/custommodel/index.android.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,43 +93,42 @@ export class MLKitCustomModel extends MLKitCustomModelBase {
9393
}
9494
}
9595

96+
const registeredModels = [];
97+
9698
function getInterpreter(localModelFile?: string): any {
9799
const firModelOptionsBuilder = new com.google.firebase.ml.custom.FirebaseModelOptions.Builder();
98100

101+
const localModelName = localModelFile.lastIndexOf("/") === -1 ? localModelFile : localModelFile.substring(localModelFile.lastIndexOf("/") + 1);
99102
let localModelRegistrationSuccess = false;
100-
let cloudModelRegistrationSuccess = false;
101-
let localModelName;
102103

103104
if (localModelFile) {
104-
localModelName = localModelFile.lastIndexOf("/") === -1 ? localModelFile : localModelFile.substring(localModelFile.lastIndexOf("/") + 1);
105-
106-
if (com.google.firebase.ml.custom.FirebaseModelManager.getInstance().getLocalModelSource(localModelName)) {
105+
if (registeredModels.indexOf(localModelName) > -1) {
107106
localModelRegistrationSuccess = true;
108107
firModelOptionsBuilder.setLocalModelName(localModelName)
109108
} else {
110-
console.log("model not yet loaded: " + localModelFile);
111-
112-
const firModelLocalSourceBuilder = new com.google.firebase.ml.custom.model.FirebaseLocalModelSource.Builder(localModelName);
109+
const firModelLocalBuilder = new com.google.firebase.ml.common.modeldownload.FirebaseLocalModel.Builder(localModelName);
113110

114111
if (localModelFile.indexOf("~/") === 0) {
115-
firModelLocalSourceBuilder.setFilePath(fs.knownFolders.currentApp().path + localModelFile.substring(1));
112+
firModelLocalBuilder.setFilePath(fs.knownFolders.currentApp().path + localModelFile.substring(1));
116113
} else {
117114
// note that this doesn't seem to work, let's advice users to use ~/ for now
118-
firModelLocalSourceBuilder.setAssetFilePath(localModelFile);
115+
firModelLocalBuilder.setAssetFilePath(localModelFile);
119116
}
120117

121-
localModelRegistrationSuccess = com.google.firebase.ml.custom.FirebaseModelManager.getInstance().registerLocalModelSource(firModelLocalSourceBuilder.build());
118+
localModelRegistrationSuccess = com.google.firebase.ml.common.modeldownload.FirebaseModelManager.getInstance().registerLocalModel(firModelLocalBuilder.build());
119+
122120
if (localModelRegistrationSuccess) {
121+
registeredModels.push(localModelName);
123122
firModelOptionsBuilder.setLocalModelName(localModelName)
124123
}
125124
}
126125
}
127126

128127
// if (options.cloudModelName) {
129-
// firModelOptionsBuilder.setCloudModelName(options.cloudModelName)
128+
// firModelOptionsBuilder.setRemoteModelName(options.cloudModelName)
130129
// }
131130

132-
if (!localModelRegistrationSuccess && !cloudModelRegistrationSuccess) {
131+
if (!localModelRegistrationSuccess) {
133132
// TODO handle this case upstream
134133
console.log("No (cloud or local) model was successfully loaded.");
135134
return null;

src/mlkit/imagelabeling/index.android.ts

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ export class MLKitImageLabeling extends MLKitImageLabelingBase {
2727

2828
// see https://github.com/firebase/quickstart-android/blob/0f4c86877fc5f771cac95797dffa8bd026dd9dc7/mlkit/app/src/main/java/com/google/firebase/samples/apps/mlkit/textrecognition/TextRecognitionProcessor.java#L62
2929
for (let i = 0; i < labels.size(); i++) {
30-
const label = labels.get(i);
30+
const label: com.google.firebase.ml.vision.label.FirebaseVisionImageLabel = labels.get(i);
3131
result.labels.push({
32-
text: label.getLabel(),
32+
text: label.getText(),
3333
confidence: label.getConfidence()
3434
});
3535
}
@@ -44,13 +44,13 @@ export class MLKitImageLabeling extends MLKitImageLabelingBase {
4444
}
4545
}
4646

47-
function getDetector(confidenceThreshold: number): any {
47+
function getDetector(confidenceThreshold: number): com.google.firebase.ml.vision.label.FirebaseVisionImageLabeler {
4848
const labelDetectorOptions =
49-
new com.google.firebase.ml.vision.label.FirebaseVisionLabelDetectorOptions.Builder()
49+
new com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceImageLabelerOptions.Builder()
5050
.setConfidenceThreshold(confidenceThreshold)
5151
.build();
5252

53-
return com.google.firebase.ml.vision.FirebaseVision.getInstance().getVisionLabelDetector(labelDetectorOptions);
53+
return com.google.firebase.ml.vision.FirebaseVision.getInstance().getOnDeviceImageLabeler(labelDetectorOptions);
5454
}
5555

5656
export function labelImageOnDevice(options: MLKitImageLabelingOptions): Promise<MLKitImageLabelingOnDeviceResult> {
@@ -66,9 +66,9 @@ export function labelImageOnDevice(options: MLKitImageLabelingOptions): Promise<
6666

6767
if (labels) {
6868
for (let i = 0; i < labels.size(); i++) {
69-
const label = labels.get(i);
69+
const label: com.google.firebase.ml.vision.label.FirebaseVisionImageLabel = labels.get(i);
7070
result.labels.push({
71-
text: label.getLabel(),
71+
text: label.getText(),
7272
confidence: label.getConfidence()
7373
});
7474
}
@@ -84,7 +84,7 @@ export function labelImageOnDevice(options: MLKitImageLabelingOptions): Promise<
8484
});
8585

8686
firebaseVisionLabelDetector
87-
.detectInImage(getImage(options))
87+
.processImage(getImage(options))
8888
.addOnSuccessListener(onSuccessListener)
8989
.addOnFailureListener(onFailureListener);
9090

@@ -99,13 +99,11 @@ export function labelImageCloud(options: MLKitImageLabelingOptions): Promise<MLK
9999
return new Promise((resolve, reject) => {
100100
try {
101101
const cloudDetectorOptions =
102-
new com.google.firebase.ml.vision.cloud.FirebaseVisionCloudDetectorOptions.Builder()
103-
// TODO in a future version this may change to only confidenceThreshold (as it now is on iOS)
104-
.setModelType(com.google.firebase.ml.vision.cloud.FirebaseVisionCloudDetectorOptions.STABLE_MODEL)
105-
.setMaxResults(10)
102+
new com.google.firebase.ml.vision.label.FirebaseVisionCloudImageLabelerOptions.Builder()
103+
.setConfidenceThreshold(options.confidenceThreshold || 0.5)
106104
.build();
107105

108-
const firebaseVisionCloudLabelDetector = com.google.firebase.ml.vision.FirebaseVision.getInstance().getVisionCloudLabelDetector(cloudDetectorOptions);
106+
const firebaseVisionCloudLabelDetector = com.google.firebase.ml.vision.FirebaseVision.getInstance().getCloudImageLabeler(cloudDetectorOptions);
109107

110108
const onSuccessListener = new com.google.android.gms.tasks.OnSuccessListener({
111109
onSuccess: labels => {
@@ -115,9 +113,9 @@ export function labelImageCloud(options: MLKitImageLabelingOptions): Promise<MLK
115113

116114
if (labels) {
117115
for (let i = 0; i < labels.size(); i++) {
118-
const label = labels.get(i);
116+
const label: com.google.firebase.ml.vision.label.FirebaseVisionImageLabel = labels.get(i);
119117
result.labels.push({
120-
text: label.getLabel(),
118+
text: label.getText(),
121119
confidence: label.getConfidence()
122120
});
123121
}
@@ -133,7 +131,7 @@ export function labelImageCloud(options: MLKitImageLabelingOptions): Promise<MLK
133131
});
134132

135133
firebaseVisionCloudLabelDetector
136-
.detectInImage(getImage(options))
134+
.processImage(getImage(options))
137135
.addOnSuccessListener(onSuccessListener)
138136
.addOnFailureListener(onFailureListener);
139137

src/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,9 @@
8484
"generate.typings.android.remoteconfig": "npm run generate.typings.android --nativescript-plugin-firebase:typings=remoteconfig",
8585
"generate.typings.android.storage": "npm run generate.typings.android --nativescript-plugin-firebase:typings=storage",
8686
"generate.typings.android.functions": "npm run generate.typings.android --nativescript-plugin-firebase:typings=functions",
87-
"generate.typings.android.mlkit": "npm run generate.typings.android --nativescript-plugin-firebase:typings=mlkit"
87+
"generate.typings.android.mlkit": "npm run generate.typings.android --nativescript-plugin-firebase:typings=mlkit",
88+
"generate.typings.android.crashlytics": "npm run generate.typings.android --nativescript-plugin-firebase:typings=crashlytics",
89+
"generate.typings.android.inappmessaging": "npm run generate.typings.android --nativescript-plugin-firebase:typings=inappmessaging"
8890
},
8991
"repository": {
9092
"type": "git",
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
declare module native { export class Array<T> { constructor(); length: number; [index: number]: T; } }
2+
3+
import globalAndroid = android;
4+

0 commit comments

Comments
 (0)