From: SnickerSun Date: Sat, 14 Aug 2021 12:05:15 +0000 (+0800) Subject: release ICProtocol8.1_V911_2018142000_release.apk X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=0689523a0c45a9da9b74d9f5e9247698dc5f00b0;p=protocol_srv.git release ICProtocol8.1_V911_2018142000_release.apk 修复重试连接的retrytimer出现的crash 去掉过多的fzd parserCmd 日志 添加android8.1 release key --- diff --git a/app/build.gradle b/app/build.gradle index 6e116f06..4de1314e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,24 +30,28 @@ android { abortOnError false } signingConfigs { - key { + debug { storeFile file("EQC_G5.jks") storePassword "123456" keyAlias "watch_g5" keyPassword "123456" } - debug { - storeFile file('EQC_G5.jks') - storePassword '123456' - keyAlias = 'watch_g5' - keyPassword '123456' + release { +// storeFile file('EQC_G5.jks') +// storePassword '123456' +// keyAlias = 'watch_g5' +// keyPassword '123456' + storeFile file("platform.jks") + storePassword "123456" + keyAlias "android" + keyPassword "123456" } } buildTypes { release { zipAlignEnabled true // zip 对齐优化 shrinkResources true // 移除未使用的资源文件 - signingConfig signingConfigs.key + signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' renderscriptDebuggable = false @@ -57,7 +61,7 @@ android { } debug { - signingConfig signingConfigs.key + signingConfig signingConfigs.debug // 启用 Android 插件压缩器 // minifyEnabled true // useProguard false diff --git a/app/platform.jks b/app/platform.jks new file mode 100644 index 00000000..79a6e067 Binary files /dev/null and b/app/platform.jks differ diff --git a/app/release/ICProtocol8.1_V908_2108061814_release.apk b/app/release/ICProtocol8.1_V911_2108142000_release.apk similarity index 75% rename from app/release/ICProtocol8.1_V908_2108061814_release.apk rename to app/release/ICProtocol8.1_V911_2108142000_release.apk index 6635eeb5..644e5c4a 100644 Binary files a/app/release/ICProtocol8.1_V908_2108061814_release.apk and b/app/release/ICProtocol8.1_V911_2108142000_release.apk differ diff --git a/app/release/output.json b/app/release/output.json index 16848dea..c0a6e7e2 100644 --- a/app/release/output.json +++ b/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":909,"versionName":"2108140014","enabled":true,"outputFile":"ICProtocol8.1_V909_2108140014_release.apk","fullName":"release","baseName":"release"},"path":"ICProtocol8.1_V909_2108140014_release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":911,"versionName":"2108142000","enabled":true,"outputFile":"ICProtocol8.1_V911_2108142000_release.apk","fullName":"release","baseName":"release"},"path":"ICProtocol8.1_V911_2108142000_release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 706c602f..5cf3389d 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -1749,6 +1749,7 @@ public class CoreService extends Service { private ScheduledThreadPoolExecutor mTimer_retry_connect = null; + private static int retry_connect_count = 0; //当前重试次数 private static int retry_connect_max_times = 6; //最大重试次数 6次 , 即只重试2分钟,下一次重试将在下一个心跳包时进行。 private static int retry_cocnnect_cycle = 20; //重试间隔20秒 @@ -1765,21 +1766,13 @@ public class CoreService extends Service { //联网再重试连接服务器, 不能够联网的情况下不管是不是有sim卡,以及是否联网,都进行重试,以便处理下面情况: //1、sim卡接触不良,掉卡,可以尝试用此法恢复 //2、网络信号不好,造成临时掉线,但是恢复慢或不恢复,可以用此法尝试恢复 -// if (SimSignalUtil.checkNet(runtime.getContextProxy().context) ) { - stopConnectionRetryTimer(); - if (mTimer_retry_connect == null) { - mTimer_retry_connect = new ScheduledThreadPoolExecutor(10); - } + //如果开始进行连接重 // { // 试,证明网络断开的,那么KeepAlive也需要重连(心跳包) retry_connect_count = 0; KeepAlive.isConnected = false; - if (mTimer_retry_connect != null) { - mTimer_retry_connect.remove(mReConnectSrvThread); - mTimer_retry_connect.scheduleAtFixedRate(mReConnectSrvThread, 5000, 20000, TimeUnit.MILLISECONDS); //每次都是断网才需要重连,delay 5秒重连,并且每20秒重试一次 - } -// } + mHandler.postDelayed(mReConnectSrvThread,5000); } private final ReConnectSrvThread mReConnectSrvThread = new ReConnectSrvThread(); @@ -1805,12 +1798,12 @@ public class CoreService extends Service { if (connection.isServerConnected()) { ICLogger.i("retry 如果连接成功则停止重试!"); no_network_Heartbeats_Count = 0; - stopConnectionRetryTimer(); + return; } else { if (retry_connect_count >= retry_connect_max_times) { no_network_Heartbeats_Count++; ICLogger.i("retry " + retry_connect_count + " 次 >= " + retry_connect_max_times + " ,停止重试!等待下一次心跳再重试! 已经第" + no_network_Heartbeats_Count + "次心跳都没有连接服务器成功!"); - stopConnectionRetryTimer(); + return; } else { retry_connect_count++; String ip = runtime.getDnsUtil().getServerIP_ByDNSCache(runtime.getHost()); @@ -1825,30 +1818,14 @@ public class CoreService extends Service { //没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网 ICLogger.i("retry " + no_network_Heartbeats_Count + " 没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网!"); no_network_Heartbeats_Count++; - stopConnectionRetryTimer(); + return; } if (no_network_Heartbeats_Count > 12) { ICLogger.i("当前第" + no_network_Heartbeats_Count + "次心跳都没有连接服务器成功 > 10 ,重置SIM卡尝试重新注册网络!"); SimSignalUtil.send_at_to_reset_simcard(runtime); //直接下此命令不能实现断网重连,所以干脆采用关闭网络再打开的方式。 no_network_Heartbeats_Count = 0;//重置Sim卡后重置计数。防止后面多次重置Sim卡。 } - } - - public void stopConnectionRetryTimer() { - if (mTimer_retry_connect != null) { - mTimer_retry_connect.shutdownNow(); -// while(!mTimer_retry_connect.isTerminated()) -// { -// ICLogger.i("Wait for thread pool terminated"); -// try { -// Thread.sleep(500); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// } - mTimer_retry_connect.purge(); - mTimer_retry_connect = null; - } + mHandler.postDelayed(mReConnectSrvThread,20000); } @Override diff --git a/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java b/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java index 4d6dda9c..98b396e2 100644 --- a/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java +++ b/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java @@ -85,19 +85,13 @@ public class KeepAlive extends AbstractConnectionService { public void startResponseCheckTimer() { //联网再重试连接服务器 if (SimSignalUtil.checkNet(mRuntime.getContextProxy().context)) { - stopResponseCheckTimer(); - if (scheduled == null) { - scheduled = new ScheduledThreadPoolExecutor(10); - } //开始检测重新计数 hearBeatResendCount = 0; //如果开始进行连接重 // { // 试,证明网络断开的,那么KeepAlive也需要重连(心跳包) - scheduled.scheduleAtFixedRate(CheckSrvResponseTimerTask, - heartBeatRetryTimeout * 1000, - heartBeatRetryTimeout * 1000, - TimeUnit.MILLISECONDS); //delay 3秒先检查一次,然后每5秒重试一次 + mHandler.postDelayed(CheckSrvResponseTimerTask,heartBeatRetryTimeout * 1000); + //delay 3秒先检查一次,然后每5秒重试一次 } } @@ -124,14 +118,14 @@ public class KeepAlive extends AbstractConnectionService { //如果收到服务器响应BP03,则停止重试,否则 继续发送AP03 心跳包,且继续检查响应 if (this.is_heartBeat_send_success) { ICLogger.i("checkSrvResponse 成功,停止检测!"); - stopResponseCheckTimer(); + return ; } else { //心跳发送失败,则认为已经和服务器断开 mRuntime.setServerProtocolConnected(false); //如果重试次数大于等于 最大重试次数,则停止重试,等下次心跳时间再行尝试。 if (hearBeatResendCount >= MaxHeartbeatResendTime) { ICLogger.i("checkSrvResponse " + hearBeatResendCount + "次 >= " + MaxHeartbeatResendTime + " , 则停止重试,等下次心跳时间再行尝试!"); - stopResponseCheckTimer(); + return; } else { //重新发送AP03心跳包 ICLogger.i("checkSrvResponse 失败,第" + hearBeatResendCount + "次,重新发送AP03心跳包!"); @@ -168,43 +162,14 @@ public class KeepAlive extends AbstractConnectionService { //没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网 ICLogger.i("checkSrvResponse stop , 没有网络就不用重新尝试检测服务器响应和重新发送心跳包了!"); - stopResponseCheckTimer(); + return ; } + + mHandler.postDelayed(CheckSrvResponseTimerTask,heartBeatRetryTimeout * 1000); } - public void stopResponseCheckTimer() { - if (scheduled != null) { - scheduled.shutdownNow(); -// Runnable tmp= scheduled.getQueue().poll(); -// while (tmp!=null){ -// scheduled.remove(tmp); -// } - scheduled.setContinueExistingPeriodicTasksAfterShutdownPolicy(true); - scheduled.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); -// scheduled.setRemoveOnCancelPolicy(true); - ICLogger.i("Wait for thread pool getContinueExistingPeriodicTasksAfterShutdownPolicy " + scheduled.getContinueExistingPeriodicTasksAfterShutdownPolicy() + - "\ngetExecuteExistingDelayedTasksAfterShutdownPolicy " + scheduled.getExecuteExistingDelayedTasksAfterShutdownPolicy());//+ -// "\ngetRemoveOnCancelPolicy "+scheduled.getRemoveOnCancelPolicy()); -// while(!scheduled.isTerminated()) -// { -// StringBuilder sb=new StringBuilder(); -// if (scheduled.isTerminated()) sb.append("+"); -// if (scheduled.isShutdown()) sb.append("*"); -// if (scheduled.isTerminating()) sb.append("-"); -// ICLogger.i(sb.toString()); -// try { -// Thread.sleep(500); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// } - scheduled.purge(); - scheduled = null; - } - ICLogger.i(" stopResponseCheckTimer Done "); - } public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) { @@ -251,7 +216,6 @@ public class KeepAlive extends AbstractConnectionService { // if (isConnected) //如果KeepAlive被关闭说明网络有问题,因此开启重试联网机制 - stopResponseCheckTimer(); if (false) { if (ErrorMsg.equals("DIS_CONNECT_BY_SERVERSIDE")) { @@ -328,7 +292,7 @@ public class KeepAlive extends AbstractConnectionService { public void onHeartAlarm(Connection paramNettyConnection, Runtime paramRuntime) { ICLogger.i("onHeartAlarm"); - stopResponseCheckTimer(); + //心跳开始发送的时候,先重置response检测标志 is_heartBeat_send_success = false; @@ -377,7 +341,7 @@ public class KeepAlive extends AbstractConnectionService { //login成功后,上传当前版本号 paramConnection.send(protocolAPIHelper.getDeviceVersion(paramRuntime)); //登录包收到就停止重链接服务器 - CoreService.getInstance().stopConnectionRetryTimer(); +// CoreService.getInstance().stopConnectionRetryTimer(); is_login_send_success = true; //收到登录包反馈后再发送心跳 diff --git a/app/src/main/java/com/ic/protocols/protocol_fzd.java b/app/src/main/java/com/ic/protocols/protocol_fzd.java index 0350377d..56bc8943 100644 --- a/app/src/main/java/com/ic/protocols/protocol_fzd.java +++ b/app/src/main/java/com/ic/protocols/protocol_fzd.java @@ -574,7 +574,7 @@ public class protocol_fzd { if (regexUtil.isFZDCompanyCMD(CMD_COMPANY,cmd_msgbuf)) { for (CMD_TYPE key : cmdMap.keySet()) { if (regexUtil.isFZDCompanyCMD(CMD_COMPANY,cmdMap.get(key), cmd_msgbuf)) { //如果是FZD命令,则进行处理,否则保留数据动 - ICLogger.i("found cmd keyid=" + key + " ,keyname=" + cmdMap.get(key)); +// ICLogger.i("found cmd keyid=" + key + " ,keyname=" + cmdMap.get(key)); return cmdMap.get(key); } } @@ -634,7 +634,7 @@ public class protocol_fzd { // ICLogger.d("key " + cmdMap.get(key) +" "+cmdname+" cmdbuf " + cmd_msgbuf); if (cmdMap.get(key).equals(cmdname)) { //如果是FZD命令,则进行处理,否则保留数据动 - ICLogger.d("key is == > " + key); +// ICLogger.d("key is == > " + key); // if (key == CMD_TYPE.TK) { // handlerGroupChatVoiceContent(totalByte); // } else if (key == CMD_TYPE.TKOne) {