App crashes uploading image to Firebase Storage on Android device, but not Run or Test mode

Hi all,

I'm getting the following error when I try to upload a photo image to Firebase Storage:

E/AndroidRuntime( 4955): java.lang.IllegalArgumentException: The storage Uri cannot contain a path element. E/AndroidRuntime( 4955): at com.google.firebase.storage.FirebaseStorage.getInstanceImpl(FirebaseStorage.java:90) E/AndroidRuntime( 4955): at com.google.firebase.storage.FirebaseStorage.getInstance(FirebaseStorage.java:173) E/AndroidRuntime( 4955): at io.flutter.plugins.firebase.storage.FlutterFirebaseStoragePlugin.getStorage(FlutterFirebaseStoragePlugin.java:156) E/AndroidRuntime( 4955): at io.flutter.plugins.firebase.storage.FlutterFirebaseStoragePlugin.getReference(FlutterFirebaseStoragePlugin.java:179) E/AndroidRuntime( 4955): at io.flutter.plugins.firebase.storage.FlutterFirebaseStoragePlugin.lambda$taskPutData$8$io-flutter-plugins-firebase-storage-FlutterFirebaseStoragePlugin(FlutterFirebaseStoragePlugin.java:363) E/AndroidRuntime( 4955): at io.flutter.plugins.firebase.storage.FlutterFirebaseStoragePlugin$$ExternalSyntheticLambda7.run(Unknown Source:6) E/AndroidRuntime( 4955): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) E/AndroidRuntime( 4955): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) E/AndroidRuntime( 4955): at java.lang.Thread.run(Thread.java:1012)

It all works fine when I use Run and Test modes. But when I try to use my Android device, it crashes on upload. Taking a look at the downloaded code, it seems to fail when it calls the 'result' variable in the storage.dart code:

Future<String?> uploadData(String path, Uint8List data) async {
  final storageRef = FirebaseStorage.instance.ref().child(path);
  final metadata = SettableMetadata(contentType: mime(path));
  final result = await storageRef.putData(data, metadata);
  return result.state == TaskState.success ? result.ref.getDownloadURL() : null;
}

I checked the permissions, and it looks like their there:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

I'm not sure if this is a FF bug or if there's something I've missed and not configured. Any thoughts?

Thanks in advance.

1
5 replies