diff --git a/android/app/proguard-rules-sky.pro b/android/app/proguard-rules-sky.pro index e6743aff..d8df8d76 100644 --- a/android/app/proguard-rules-sky.pro +++ b/android/app/proguard-rules-sky.pro @@ -128,4 +128,7 @@ } -keep class com.tencent.mm.sdk.** { *; } --keep class com.tencent.mm.opensdk.** { *; } \ No newline at end of file +-keep class com.tencent.mm.opensdk.** { *; } + +-dontwarn com.tencent.bugly.** +-keep public class com.tencent.bugly.**{*;} \ No newline at end of file diff --git a/android/app/proguard-rules-xhj.pro b/android/app/proguard-rules-xhj.pro index c18c6b01..78db18c1 100644 --- a/android/app/proguard-rules-xhj.pro +++ b/android/app/proguard-rules-xhj.pro @@ -128,4 +128,7 @@ } -keep class com.tencent.mm.sdk.** { *; } --keep class com.tencent.mm.opensdk.** { *; } \ No newline at end of file +-keep class com.tencent.mm.opensdk.** { *; } + +-dontwarn com.tencent.bugly.** +-keep public class com.tencent.bugly.**{*;} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 7cea66a7..cbd0e27b 100755 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -134,6 +134,7 @@ + @@ -193,6 +194,9 @@ + diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 022a6c01..9952b79e 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -80,8 +80,8 @@ PODS: - Flutter (1.0.0) - flutter_blue_plus (0.0.1): - Flutter - - flutter_bugly_plugin (0.0.1): - - Bugly + - flutter_bugly (0.0.1): + - Bugly (= 2.6.1) - Flutter - flutter_local_notifications (0.0.1): - Flutter @@ -173,7 +173,7 @@ DEPENDENCIES: - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) - flutter_blue_plus (from `.symlinks/plugins/flutter_blue_plus/ios`) - - flutter_bugly_plugin (from `.symlinks/plugins/flutter_bugly_plugin/ios`) + - flutter_bugly (from `.symlinks/plugins/flutter_bugly/ios`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - flutter_native_contact_picker (from `.symlinks/plugins/flutter_native_contact_picker/ios`) - flutter_pcm_sound (from `.symlinks/plugins/flutter_pcm_sound/ios`) @@ -252,8 +252,8 @@ EXTERNAL SOURCES: :path: Flutter flutter_blue_plus: :path: ".symlinks/plugins/flutter_blue_plus/ios" - flutter_bugly_plugin: - :path: ".symlinks/plugins/flutter_bugly_plugin/ios" + flutter_bugly: + :path: ".symlinks/plugins/flutter_bugly/ios" flutter_local_notifications: :path: ".symlinks/plugins/flutter_local_notifications/ios" flutter_native_contact_picker: @@ -326,7 +326,7 @@ SPEC CHECKSUMS: file_picker: ce3938a0df3cc1ef404671531facef740d03f920 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_blue_plus: 4837da7d00cf5d441fdd6635b3a57f936778ea96 - flutter_bugly_plugin: d2db6d6641938269fa538575126e8ff530ee02c7 + flutter_bugly: bf35df32a9c5d50b8aacdd35bd8ddc5b55150dae flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907 flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e diff --git a/lib/blue/blue_manage.dart b/lib/blue/blue_manage.dart index dab6c673..9556c1b1 100755 --- a/lib/blue/blue_manage.dart +++ b/lib/blue/blue_manage.dart @@ -2,10 +2,10 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; -import 'package:flutter_bugly_plugin/flutter_bugly_plugin.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_settings.dart'; +import 'package:star_lock/tools/bugly/bugly_tool.dart'; import 'package:star_lock/tools/commonDataManage.dart'; import 'io_tool/io_model.dart'; @@ -100,7 +100,7 @@ class BlueManage { void _initAdapterStateStateSubscription() { _adapterStateStateSubscription ??= FlutterBluePlus.adapterState.listen((BluetoothAdapterState state) { - AppLog.log('蓝牙状态:$state'); + AppLog.log('蓝牙状态:$state'); _adapterState = state; }); } @@ -228,7 +228,8 @@ class BlueManage { if (_adapterState == BluetoothAdapterState.on) { try { FlutterBluePlus.startScan(timeout: Duration(seconds: timeout)); - final StreamSubscription> subscription = FlutterBluePlus.scanResults.listen((List results) { + final StreamSubscription> subscription = + FlutterBluePlus.scanResults.listen((List results) { scanDevices.clear(); for (final ScanResult scanResult in results) { // AppLog.log('扫描到的设备:${scanResult.device.platformName} ${scanResult.advertisementData.advName} ${scanResult.rssi}'); @@ -305,7 +306,10 @@ class BlueManage { } } } else { - FlutterBuglyPlugin.reportException(exceptionName: 'blueSendData isAvailable状态', reason: 'blueSendData isAvailable不可用'); + BuglyTool.uploadException( + message: 'blueSendData isAvailable状态', + detail: 'blueSendData isAvailable不可用--json'); + // FlutterBuglyPlugin.reportException(exceptionName: 'blueSendData isAvailable状态', reason: 'blueSendData isAvailable不可用'); AppLog.log('开始扫描 蓝牙不可用,不能进行蓝牙操作'); } }); @@ -358,13 +362,12 @@ class BlueManage { } Future _connectDevice( - List devicesList, - String deviceName, - ConnectStateCallBack connectStateCallBack, - { - bool isAddEquipment = false,// 是否是添加设备之前 - bool isReconnect = true,// 是否是重连 - }) async { + List devicesList, + String deviceName, + ConnectStateCallBack connectStateCallBack, { + bool isAddEquipment = false, // 是否是添加设备之前 + bool isReconnect = true, // 是否是重连 + }) async { // 判断数组列表里面是否有这个设备 // AppLog.log("devicesList:$devicesList"); final int knownDeviceIndex = devicesList.indexWhere((ScanResult d) => @@ -392,15 +395,17 @@ class BlueManage { AppLog.log('调用了停止扫描的方法'); await stopScan(); - if ((scanResult.advertisementData.serviceUuids[0].toString()[31] == '0') && isAddEquipment == false) { + if ((scanResult.advertisementData.serviceUuids[0].toString()[31] == '0') && + isAddEquipment == false) { // 添加这个判断是因为有些苹果设备或者安卓等性能比较好的设备时,添加完锁之后,锁板未改变为已添加状态之前,就进行了蓝牙连接,导致添加完锁就失败,这里进行了判断,如果第一次连接失败,就清除缓存重新扫描连接 - if(isReconnect == true){ + if (isReconnect == true) { AppLog.log('该锁已被重置, 重新发送扫描命令'); scanDevices.clear(); startScanSingle(deviceName, 15, (List scanDevices) { - _connectDevice(scanDevices, deviceName, connectStateCallBack, isAddEquipment: isAddEquipment, isReconnect: false); + _connectDevice(scanDevices, deviceName, connectStateCallBack, + isAddEquipment: isAddEquipment, isReconnect: false); }); - }else{ + } else { connectStateCallBack(BluetoothConnectionState.disconnected); EasyLoading.showToast('该锁已被重置'.tr, duration: 2000.milliseconds); scanDevices.clear(); @@ -459,8 +464,10 @@ class BlueManage { //循环判断服务 for (final BluetoothService service in services) { if (service.uuid == _serviceIdConnect) { - for (final BluetoothCharacteristic characteristic in service.characteristics) { - if (characteristic.characteristicUuid == _characteristicIdSubscription) { + for (final BluetoothCharacteristic characteristic + in service.characteristics) { + if (characteristic.characteristicUuid == + _characteristicIdSubscription) { _subScribeToCharacteristic(characteristic); bluetoothConnectionState = BluetoothConnectionState.connected; connectStateCallBack(bluetoothConnectionState!); diff --git a/lib/main.dart b/lib/main.dart index 4db2742f..a72682a4 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_bugly/flutter_bugly.dart'; import 'package:get/get.dart'; import 'package:path/path.dart' as path; import 'package:star_lock/flavors.dart'; @@ -23,30 +24,31 @@ import 'tools/store_service.dart'; // 该文件不可作为编译入口,请查看 flavorizr.yaml 中的说明 FutureOr main() async { - WidgetsFlutterBinding.ensureInitialized(); + FlutterBugly.postCatchedException(() async { + WidgetsFlutterBinding.ensureInitialized(); - await _setCommonServices(); + await _setCommonServices(); - // 设置国际化信息 - await _initTranslation(); + // 设置国际化信息 + await _initTranslation(); - final bool isLogin = await getLoginStatus(); - if (isLogin) { - await privacySDKInitialization(); - } - - WidgetsBinding.instance.addPostFrameCallback((_) async { - final bool? openDeBug = await Storage.getBool(isOpenDeBug); - if (openDeBug == true) { - DeBug.showFloatWidget(); + final bool isLogin = await getLoginStatus(); + if (isLogin) { + await privacySDKInitialization(); } - }); - runApp(MyApp(isLogin: isLogin)); + WidgetsBinding.instance.addPostFrameCallback((_) async { + final bool? openDeBug = await Storage.getBool(isOpenDeBug); + if (openDeBug == true) { + DeBug.showFloatWidget(); + } + }); + runApp(MyApp(isLogin: isLogin)); + }); if (AppPlatform.isAndroid) { const SystemUiOverlayStyle systemUiOverlayStyle = - SystemUiOverlayStyle(statusBarColor: Colors.transparent); + SystemUiOverlayStyle(statusBarColor: Colors.transparent); SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle); } @@ -82,7 +84,7 @@ Future privacySDKInitialization() async { await jpushProvider.initJPushService(); } -void checkChinese(){ +void checkChinese() { // 获取当前脚本的目录 final String scriptDir = path.dirname(Platform.script.path); @@ -104,4 +106,4 @@ void findChineseCharacters(Directory directory) { bool hasChineseCharacters(String input) { return RegExp(r'[\u4e00-\u9fa5]').hasMatch(input); -} \ No newline at end of file +} diff --git a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart index 60b21a39..6acf77b8 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:flutter/scheduler.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; -import 'package:flutter_bugly_plugin/flutter_bugly_plugin.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; @@ -11,8 +10,8 @@ import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/lockSet/lockTime/getServerDatetime_entity.dart'; import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart'; +import 'package:star_lock/tools/bugly/bugly_tool.dart'; import 'package:star_lock/tools/throttler.dart'; - import 'package:star_lock/widget/permission/permission_dialog.dart'; import '../../../app_settings/app_settings.dart'; @@ -334,7 +333,8 @@ class LockDetailLogic extends BaseGetXController { showBlueConnetctToastTimer( outTimer: 20, action: () { - FlutterBuglyPlugin.reportException(exceptionName: '开门超时处理', reason: '开门超时,断开连接'); + // FlutterBuglyPlugin.reportException(exceptionName: '开门超时处理', reason: '开门超时,断开连接'); + BuglyTool.uploadException(message: '开门超时处理', detail: '开门超时,断开连接--json'); resetOpenDoorState(); blueManageDisconnect(); }); @@ -351,7 +351,8 @@ class LockDetailLogic extends BaseGetXController { .blueSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (BluetoothConnectionState deviceConnectionState) async { if (deviceConnectionState == BluetoothConnectionState.connected) { - FlutterBuglyPlugin.reportException(exceptionName: '蓝牙连接成功', reason: '蓝牙连接成功,发送开锁指令'); + BuglyTool.uploadException(message: '蓝牙连接成功', detail: '蓝牙连接成功,发送开锁指令--json',data: {'key1':'value1','key2':'value2'}); + // FlutterBuglyPlugin.reportException(exceptionName: '蓝牙连接成功', reason: '蓝牙连接成功,发送开锁指令'); IoSenderManage.senderOpenLock( lockID: BlueManage().connectDeviceName, userID: await Storage.getUid(), diff --git a/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/lib/main/lockDetail/lockDetail/lockDetail_page.dart index 5dd20052..f0b22083 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:flutter_bugly_plugin/flutter_bugly_plugin.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -11,6 +10,7 @@ import 'package:star_lock/flavors.dart'; import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_state.dart'; import 'package:star_lock/main/lockMian/lockMain/lockMain_logic.dart'; import 'package:star_lock/tools/aliyunRealNameAuth/aliyunRealNameAuthHandle.dart'; +import 'package:star_lock/tools/bugly/bugly_tool.dart'; import 'package:star_lock/tools/showCupertinoAlertView.dart'; import 'package:star_lock/tools/showTipView.dart'; import 'package:star_lock/widget/flavors_img.dart'; @@ -90,10 +90,17 @@ class _LockDetailPageState extends State //鑫泓佳布局 Widget xhjWidget() { - final bool isShowTip = - (state.keyInfos.value.keyType == XSConstantMacro.keyTypeTime || state.keyInfos.value.keyType == XSConstantMacro.keyTypeLoop) - && (DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!) <= 15 && DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!) >= 0) - && (state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusNormalUse || state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusWaitReceive); + final bool isShowTip = (state.keyInfos.value.keyType == + XSConstantMacro.keyTypeTime || + state.keyInfos.value.keyType == XSConstantMacro.keyTypeLoop) && + (DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!) <= + 15 && + DateTool() + .compareTimeGetDaysFromNow(state.keyInfos.value.endDate!) >= + 0) && + (state.keyInfos.value.keyStatus == XSConstantMacro.keyStatusNormalUse || + state.keyInfos.value.keyStatus == + XSConstantMacro.keyStatusWaitReceive); return Scaffold( backgroundColor: Colors.white, body: Obx(() { @@ -1428,13 +1435,21 @@ class _LockDetailPageState extends State if (isOpenLockNeedOnline) { // 不需要联网 state.openDoorModel = 0; - FlutterBuglyPlugin.reportException(exceptionName: '点击了不需要联网开锁'); + // FlutterBuglyPlugin.reportException(exceptionName: '点击了不需要联网开锁'); + BuglyTool.uploadException( + message: '点击了不需要联网开锁', + detail: '点击了不需要联网开锁--------json', + data: {'key1': 'value1', 'key2': 'value2'}); AppLog.log('点击开锁 state.openDoorModel = 0 不需要联网'); logic.openDoorAction(); } else { // 需要联网 state.openDoorModel = 2; - FlutterBuglyPlugin.reportException(exceptionName: '点击了需要联网开锁'); + // FlutterBuglyPlugin.reportException(exceptionName: '点击了需要联网开锁'); + BuglyTool.uploadException( + message: '点击了需要联网开锁', + detail: '点击了需要联网开锁---json', + data: {'key1': 'value1', 'key2': 'value2'}); AppLog.log('点击开锁 state.openDoorModel = 2 需要联网'); logic.getLockNetToken(); } diff --git a/lib/tools/bugly/bugly_tool.dart b/lib/tools/bugly/bugly_tool.dart index f7768a13..002271dd 100644 --- a/lib/tools/bugly/bugly_tool.dart +++ b/lib/tools/bugly/bugly_tool.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; -import 'package:flutter_bugly_plugin/flutter_bugly_plugin.dart'; +import 'package:flutter_bugly/flutter_bugly.dart'; import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/flavors.dart'; import 'package:star_lock/login/login/entity/LoginData.dart'; @@ -16,15 +16,15 @@ class BuglyTool { static Future init() async { if (F.isProductionEnv) { //生产 - await FlutterBuglyPlugin.init( - appIdAndroid: '5729fb97dc', - appIdiOS: '33c4430cce', + await FlutterBugly.init( + androidAppId: '5729fb97dc', + iOSAppId: '33c4430cce', ); } else { //测试 - await FlutterBuglyPlugin.init( - appIdAndroid: '5729fb97dc', - appIdiOS: '33c4430cce', + await FlutterBugly.init( + androidAppId: '5729fb97dc', + iOSAppId: '33c4430cce', ); } @@ -33,28 +33,35 @@ class BuglyTool { setUserId(loginData?.userid); //错误日志监控 - FlutterError.onError = (FlutterErrorDetails details) async { - AppLog.log('error:${details.exception.toString()}', - stackTrace: details.stack, error: true); - FlutterBuglyPlugin.reportException( - exceptionName: details.exception.toString(), - reason: details.stack.toString()); - Zone.current.handleUncaughtError( - details.exception, details.stack ?? StackTrace.empty); - }; + // FlutterError.onError = (FlutterErrorDetails details) async { + // AppLog.log('error:${details.exception.toString()}', + // stackTrace: details.stack, error: true); + // FlutterBugly.uploadException( + // message: details.exception.toString(), + // detail: details.stack.toString()); + // Zone.current.handleUncaughtError( + // details.exception, details.stack ?? StackTrace.empty); + // }; //错误日志监控 PlatformDispatcher.instance.onError = (Object error, StackTrace stack) { AppLog.log('error:$error', stackTrace: stack, error: true); - FlutterBuglyPlugin.reportException( - exceptionName: error.toString(), reason: stack.toString()); + FlutterBugly.uploadException( + message: error.toString(), detail: stack.toString()); return true; }; } //关联 userid static void setUserId(int? userId) { - FlutterBuglyPlugin.setUserIdentifier( - userIdentifier: (userId ?? 0).toString()); + FlutterBugly.setUserId(userId?.toString() ?? ''); + } + + static void uploadException({ + required String message, + required String detail, + Map? data, + }) { + FlutterBugly.uploadException(message: message, detail: detail, data: data); } } diff --git a/pubspec.yaml b/pubspec.yaml index ec8c0708..52c4a7cb 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -234,7 +234,8 @@ dependencies: colorfilter_generator: ^0.0.8 file_picker: ^5.3.1 # 错误日志监控 - flutter_bugly_plugin: ^0.0.9 +# flutter_bugly_plugin: ^0.0.9 + flutter_bugly: ^1.0.2 open_filex: ^4.4.0