-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
flutter/plugins
#6174Labels
P0Critical issues such as a build break or regressionCritical issues such as a build break or regressionc: regressionIt was better in the past than it is nowIt was better in the past than it is nowp: in_app_purchasePlugin for in-app purchasePlugin for in-app purchasepackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyAndroid applications specifically
Description
Restore purchases does not do anything!
I can buy a product. If I try to buy again I get an error "you already own this item", so the store recognizes that the product was purchased before. But clicking "restore pruchases" after data clean does nothing.
_inAppPurchase.restorePurchases()
This is on Android emulator (Pixel 4 API 32) and real device (Samsung A20)
Steps to Reproduce
- Use the code from the package example (I have modified the code below)
- Buy a product
- Clear app data using Andoid OS
- Start the app again and try to restore purchases
Expected results:
Purchases restored or an error displayed
Actual results:
Nothing happens, no error, no store UI, zilch
Below code is flutter team code from the in_app_purchase package example. I have just removed all consumable and subscription stuff. Source: https://github.com/flutter/plugins/blob/main/packages/in_app_purchase/in_app_purchase/example/lib/main.dart
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// ignore_for_file: use_build_context_synchronously, depend_on_referenced_packages
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:in_app_purchase/in_app_purchase.dart';
import 'package:in_app_purchase_android/billing_client_wrappers.dart';
import 'package:in_app_purchase_android/in_app_purchase_android.dart';
import 'package:in_app_purchase_storekit/in_app_purchase_storekit.dart';
import 'package:in_app_purchase_storekit/store_kit_wrappers.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(_MyApp());
}
const String _kUpgradeId = 'full_version';
const List<String> _kProductIds = <String>[
_kUpgradeId,
];
class _MyApp extends StatefulWidget {
@override
State<_MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<_MyApp> {
final InAppPurchase _inAppPurchase = InAppPurchase.instance;
late StreamSubscription<List<PurchaseDetails>> _subscription;
List<String> _notFoundIds = <String>[];
List<ProductDetails> _products = <ProductDetails>[];
List<PurchaseDetails> _purchases = <PurchaseDetails>[];
bool _isAvailable = false;
bool _purchasePending = false;
bool _loading = true;
String? _queryProductError;
@override
void initState() {
final Stream<List<PurchaseDetails>> purchaseUpdated =
_inAppPurchase.purchaseStream;
_subscription =
purchaseUpdated.listen((List<PurchaseDetails> purchaseDetailsList) {
_listenToPurchaseUpdated(purchaseDetailsList);
}, onDone: () {
_subscription.cancel();
}, onError: (Object error) {
// handle error here.
});
initStoreInfo();
super.initState();
}
Future<void> initStoreInfo() async {
final bool isAvailable = await _inAppPurchase.isAvailable();
print("store is available: $isAvailable");
if (!isAvailable) {
print("store is on available.");
setState(() {
_isAvailable = isAvailable;
_products = <ProductDetails>[];
_purchases = <PurchaseDetails>[];
_notFoundIds = <String>[];
_purchasePending = false;
_loading = false;
});
return;
}
final ProductDetailsResponse productDetailResponse =
await _inAppPurchase.queryProductDetails(_kProductIds.toSet());
if (productDetailResponse.error != null) {
print("product query error.");
setState(() {
_queryProductError = productDetailResponse.error!.message;
_isAvailable = isAvailable;
_products = productDetailResponse.productDetails;
_purchases = <PurchaseDetails>[];
_notFoundIds = productDetailResponse.notFoundIDs;
_purchasePending = false;
_loading = false;
});
return;
}
if (productDetailResponse.productDetails.isEmpty) {
print("product query isEmpty.");
setState(() {
_queryProductError = null;
_isAvailable = isAvailable;
_products = productDetailResponse.productDetails;
_purchases = <PurchaseDetails>[];
_notFoundIds = productDetailResponse.notFoundIDs;
_purchasePending = false;
_loading = false;
});
return;
}
setState(() {
_isAvailable = isAvailable;
_products = productDetailResponse.productDetails;
_notFoundIds = productDetailResponse.notFoundIDs;
_purchasePending = false;
_loading = false;
});
}
@override
void dispose() {
_subscription.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
final List<Widget> stack = <Widget>[];
if (_queryProductError == null) {
stack.add(
ListView(
children: <Widget>[
_buildConnectionCheckTile(),
_buildProductList(),
_buildRestoreButton(),
],
),
);
} else {
stack.add(Center(
child: Text(_queryProductError!),
));
}
if (_purchasePending) {
stack.add(
Stack(
children: const <Widget>[
Opacity(
opacity: 0.3,
child: ModalBarrier(dismissible: false, color: Colors.grey),
),
Center(
child: CircularProgressIndicator(),
),
],
),
);
}
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('IAP Example'),
),
body: Stack(
children: stack,
),
),
);
}
Card _buildConnectionCheckTile() {
if (_loading) {
return const Card(child: ListTile(title: Text('Trying to connect...')));
}
final Widget storeHeader = ListTile(
leading: Icon(_isAvailable ? Icons.check : Icons.block,
color: _isAvailable ? Colors.green : ThemeData.light().errorColor),
title:
Text('The store is ${_isAvailable ? 'available' : 'unavailable'}.'),
);
final List<Widget> children = <Widget>[storeHeader];
if (!_isAvailable) {
children.addAll(<Widget>[
const Divider(),
ListTile(
title: Text('Not connected',
style: TextStyle(color: ThemeData.light().errorColor)),
subtitle: const Text(
'Unable to connect to the payments processor. Has this app been configured correctly? See the example README for instructions.'),
),
]);
}
return Card(child: Column(children: children));
}
Card _buildProductList() {
if (_loading) {
return const Card(
child: ListTile(
leading: CircularProgressIndicator(),
title: Text('Fetching products...')));
}
if (!_isAvailable) {
return const Card();
}
const ListTile productHeader = ListTile(title: Text('Products for Sale'));
final List<ListTile> productList = <ListTile>[];
if (_notFoundIds.isNotEmpty) {
productList.add(ListTile(
title: Text('[${_notFoundIds.join(", ")}] not found',
style: TextStyle(color: ThemeData.light().errorColor)),
subtitle: const Text(
'This app needs special configuration to run. Please see example/README.md for instructions.')));
}
// This loading previous purchases code is just a demo. Please do not use this as it is.
// In your app you should always verify the purchase data using the `verificationData` inside the [PurchaseDetails] object before trusting it.
// We recommend that you use your own server to verify the purchase data.
final Map<String, PurchaseDetails> purchases =
Map<String, PurchaseDetails>.fromEntries(
_purchases.map((PurchaseDetails purchase) {
if (purchase.pendingCompletePurchase) {
_inAppPurchase.completePurchase(purchase);
}
return MapEntry<String, PurchaseDetails>(purchase.productID, purchase);
}));
productList.addAll(_products.map(
(ProductDetails productDetails) {
final PurchaseDetails? previousPurchase = purchases[productDetails.id];
return ListTile(
title: Text(
productDetails.title,
),
subtitle: Text(
productDetails.description,
),
trailing: previousPurchase != null
? IconButton(
onPressed: () => confirmPriceChange(context),
icon: const Icon(Icons.upgrade))
: TextButton(
style: TextButton.styleFrom(
backgroundColor: Colors.green[800],
primary: Colors.white,
),
onPressed: () {
late PurchaseParam purchaseParam;
purchaseParam = GooglePlayPurchaseParam(
productDetails: productDetails,
applicationUserName: null,
changeSubscriptionParam: null);
_inAppPurchase.buyNonConsumable(
purchaseParam: purchaseParam);
},
child: Text(productDetails.price),
),
);
},
));
return Card(
child: Column(
children: <Widget>[productHeader, const Divider()] + productList));
}
Widget _buildRestoreButton() {
if (_loading) {
return Container();
}
return Padding(
padding: const EdgeInsets.all(4.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
TextButton(
style: TextButton.styleFrom(
backgroundColor: Theme.of(context).primaryColor,
primary: Colors.white,
),
onPressed: () => _inAppPurchase.restorePurchases(),
child: const Text('Restore purchases'),
),
],
),
);
}
void showPendingUI() {
setState(() {
_purchasePending = true;
});
}
Future<void> deliverProduct(PurchaseDetails purchaseDetails) async {
// IMPORTANT!! Always verify purchase details before delivering the product.
setState(() {
_purchases.add(purchaseDetails);
_purchasePending = false;
});
}
void handleError(IAPError error) {
setState(() {
_purchasePending = false;
});
}
Future<bool> _verifyPurchase(PurchaseDetails purchaseDetails) {
// IMPORTANT!! Always verify a purchase before delivering the product.
// For the purpose of an example, we directly return true.
return Future<bool>.value(true);
}
void _handleInvalidPurchase(PurchaseDetails purchaseDetails) {
// handle invalid purchase here if _verifyPurchase` failed.
}
Future<void> _listenToPurchaseUpdated(
List<PurchaseDetails> purchaseDetailsList) async {
for (final PurchaseDetails purchaseDetails in purchaseDetailsList) {
if (purchaseDetails.status == PurchaseStatus.pending) {
showPendingUI();
} else {
if (purchaseDetails.status == PurchaseStatus.error) {
handleError(purchaseDetails.error!);
} else if (purchaseDetails.status == PurchaseStatus.purchased ||
purchaseDetails.status == PurchaseStatus.restored) {
final bool valid = await _verifyPurchase(purchaseDetails);
if (valid) {
deliverProduct(purchaseDetails);
} else {
_handleInvalidPurchase(purchaseDetails);
return;
}
}
if (purchaseDetails.pendingCompletePurchase) {
await _inAppPurchase.completePurchase(purchaseDetails);
}
}
}
}
Future<void> confirmPriceChange(BuildContext context) async {
if (Platform.isAndroid) {
final InAppPurchaseAndroidPlatformAddition androidAddition =
_inAppPurchase
.getPlatformAddition<InAppPurchaseAndroidPlatformAddition>();
final BillingResultWrapper priceChangeConfirmationResult =
await androidAddition.launchPriceChangeConfirmationFlow(
sku: 'purchaseId',
);
if (priceChangeConfirmationResult.responseCode == BillingResponse.ok) {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
content: Text('Price change accepted'),
));
} else {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
priceChangeConfirmationResult.debugMessage ??
'Price change failed with code ${priceChangeConfirmationResult.responseCode}',
),
));
}
}
if (Platform.isIOS) {
final InAppPurchaseStoreKitPlatformAddition iapStoreKitPlatformAddition =
_inAppPurchase
.getPlatformAddition<InAppPurchaseStoreKitPlatformAddition>();
await iapStoreKitPlatformAddition.showPriceConsentIfNeeded();
}
}
}
/// Example implementation of the
/// [`SKPaymentQueueDelegate`](https://developer.apple.com/documentation/storekit/skpaymentqueuedelegate?language=objc).
///
/// The payment queue delegate can be implementated to provide information
/// needed to complete transactions.
class ExamplePaymentQueueDelegate implements SKPaymentQueueDelegateWrapper {
@override
bool shouldContinueTransaction(
SKPaymentTransactionWrapper transaction, SKStorefrontWrapper storefront) {
return true;
}
@override
bool shouldShowPriceConsent() {
return false;
}
}
Logs
C:\src\Projects\bug>flutter run --verbose
[ +148 ms] executing: [C:\src\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[ +904 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[ +1 ms] 85684f9300908116a78138ea4c6036c35c9a1236
[ +1 ms] executing: [C:\src\flutter/] git tag --points-at 85684f9300908116a78138ea4c6036c35c9a1236
[ +202 ms] Exit code 0 from: git tag --points-at 85684f9300908116a78138ea4c6036c35c9a1236
[ +1 ms] 3.0.4
[ +20 ms] executing: [C:\src\flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[ +177 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[ ] origin/stable
[ ] executing: [C:\src\flutter/] git ls-remote --get-url origin
[ +87 ms] Exit code 0 from: git ls-remote --get-url origin
[ ] https://github.com/flutter/flutter.git
[ +243 ms] executing: [C:\src\flutter/] git rev-parse --abbrev-ref HEAD
[ +109 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[ +1 ms] stable
[ +184 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[ +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[ +1 ms] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[ +11 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[ ] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
[ +1 ms] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[ +4 ms] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[ +1 ms] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[ +6 ms] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[ +1 ms] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +140 ms] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe devices -l
[ +255 ms] List of devices attached
emulator-5554 device product:sdk_gphone64_x86_64 model:sdk_gphone64_x86_64 device:emulator64_x86_64_arm64 transport_id:1
[ +17 ms] C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell getprop
[ +404 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[ +1 ms] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[ +17 ms] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
[ +1 ms] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[ +1 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[ +5 ms] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +319 ms] Skipping pub get: version match.
[ +71 ms] Found plugin in_app_purchase at C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\in_app_purchase-3.0.6\
[ +8 ms] Found plugin in_app_purchase_android at C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\in_app_purchase_android-0.2.3\
[ +6 ms] Found plugin in_app_purchase_storekit at C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\in_app_purchase_storekit-0.3.1\
[ +118 ms] Found plugin in_app_purchase at C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\in_app_purchase-3.0.6\
[ +4 ms] Found plugin in_app_purchase_android at C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\in_app_purchase_android-0.2.3\
[ +7 ms] Found plugin in_app_purchase_storekit at C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\in_app_purchase_storekit-0.3.1\
[ +78 ms] Generating C:\src\Projects\bug\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java
[ +182 ms] ro.hardware = ranchu
[ +39 ms] Using hardware rendering with device sdk gphone64 x86 64. If you notice graphics artifacts, consider enabling software rendering with "--enable-software-rendering".
[ +74 ms] Initializing file store
[ +38 ms] Skipping target: gen_localizations
[ +9 ms] gen_dart_plugin_registrant: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: C:\src\Projects\bug\.dart_tool\package_config_subset}
[ +47 ms] Found plugin in_app_purchase at C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\in_app_purchase-3.0.6\
[ +9 ms] Found plugin in_app_purchase_android at C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\in_app_purchase_android-0.2.3\
[ +4 ms] Found plugin in_app_purchase_storekit at C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\in_app_purchase_storekit-0.3.1\
[ +38 ms] gen_dart_plugin_registrant: Complete
[ +7 ms] Skipping target: _composite
[ +13 ms] complete
[ +15 ms] Launching lib\main.dart on sdk gphone64 x86 64 in debug mode...
[ +11 ms] C:\src\flutter\bin\cache\dart-sdk\bin\dart.exe --disable-dart-dev C:\src\flutter\bin\cache\dart-sdk\bin\snapshots\frontend_server.dart.snapshot --sdk-root
C:\src\flutter\bin\cache\artifacts\engine\common\flutter_patched_sdk/ --incremental --target=flutter --debugger-module-names --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true --output-dill
C:\Users\AppData\Local\Temp\flutter_tools.4382684f\flutter_tool.79e50f6a\app.dill --packages C:\src\Projects\bug\.dart_tool\package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false
--enable-asserts --track-widget-creation --filesystem-scheme org-dartlang-root --initialize-from-dill build\c075001b96339384a97db4862b8ab8db.cache.dill.track.dill
--enable-experiment=alternative-invalidation-strategy
[ +33 ms] executing: C:\Users\AppData\Local\Android\sdk\build-tools\32.1.0-rc1\aapt dump xmltree C:\src\Projects\bug\build\app\outputs\flutter-apk\app.apk AndroidManifest.xml
[ +70 ms] Exit code 0 from: C:\Users\AppData\Local\Android\sdk\build-tools\32.1.0-rc1\aapt dump xmltree C:\src\Projects\bug\build\app\outputs\flutter-apk\app.apk AndroidManifest.xml
[ ] N: android=http://schemas.android.com/apk/res/android
E: manifest (line=2)
A: android:versionCode(0x0101021b)=(type 0x10)0x1
A: android:versionName(0x0101021c)="1.0.0" (Raw: "1.0.0")
A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1f
A: android:compileSdkVersionCodename(0x01010573)="12" (Raw: "12")
A: package="com.example.bug" (Raw: "com.example.bug")
A: platformBuildVersionCode=(type 0x10)0x1f
A: platformBuildVersionName=(type 0x10)0xc
E: uses-sdk (line=7)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0x1d
A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1f
E: uses-permission (line=15)
A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
E: uses-permission (line=16)
A: android:name(0x01010003)="android.permission.WAKE_LOCK" (Raw: "android.permission.WAKE_LOCK")
E: uses-permission (line=17)
A: android:name(0x01010003)="android.permission.ACCESS_NETWORK_STATE" (Raw: "android.permission.ACCESS_NETWORK_STATE")
E: uses-permission (line=18)
A: android:name(0x01010003)="android.permission.RECEIVE_BOOT_COMPLETED" (Raw: "android.permission.RECEIVE_BOOT_COMPLETED")
E: uses-permission (line=19)
A: android:name(0x01010003)="android.permission.FOREGROUND_SERVICE" (Raw: "android.permission.FOREGROUND_SERVICE")
E: uses-permission (line=20)
A: android:name(0x01010003)="com.android.vending.BILLING" (Raw: "com.android.vending.BILLING")
E: application (line=22)
A: android:label(0x01010001)="bug" (Raw: "bug")
A: android:icon(0x01010002)=@0x7f090000
A: android:name(0x01010003)="android.app.Application" (Raw: "android.app.Application")
A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff
A: android:extractNativeLibs(0x010104ea)=(type 0x12)0x0
A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw: "androidx.core.app.CoreComponentFactory")
E: activity (line=29)
A: android:theme(0x01010000)=@0x7f0b0000
A: android:name(0x01010003)="com.example.bug.MainActivity" (Raw: "com.example.bug.MainActivity")
A: android:exported(0x01010010)=(type 0x12)0xffffffff
A: android:launchMode(0x0101001d)=(type 0x10)0x1
A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
E: meta-data (line=44)
A: android:name(0x01010003)="io.flutter.embedding.android.NormalTheme" (Raw: "io.flutter.embedding.android.NormalTheme")
A: android:resource(0x01010025)=@0x7f0b0001
E: intent-filter (line=48)
E: action (line=49)
A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
E: category (line=51)
A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
E: meta-data (line=58)
A: android:name(0x01010003)="flutterEmbedding" (Raw: "flutterEmbedding")
A: android:value(0x01010024)=(type 0x10)0x2
E: uses-library (line=62)
A: android:name(0x01010003)="androidx.window.extensions" (Raw: "androidx.window.extensions")
A: android:required(0x0101028e)=(type 0x12)0x0
E: uses-library (line=65)
A: android:name(0x01010003)="androidx.window.sidecar" (Raw: "androidx.window.sidecar")
A: android:required(0x0101028e)=(type 0x12)0x0
E: provider (line=69)
A: android:name(0x01010003)="androidx.startup.InitializationProvider" (Raw: "androidx.startup.InitializationProvider")
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:authorities(0x01010018)="com.example.bug.androidx-startup" (Raw: "com.example.bug.androidx-startup")
E: meta-data (line=73)
A: android:name(0x01010003)="androidx.work.WorkManagerInitializer" (Raw: "androidx.work.WorkManagerInitializer")
A: android:value(0x01010024)="androidx.startup" (Raw: "androidx.startup")
E: service (line=78)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.SystemAlarmService" (Raw: "androidx.work.impl.background.systemalarm.SystemAlarmService")
A: android:enabled(0x0101000e)=@0x7f020000
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: service (line=83)
A: android:name(0x01010003)="androidx.work.impl.background.systemjob.SystemJobService" (Raw: "androidx.work.impl.background.systemjob.SystemJobService")
A: android:permission(0x01010006)="android.permission.BIND_JOB_SERVICE" (Raw: "android.permission.BIND_JOB_SERVICE")
A: android:enabled(0x0101000e)=@0x7f020002
A: android:exported(0x01010010)=(type 0x12)0xffffffff
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: service (line=89)
A: android:name(0x01010003)="androidx.work.impl.foreground.SystemForegroundService" (Raw: "androidx.work.impl.foreground.SystemForegroundService")
A: android:enabled(0x0101000e)=@0x7f020001
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: receiver (line=95)
A: android:name(0x01010003)="androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver" (Raw: "androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver")
A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: receiver (line=100)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy" (Raw:
"androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=105)
E: action (line=106)
A: android:name(0x01010003)="android.intent.action.ACTION_POWER_CONNECTED" (Raw: "android.intent.action.ACTION_POWER_CONNECTED")
E: action (line=107)
A: android:name(0x01010003)="android.intent.action.ACTION_POWER_DISCONNECTED" (Raw: "android.intent.action.ACTION_POWER_DISCONNECTED")
E: receiver (line=110)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy" (Raw: "androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=115)
E: action (line=116)
A: android:name(0x01010003)="android.intent.action.BATTERY_OKAY" (Raw: "android.intent.action.BATTERY_OKAY")
E: action (line=117)
A: android:name(0x01010003)="android.intent.action.BATTERY_LOW" (Raw: "android.intent.action.BATTERY_LOW")
E: receiver (line=120)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy" (Raw: "androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=125)
E: action (line=126)
A: android:name(0x01010003)="android.intent.action.DEVICE_STORAGE_LOW" (Raw: "android.intent.action.DEVICE_STORAGE_LOW")
E: action (line=127)
A: android:name(0x01010003)="android.intent.action.DEVICE_STORAGE_OK" (Raw: "android.intent.action.DEVICE_STORAGE_OK")
E: receiver (line=130)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy" (Raw: "androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=135)
E: action (line=136)
A: android:name(0x01010003)="android.net.conn.CONNECTIVITY_CHANGE" (Raw: "android.net.conn.CONNECTIVITY_CHANGE")
E: receiver (line=139)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.RescheduleReceiver" (Raw: "androidx.work.impl.background.systemalarm.RescheduleReceiver")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=144)
E: action (line=145)
A: android:name(0x01010003)="android.intent.action.BOOT_COMPLETED" (Raw: "android.intent.action.BOOT_COMPLETED")
E: action (line=146)
A: android:name(0x01010003)="android.intent.action.TIME_SET" (Raw: "android.intent.action.TIME_SET")
E: action (line=147)
A: android:name(0x01010003)="android.intent.action.TIMEZONE_CHANGED" (Raw: "android.intent.action.TIMEZONE_CHANGED")
E: receiver (line=150)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver" (Raw: "androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver")
A: android:enabled(0x0101000e)=@0x7f020000
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=155)
E: action (line=156)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.UpdateProxies" (Raw: "androidx.work.impl.background.systemalarm.UpdateProxies")
E: receiver (line=159)
A: android:name(0x01010003)="androidx.work.impl.diagnostics.DiagnosticsReceiver" (Raw: "androidx.work.impl.diagnostics.DiagnosticsReceiver")
A: android:permission(0x01010006)="android.permission.DUMP" (Raw: "android.permission.DUMP")
A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
A: android:exported(0x01010010)=(type 0x12)0xffffffff
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=165)
E: action (line=166)
A: android:name(0x01010003)="androidx.work.diagnostics.REQUEST_DIAGNOSTICS" (Raw: "androidx.work.diagnostics.REQUEST_DIAGNOSTICS")
E: service (line=170)
A: android:name(0x01010003)="androidx.room.MultiInstanceInvalidationService" (Raw: "androidx.room.MultiInstanceInvalidationService")
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0xffffffff
E: meta-data (line=175)
A: android:name(0x01010003)="com.google.android.play.billingclient.version" (Raw: "com.google.android.play.billingclient.version")
A: android:value(0x01010024)="5.0.0" (Raw: "5.0.0")
E: activity (line=179)
A: android:theme(0x01010000)=@0x01030010
A: android:name(0x01010003)="com.android.billingclient.api.ProxyBillingActivity" (Raw: "com.android.billingclient.api.ProxyBillingActivity")
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:configChanges(0x0101001f)=(type 0x11)0x5b0
[ +46 ms] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell -x logcat -v time -t 1
[ +43 ms] <- compile package:bug/main.dart
[ +539 ms] --------- beginning of main
07-12 20:50:31.421 D/WifiNative( 529): Scan result ready event
[ +42 ms] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe version
[ +299 ms] Android Debug Bridge version 1.0.41
Version 33.0.2-8557947
Installed as C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe
[ +7 ms] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe start-server
[ +267 ms] Building APK
[ +44 ms] Running Gradle task 'assembleDebug'...
[ +45 ms] Using gradle from C:\src\Projects\bug\android\gradlew.bat.
[ +73 ms] executing: C:\Program Files\Android\Android Studio\jre\bin\java -version
[ +312 ms] Exit code 0 from: C:\Program Files\Android\Android Studio\jre\bin\java -version
[ ] openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
OpenJDK 64-Bit Server VM (build 11.0.12+7-b1504.28-7817840, mixed mode)
[ +4 ms] executing: [C:\src\Projects\bug\android/] C:\src\Projects\bug\android\gradlew.bat -Pverbose=true -Ptarget-platform=android-x64 -Ptarget=C:\src\Projects\bug\lib\main.dart
-Pbase-application-name=android.app.Application -Pdart-defines=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ== -Pdart-obfuscation=false -Ptrack-widget-creation=true -Ptree-shake-icons=false
-Pfilesystem-scheme=org-dartlang-root assembleDebug
[+3194 ms] ../../flutter/.pub-cache/hosted/pub.dartlang.org/in_app_purchase_android-0.2.3/lib/src/billing_client_wrappers/purchase_wrapper.g.dart:16:27: Warning: Operand of null-aware operation '?.' has type
'List<dynamic>' which excludes null.
[ +8 ms] - 'List' is from 'dart:core'.
[ +171 ms] ? (json['skus'] as List)?.map((item) => item as String)?.toList() ??
[ +143 ms] ^
[ +132 ms] ../../flutter/.pub-cache/hosted/pub.dartlang.org/in_app_purchase_android-0.2.3/lib/src/billing_client_wrappers/purchase_wrapper.g.dart:35:27: Warning: Operand of null-aware operation '?.' has type
'List<dynamic>' which excludes null.
[ +59 ms] - 'List' is from 'dart:core'.
[ +2 ms] ? (json['skus'] as List)?.map((item) => item as String)?.toList() ??
[ +1 ms] ^
[ +695 ms] > Task :app:preBuild UP-TO-DATE
[ +58 ms] > Task :app:preDebugBuild UP-TO-DATE
[ +51 ms] > Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
[ +45 ms] > Task :app:compileFlutterBuildDebug UP-TO-DATE
[ +14 ms] > Task :app:packLibsflutterBuildDebug UP-TO-DATE
[ ] > Task :in_app_purchase_android:preBuild UP-TO-DATE
[ +4 ms] > Task :in_app_purchase_android:preDebugBuild UP-TO-DATE
[ +3 ms] > Task :in_app_purchase_android:compileDebugAidl NO-SOURCE
[ +7 ms] > Task :app:compileDebugAidl NO-SOURCE
[ +101 ms] > Task :in_app_purchase_android:packageDebugRenderscript NO-SOURCE
[ +348 ms] > Task :app:compileDebugRenderscript NO-SOURCE
[ +10 ms] > Task :app:generateDebugBuildConfig UP-TO-DATE
[ +67 ms] > Task :in_app_purchase_android:writeDebugAarMetadata UP-TO-DATE
[ +55 ms] > Task :app:checkDebugAarMetadata UP-TO-DATE
[ +22 ms] > Task :app:cleanMergeDebugAssets
[ +48 ms] > Task :app:mergeDebugShaders UP-TO-DATE
[ +47 ms] > Task :app:compileDebugShaders NO-SOURCE
[ +32 ms] > Task :app:generateDebugAssets UP-TO-DATE
[ +50 ms] > Task :in_app_purchase_android:mergeDebugShaders UP-TO-DATE
[ +40 ms] > Task :in_app_purchase_android:compileDebugShaders NO-SOURCE
[ +6 ms] > Task :in_app_purchase_android:generateDebugAssets UP-TO-DATE
[ +2 ms] > Task :in_app_purchase_android:packageDebugAssets UP-TO-DATE
[ +16 ms] > Task :app:mergeDebugAssets
[ +358 ms] > Task :app:copyFlutterAssetsDebug
[ +2 ms] > Task :app:generateDebugResValues UP-TO-DATE
[ +10 ms] > Task :app:generateDebugResources UP-TO-DATE
[ +16 ms] > Task :in_app_purchase_android:compileDebugRenderscript NO-SOURCE
[ +6 ms] > Task :in_app_purchase_android:generateDebugResValues UP-TO-DATE
[ +5 ms] > Task :in_app_purchase_android:generateDebugResources UP-TO-DATE
[ +12 ms] > Task :in_app_purchase_android:packageDebugResources UP-TO-DATE
[ +120 ms] > Task :app:mergeDebugResources UP-TO-DATE
[ +69 ms] > Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
[ +25 ms] > Task :app:extractDeepLinksDebug UP-TO-DATE
[ +18 ms] > Task :in_app_purchase_android:extractDeepLinksDebug UP-TO-DATE
[ +148 ms] > Task :in_app_purchase_android:processDebugManifest UP-TO-DATE
[ +546 ms] > Task :app:processDebugMainManifest UP-TO-DATE
[ +461 ms] > Task :app:processDebugManifest UP-TO-DATE
[ +3 ms] > Task :app:processDebugManifestForPackage UP-TO-DATE
[ +1 ms] > Task :in_app_purchase_android:compileDebugLibraryResources UP-TO-DATE
[ +3 ms] > Task :in_app_purchase_android:parseDebugLocalResources UP-TO-DATE
[ +29 ms] > Task :in_app_purchase_android:generateDebugRFile UP-TO-DATE
[ +57 ms] > Task :app:processDebugResources UP-TO-DATE
[ +10 ms] > Task :in_app_purchase_android:generateDebugBuildConfig UP-TO-DATE
[ +19 ms] > Task :in_app_purchase_android:javaPreCompileDebug UP-TO-DATE
[ +10 ms] > Task :in_app_purchase_android:compileDebugJavaWithJavac UP-TO-DATE
[ +4 ms] > Task :in_app_purchase_android:bundleLibCompileToJarDebug UP-TO-DATE
[ +2 ms] > Task :app:compileDebugKotlin UP-TO-DATE
[ +2 ms] > Task :app:javaPreCompileDebug UP-TO-DATE
[ +17 ms] > Task :app:compileDebugJavaWithJavac UP-TO-DATE
[ +5 ms] > Task :app:processDebugJavaRes NO-SOURCE
[ +106 ms] > Task :in_app_purchase_android:processDebugJavaRes NO-SOURCE
[ +3 ms] > Task :in_app_purchase_android:bundleLibResDebug NO-SOURCE
[ +2 ms] > Task :app:mergeDebugJavaResource UP-TO-DATE
[ +2 ms] > Task :app:checkDebugDuplicateClasses UP-TO-DATE
[ +3 ms] > Task :app:desugarDebugFileDependencies UP-TO-DATE
[ +24 ms] > Task :app:mergeExtDexDebug UP-TO-DATE
[ +21 ms] > Task :in_app_purchase_android:bundleLibRuntimeToDirDebug UP-TO-DATE
[ +2 ms] > Task :app:dexBuilderDebug UP-TO-DATE
[ +2 ms] > Task :app:mergeLibDexDebug UP-TO-DATE
[ +2 ms] > Task :app:mergeProjectDexDebug UP-TO-DATE
[ +5 ms] > Task :app:mergeDebugJniLibFolders UP-TO-DATE
[ +3 ms] > Task :in_app_purchase_android:mergeDebugJniLibFolders UP-TO-DATE
[ +2 ms] > Task :in_app_purchase_android:mergeDebugNativeLibs NO-SOURCE
[ +10 ms] > Task :in_app_purchase_android:copyDebugJniLibsProjectOnly UP-TO-DATE
[ +2 ms] > Task :app:mergeDebugNativeLibs UP-TO-DATE
[ +3 ms] > Task :app:stripDebugDebugSymbols UP-TO-DATE
[ +11 ms] > Task :app:validateSigningDebug UP-TO-DATE
[ +3 ms] > Task :app:writeDebugAppMetadata UP-TO-DATE
[ +5 ms] > Task :app:writeDebugSigningConfigVersions UP-TO-DATE
[ +17 ms] > Task :in_app_purchase_android:stripDebugDebugSymbols NO-SOURCE
[ +4 ms] > Task :in_app_purchase_android:copyDebugJniLibsProjectAndLocalJars UP-TO-DATE
[ +7 ms] > Task :in_app_purchase_android:extractDebugAnnotations UP-TO-DATE
[ +3 ms] > Task :in_app_purchase_android:mergeDebugGeneratedProguardFiles UP-TO-DATE
[ +1 ms] > Task :in_app_purchase_android:mergeDebugConsumerProguardFiles UP-TO-DATE
[ +4 ms] > Task :in_app_purchase_android:prepareDebugArtProfile UP-TO-DATE
[ +2 ms] > Task :in_app_purchase_android:prepareLintJarForPublish UP-TO-DATE
[ +2 ms] > Task :in_app_purchase_android:mergeDebugJavaResource UP-TO-DATE
[ +35 ms] > Task :in_app_purchase_android:syncDebugLibJars UP-TO-DATE
[ +10 ms] > Task :in_app_purchase_android:bundleDebugAar UP-TO-DATE
[ +2 ms] > Task :in_app_purchase_android:assembleDebug UP-TO-DATE
[ +564 ms] > Task :app:compressDebugAssets
[ +1 ms] Execution optimizations have been disabled for task ':app:compressDebugAssets' to ensure correctness due to the following reasons:
[ +1 ms] - Gradle detected a problem with the following location: 'C:\src\Projects\bug\build\app\intermediates\assets\debug\mergeDebugAssets'. Reason: Task ':app:compressDebugAssets' uses this output of task
':app:copyFlutterAssetsDebug' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to
https://docs.gradle.org/7.4/userguide/validation_problems.html#implicit_dependency for more details about this problem.
[ +106 ms] > Task :app:packageDebug UP-TO-DATE
[ +1 ms] > Task :app:createDebugApkListingFileRedirect UP-TO-DATE
[ +601 ms] > Task :app:assembleDebug
[ +2 ms] Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
[ +2 ms] You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
[ +2 ms] See https://docs.gradle.org/7.4/userguide/command_line_interface.html#sec:command_line_warnings
[ +1 ms] Execution optimizations have been disabled for 1 invalid unit(s) of work during this build to ensure correctness.
[ +3 ms] Please consult deprecation warnings for more details.
[ +3 ms] BUILD SUCCESSFUL in 8s
[ +4 ms] 62 actionable tasks: 5 executed, 57 up-to-date
[ +602 ms] Running Gradle task 'assembleDebug'... (completed in 10.1s)
[ +499 ms] calculateSha: LocalDirectory: 'C:\src\Projects\bug\build\app\outputs\flutter-apk'/app.apk
[+1621 ms] √ Built build\app\outputs\flutter-apk\app-debug.apk.
[ +9 ms] executing: C:\Users\AppData\Local\Android\sdk\build-tools\32.1.0-rc1\aapt dump xmltree C:\src\Projects\bug\build\app\outputs\flutter-apk\app.apk AndroidManifest.xml
[ +109 ms] Exit code 0 from: C:\Users\AppData\Local\Android\sdk\build-tools\32.1.0-rc1\aapt dump xmltree C:\src\Projects\bug\build\app\outputs\flutter-apk\app.apk AndroidManifest.xml
[ +1 ms] N: android=http://schemas.android.com/apk/res/android
E: manifest (line=2)
A: android:versionCode(0x0101021b)=(type 0x10)0x1
A: android:versionName(0x0101021c)="1.0.0" (Raw: "1.0.0")
A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1f
A: android:compileSdkVersionCodename(0x01010573)="12" (Raw: "12")
A: package="com.example.bug" (Raw: "com.example.bug")
A: platformBuildVersionCode=(type 0x10)0x1f
A: platformBuildVersionName=(type 0x10)0xc
E: uses-sdk (line=7)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0x1d
A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1f
E: uses-permission (line=15)
A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
E: uses-permission (line=16)
A: android:name(0x01010003)="android.permission.WAKE_LOCK" (Raw: "android.permission.WAKE_LOCK")
E: uses-permission (line=17)
A: android:name(0x01010003)="android.permission.ACCESS_NETWORK_STATE" (Raw: "android.permission.ACCESS_NETWORK_STATE")
E: uses-permission (line=18)
A: android:name(0x01010003)="android.permission.RECEIVE_BOOT_COMPLETED" (Raw: "android.permission.RECEIVE_BOOT_COMPLETED")
E: uses-permission (line=19)
A: android:name(0x01010003)="android.permission.FOREGROUND_SERVICE" (Raw: "android.permission.FOREGROUND_SERVICE")
E: uses-permission (line=20)
A: android:name(0x01010003)="com.android.vending.BILLING" (Raw: "com.android.vending.BILLING")
E: application (line=22)
A: android:label(0x01010001)="bug" (Raw: "bug")
A: android:icon(0x01010002)=@0x7f090000
A: android:name(0x01010003)="android.app.Application" (Raw: "android.app.Application")
A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff
A: android:extractNativeLibs(0x010104ea)=(type 0x12)0x0
A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw: "androidx.core.app.CoreComponentFactory")
E: activity (line=29)
A: android:theme(0x01010000)=@0x7f0b0000
A: android:name(0x01010003)="com.example.bug.MainActivity" (Raw: "com.example.bug.MainActivity")
A: android:exported(0x01010010)=(type 0x12)0xffffffff
A: android:launchMode(0x0101001d)=(type 0x10)0x1
A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
E: meta-data (line=44)
A: android:name(0x01010003)="io.flutter.embedding.android.NormalTheme" (Raw: "io.flutter.embedding.android.NormalTheme")
A: android:resource(0x01010025)=@0x7f0b0001
E: intent-filter (line=48)
E: action (line=49)
A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
E: category (line=51)
A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
E: meta-data (line=58)
A: android:name(0x01010003)="flutterEmbedding" (Raw: "flutterEmbedding")
A: android:value(0x01010024)=(type 0x10)0x2
E: uses-library (line=62)
A: android:name(0x01010003)="androidx.window.extensions" (Raw: "androidx.window.extensions")
A: android:required(0x0101028e)=(type 0x12)0x0
E: uses-library (line=65)
A: android:name(0x01010003)="androidx.window.sidecar" (Raw: "androidx.window.sidecar")
A: android:required(0x0101028e)=(type 0x12)0x0
E: provider (line=69)
A: android:name(0x01010003)="androidx.startup.InitializationProvider" (Raw: "androidx.startup.InitializationProvider")
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:authorities(0x01010018)="com.example.bug.androidx-startup" (Raw: "com.example.bug.androidx-startup")
E: meta-data (line=73)
A: android:name(0x01010003)="androidx.work.WorkManagerInitializer" (Raw: "androidx.work.WorkManagerInitializer")
A: android:value(0x01010024)="androidx.startup" (Raw: "androidx.startup")
E: service (line=78)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.SystemAlarmService" (Raw: "androidx.work.impl.background.systemalarm.SystemAlarmService")
A: android:enabled(0x0101000e)=@0x7f020000
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: service (line=83)
A: android:name(0x01010003)="androidx.work.impl.background.systemjob.SystemJobService" (Raw: "androidx.work.impl.background.systemjob.SystemJobService")
A: android:permission(0x01010006)="android.permission.BIND_JOB_SERVICE" (Raw: "android.permission.BIND_JOB_SERVICE")
A: android:enabled(0x0101000e)=@0x7f020002
A: android:exported(0x01010010)=(type 0x12)0xffffffff
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: service (line=89)
A: android:name(0x01010003)="androidx.work.impl.foreground.SystemForegroundService" (Raw: "androidx.work.impl.foreground.SystemForegroundService")
A: android:enabled(0x0101000e)=@0x7f020001
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: receiver (line=95)
A: android:name(0x01010003)="androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver" (Raw: "androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver")
A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: receiver (line=100)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy" (Raw:
"androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=105)
E: action (line=106)
A: android:name(0x01010003)="android.intent.action.ACTION_POWER_CONNECTED" (Raw: "android.intent.action.ACTION_POWER_CONNECTED")
E: action (line=107)
A: android:name(0x01010003)="android.intent.action.ACTION_POWER_DISCONNECTED" (Raw: "android.intent.action.ACTION_POWER_DISCONNECTED")
E: receiver (line=110)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy" (Raw: "androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=115)
E: action (line=116)
A: android:name(0x01010003)="android.intent.action.BATTERY_OKAY" (Raw: "android.intent.action.BATTERY_OKAY")
E: action (line=117)
A: android:name(0x01010003)="android.intent.action.BATTERY_LOW" (Raw: "android.intent.action.BATTERY_LOW")
E: receiver (line=120)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy" (Raw: "androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=125)
E: action (line=126)
A: android:name(0x01010003)="android.intent.action.DEVICE_STORAGE_LOW" (Raw: "android.intent.action.DEVICE_STORAGE_LOW")
E: action (line=127)
A: android:name(0x01010003)="android.intent.action.DEVICE_STORAGE_OK" (Raw: "android.intent.action.DEVICE_STORAGE_OK")
E: receiver (line=130)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy" (Raw: "androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=135)
E: action (line=136)
A: android:name(0x01010003)="android.net.conn.CONNECTIVITY_CHANGE" (Raw: "android.net.conn.CONNECTIVITY_CHANGE")
E: receiver (line=139)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.RescheduleReceiver" (Raw: "androidx.work.impl.background.systemalarm.RescheduleReceiver")
A: android:enabled(0x0101000e)=(type 0x12)0x0
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=144)
E: action (line=145)
A: android:name(0x01010003)="android.intent.action.BOOT_COMPLETED" (Raw: "android.intent.action.BOOT_COMPLETED")
E: action (line=146)
A: android:name(0x01010003)="android.intent.action.TIME_SET" (Raw: "android.intent.action.TIME_SET")
E: action (line=147)
A: android:name(0x01010003)="android.intent.action.TIMEZONE_CHANGED" (Raw: "android.intent.action.TIMEZONE_CHANGED")
E: receiver (line=150)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver" (Raw: "androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver")
A: android:enabled(0x0101000e)=@0x7f020000
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=155)
E: action (line=156)
A: android:name(0x01010003)="androidx.work.impl.background.systemalarm.UpdateProxies" (Raw: "androidx.work.impl.background.systemalarm.UpdateProxies")
E: receiver (line=159)
A: android:name(0x01010003)="androidx.work.impl.diagnostics.DiagnosticsReceiver" (Raw: "androidx.work.impl.diagnostics.DiagnosticsReceiver")
A: android:permission(0x01010006)="android.permission.DUMP" (Raw: "android.permission.DUMP")
A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
A: android:exported(0x01010010)=(type 0x12)0xffffffff
A: android:directBootAware(0x01010505)=(type 0x12)0x0
E: intent-filter (line=165)
E: action (line=166)
A: android:name(0x01010003)="androidx.work.diagnostics.REQUEST_DIAGNOSTICS" (Raw: "androidx.work.diagnostics.REQUEST_DIAGNOSTICS")
E: service (line=170)
A: android:name(0x01010003)="androidx.room.MultiInstanceInvalidationService" (Raw: "androidx.room.MultiInstanceInvalidationService")
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:directBootAware(0x01010505)=(type 0x12)0xffffffff
E: meta-data (line=175)
A: android:name(0x01010003)="com.google.android.play.billingclient.version" (Raw: "com.google.android.play.billingclient.version")
A: android:value(0x01010024)="5.0.0" (Raw: "5.0.0")
E: activity (line=179)
A: android:theme(0x01010000)=@0x01030010
A: android:name(0x01010003)="com.android.billingclient.api.ProxyBillingActivity" (Raw: "com.android.billingclient.api.ProxyBillingActivity")
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:configChanges(0x0101001f)=(type 0x11)0x5b0
[ +35 ms] Stopping app 'app.apk' on sdk gphone64 x86 64.
[ +1 ms] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell am force-stop com.example.bug
[ +338 ms] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell pm list packages com.example.bug
[ +249 ms] package:com.example.bug
[ +3 ms] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell cat /data/local/tmp/sky.com.example.bug.sha1
[ +237 ms] 7320c4c6bd45f39dce63f13b4a3d2d76c0b46de7
[ +2 ms] Latest build already installed.
[ ] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell -x logcat -v time -t 1
[ +316 ms] --------- beginning of main
07-12 20:50:54.359 D/CarrierSvcBindHelper( 914): No carrier app for: 0
[ +12 ms] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell am start -a android.intent.action.RUN -f 0x20000000 --ez enable-dart-profiling true --ez
enable-checked-mode true --ez verify-entry-points true com.example.bug/com.example.bug.MainActivity
[ +555 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=com.example.bug/com.example.bug.MainActivity (has extras) }
[ +1 ms] Waiting for observatory port to be available...
[+2156 ms] Observatory URL on device: http://127.0.0.1:40137/TragUJuC9tw=/
[ +2 ms] executing: C:\Users\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 forward tcp:0 tcp:40137
[ +271 ms] 64898
[ +1 ms] Forwarded host port 64898 to device port 40137 for Observatory
[ +25 ms] Caching compiled dill
[ +124 ms] Connecting to service protocol: http://127.0.0.1:64898/TragUJuC9tw=/
[+1061 ms] Launching a Dart Developer Service (DDS) instance at http://127.0.0.1:0, connecting to VM service at http://127.0.0.1:64898/TragUJuC9tw=/.
[ +994 ms] DDS is listening at http://127.0.0.1:64903/HXcpz4a5VHo=/.
[ +127 ms] Successfully connected to service protocol: http://127.0.0.1:64898/TragUJuC9tw=/
[ +212 ms] DevFS: Creating new filesystem on the device (null)
[ +180 ms] DevFS: Created new filesystem on the device (file:///data/user/0/com.example.bug/code_cache/bugAVUHCK/bug/)
[ +32 ms] Updating assets
[ +239 ms] Syncing files to device sdk gphone64 x86 64...
[ +7 ms] <- reset
[ +3 ms] Compiling dart to kernel with 0 updated files
[ +11 ms] Processing bundle.
[ +11 ms] <- recompile package:bug/main.dart 7b7653b2-ba13-4a80-8351-a1a9aac2802f
[ +8 ms] <- 7b7653b2-ba13-4a80-8351-a1a9aac2802f
[ +37 ms] Bundle processing done.
[ +113 ms] ../../flutter/.pub-cache/hosted/pub.dartlang.org/in_app_purchase_android-0.2.3/lib/src/billing_client_wrappers/purchase_wrapper.g.dart:16:27: Warning: Operand of null-aware operation '?.' has type
'List<dynamic>'
which excludes null.
[ +62 ms] - 'List' is from 'dart:core'.
[ +31 ms] ? (json['skus'] as List)?.map((item) => item as String)?.toList() ??
[ +27 ms] ^
[ +1 ms] ../../flutter/.pub-cache/hosted/pub.dartlang.org/in_app_purchase_android-0.2.3/lib/src/billing_client_wrappers/purchase_wrapper.g.dart:35:27: Warning: Operand of null-aware operation '?.' has type
'List<dynamic>'
which excludes null.
[ +58 ms] - 'List' is from 'dart:core'.
[ +23 ms] ? (json['skus'] as List)?.map((item) => item as String)?.toList() ??
[ +9 ms] ^
[ +28 ms] Updating files.
[ +2 ms] DevFS: Sync finished
[ +6 ms] Syncing files to device sdk gphone64 x86 64... (completed in 440ms)
[ +11 ms] Synced 0.0MB.
[ +8 ms] <- accept
[ +43 ms] Connected to _flutterView/0x7e3b5765fcf0.
[ +26 ms] Flutter run key commands.
[ +12 ms] r Hot reload.
[ +13 ms] R Hot restart.
[ +6 ms] h List all available interactive commands.
[ +5 ms] d Detach (terminate "flutter run" but leave application running).
[ +2 ms] c Clear the screen
[ +2 ms] q Quit (terminate the application on the device).
[ +6 ms] Running with sound null safety
[ +9 ms] An Observatory debugger and profiler on sdk gphone64 x86 64 is available at: http://127.0.0.1:64903/HXcpz4a5VHo=/
[+3241 ms] I/flutter (11197): store is available: true
[ +132 ms] The Flutter DevTools debugger and profiler on sdk gphone64 x86 64 is available at: http://127.0.0.1:9102?uri=http://127.0.0.1:64903/HXcpz4a5VHo=/
C:\src\Projects\bug>flutter analyze
Analyzing bug...
info - Avoid `print` calls in production code - lib\main.dart:61:5 - avoid_print
info - Avoid `print` calls in production code - lib\main.dart:63:7 - avoid_print
info - Avoid `print` calls in production code - lib\main.dart:79:7 - avoid_print
info - Avoid `print` calls in production code - lib\main.dart:93:7 - avoid_print
4 issues found. (ran in 5.8s)
C:\src\Projects\bug>flutter doctor -v
[√] Flutter (Channel stable, 3.0.4, on Microsoft Windows [Version 10.0.19044.1806], locale en-US)
• Flutter version 3.0.4 at C:\src\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 85684f9300 (12 days ago), 2022-06-30 13:22:47 -0700
• Engine revision 6ba2af10bb
• Dart version 2.17.5
• DevTools version 2.12.2
[√] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
• Android SDK at C:\Users\dejan\AppData\Local\Android\sdk
• Platform android-32, build-tools 32.1.0-rc1
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
• All Android licenses accepted.
[X] Chrome - develop for the web (Cannot find Chrome executable at .\Google\Chrome\Application\chrome.exe)
! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[X] Visual Studio - develop for Windows
X Visual Studio not installed; this is necessary for Windows development.
Download at https://visualstudio.microsoft.com/downloads/.
Please install the "Desktop development with C++" workload, including all of its default components
[√] Android Studio (version 2021.2)
• 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 11.0.12+7-b1504.28-7817840)
[√] VS Code (version 1.69.0)
• VS Code at C:\Users\dejan\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.44.0
[√] Connected device (3 available)
• sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64 • Android 12 (API 32) (emulator)
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19044.1806]
• Edge (web) • edge • web-javascript • Microsoft Edge 103.0.1264.49
[√] HTTP Host Availability
• All required HTTP hosts are available
! Doctor found issues in 2 categories.
walsha2, rlueders, DeckardCainCN, victorkifer, cmenkemeller and 10 morecmenkemellerSoftWyer
Metadata
Metadata
Assignees
Labels
P0Critical issues such as a build break or regressionCritical issues such as a build break or regressionc: regressionIt was better in the past than it is nowIt was better in the past than it is nowp: in_app_purchasePlugin for in-app purchasePlugin for in-app purchasepackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyAndroid applications specifically