Reputation: 1233
I have been trying to add the in app update feature to make the user update the app when there is a new update available in the playstore. I am using the package in_app_update.
But it keeps throwing this error,
I/PlayCore( 8420): UID: [10378] PID: [8420] AppUpdateService : requestUpdateInfo(com.example.app)
I/PlayCore( 8420): UID: [10378] PID: [8420] AppUpdateService : Initiate binding to the service.
I/PlayCore( 8420): UID: [10378] PID: [8420] AppUpdateService : ServiceConnectionImpl.onServiceConnected(ComponentInfo{com.android.vending/com.google.android.finsky.installservice.DevTriggeredUpdateService})
I/PlayCore( 8420): UID: [10378] PID: [8420] AppUpdateService : linkToDeath
I/PlayCore( 8420): UID: [10378] PID: [8420] OnRequestInstallCallback : onRequestInfo
I/PlayCore( 8420): UID: [10378] PID: [8420] AppUpdateService : Unbind from service.
W/JavaBinder( 8420): BinderProxy is being destroyed but the application did not call unlinkToDeath to unlink all of its death recipients beforehand. Releasing leaked death recipient: com.google.android.play.core.internal.ac
The code I am using is,
try {
if (Platform.isAndroid) {
InAppUpdate.checkForUpdate().then((info) {
setState(() {
_updateInfo = info;
});
}).catchError((error) => print(error));
if (_updateInfo?.updateAvailable == true) {
InAppUpdate.performImmediateUpdate()
.catchError((error) => print(error));
}
}
} catch(e) {
print(e);
}
After failing with the above package for number of days I tried using another package named native_updater. This package also resulted in the same error. Although I followed their example, which should have worked.
The output of flutter doctor
is,
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 1.22.0-10.0.pre.121, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Android Studio (version 4.0)
[✓] Connected device (1 available)
I could not find any similar question or answer which is why had to post one.
I am using a 64 bit Kali Linux machine.
Upvotes: 16
Views: 11787
Reputation: 116
import 'package:in_app_update/in_app_update.dart';
@override
void initState() {
updatePopUp();
super.initState();
}
updatePopUp() async {
print('<<<<<<=============<<<<<<< Checked');
await InAppUpdate.checkForUpdate().then(
(value) async {
if (value.updateAvailability == UpdateAvailability.updateAvailable) {
await InAppUpdate.startFlexibleUpdate();
}
},// if print is working then all is ok just call updatePopUP() any
);// where you want to show official update pop up. It worked for
}// IMPORTANT: But It must be installed via Google Play to work.
Screenshot:
https://play.google.com/store/apps/details?id=com.abdul.qr_maze
Upvotes: 0
Reputation: 47
Test with internal app sharing
Use internal app sharing to test in-app updates by performing the following steps:
Make sure your test device has a version of your app installed that supports in-app updates and was installed using an internal app sharing URL.
Follow the Play Console instructions to share your app internally. Upload a version of your app that uses a version code that is higher than the one you already have installed on the test device.
On the test device, click the internal app sharing link for the updated version of your app but do not install the app from the Play Store page that appears after you click the link.
Open the app from the device's app drawer or home screen. The update should now be available to your app, and you can test your implementation of in-app updates.
https://developer.android.com/guide/playcore/in-app-updates/test#internal-app-sharing
Upvotes: 0
Reputation: 96
Make sure 4 things, so you can test your in_app_update feature:
Good luck bro!
Upvotes: 3
Reputation: 1390
At first I had the same problem as you. But I noticed something, the app must be downloaded from the Play Store, and an update must be available as well. If you do this by launching the app from flutter or vscode, it is normal that it does not work. I don't know if I was very clear.
Be aware that this plugin cannot be tested locally. It must be installed via Google Play to work. Please check the official documentation about In App Updates from Google.
Upvotes: 12