Everything works fine in debug mode and release on emulator, but reading values from FlutterSecureStorage
fails on a physical device. Other functionalities in application work properly, when I comment using FlutterSecureStorage
.
After installing .apk file and launching application on a device, it uses FlutterSecureStorage
to get information if user is logged in or not, along with other values. I expect null during first run, of course, but storage.read(key)
seams to fail before returning any value.
Added backup tags in main/AndroidManifest.xml
<application
...
android:allowBackup="false"
android:fullBackupContent="false">
Added deleting keys on startup
final FlutterSecureStorage storage = FlutterSecureStorage();
Future<void> checkIfUserIsSignedIn() async {
storage.deleteAll();
try{
isUserSignedIn = await storage.read(key: _isLoggedIn);
}
catch (e){
print(e);
}
setState(() {});
}
Tried with FlutterSecureStorage v.3.3.3
and FlutterSecureStorage v.3.2.0
, but there was no change.
I checked SDK version of my device (Honor 10) - 29. Also checked on other device (Samsung Galaxy S9+), but the issue also occurs.
Running flutter run --release
causes warnings:
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: C:\Users\karo\flutter\.pub-cache\hosted\pub.dartlang.org\flutter_secure_storage-3.2.0\android\src\main\java\com\it_nomads\fluttersecurestorage\FlutterSecureStoragePlugin.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
and error:
Installing build\app\outputs\flutter-apk\app.apk... 376ms
Error: ADB exited with exit code 1
Performing Streamed Install
adb: failed to install C:\Users\karo\idom_mobile\build\app\outputs\flutter-apk\app.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.project.idom signatures do not match previously installed version; ignoring!]
Uninstalling old version...
Installing build\app\outputs\flutter-apk\app.apk... 6.9s
but successfully installs application on emulator and everything works as expected.
The problem is when I install application on physical device. To generate .apk I use flutter build apk --release
and install using app-release.apk file as stated in build log:
flutter build apk --release
You are building a fat APK that includes binaries for android-arm, android-arm64, android-x64.
If you are deploying the app to the Play Store, it's recommended to use app bundles or split the APK to reduce the APK size.
To generate an app bundle, run:
flutter build appbundle --target-platform android-arm,android-arm64,android-x64
Learn more on: https://developer.android.com/guide/app-bundle
To split the APKs per ABI, run:
flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi
Learn more on: https://developer.android.com/studio/build/configure-apk-splits#configure-abi-split
Running Gradle task 'assembleRelease'...
Running Gradle task 'assembleRelease'... Done 69.9s
√ Built build\app\outputs\flutter-apk\app-release.apk (48.9MB).
My flutter doctor -v
flutter doctor -v
[√] Flutter (Channel dev, 1.24.0-10.2.pre, on Microsoft Windows [Version 10.0.18362.1198], locale en-GB)
• Flutter version 1.24.0-10.2.pre at C:\Users\karo\flutter
• Framework revision 022b333a08 (27 hours ago), 2020-11-18 11:35:09 -0800
• Engine revision 07c1eed46b
• Dart version 2.12.0 (build 2.12.0-29.10.beta)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at C:\Users\karo\AppData\Local\Android\sdk
• Platform android-30, build-tools 30.0.2
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
• All Android licenses accepted.
[√] Android Studio (version 4.1.0)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
[√] Connected device (1 available)
• Android SDK built for x86 64 (mobile) • emulator-5554 • android-x64 • Android 10 (API 29) (emulator)
• No issues found!
I tried to make sure my project is migrated to AndroidX and got a message: No Usages Found in the Project
.
I don't have any more ideas, could you help me?
EDIT
I tried using SharedPreferences
as a temporary workaround, but it still didn't work - as I guess, the package was not initialized.
I built my app with flutter build apk --release --no-shrink
after reading this thread https://github.com/flutter/flutter/issues/65334.
Then tried flutter build apk --release --no-shrink
with the version of my application that uses FlutterSecureStorage
and it worked.
Should I really consider it as a valid fix and always build my application this way?