From e93a753b711e870752b33416387f093fc2a18150 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Tue, 11 May 2021 19:39:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=EF=BC=8C=E5=8F=AF=E4=BB=A5=E9=80=9A=E8=BF=87?= =?UTF-8?q?bugly=E8=BF=9B=E8=A1=8C=E9=85=8D=E7=BD=AE=20https://beta.bugly.?= =?UTF-8?q?qq.com/apps/f3f8b0b2f1/allupdate=3Fpid=3D1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 2 +- app/build.gradle | 47 ++++++++---- app/functions/crashreport.gradle | 2 + app/src/main/AndroidManifest.xml | 10 +++ .../com/mogo/launcher/MogoApplication.java | 3 + config.gradle | 1 + gradle.properties | 1 + .../module/v2x/network/V2XRefreshModel.java | 3 + settings.gradle | 1 + test/crashreport-bugly/build.gradle | 2 +- test/crashreport-upgrade/.gitignore | 1 + test/crashreport-upgrade/build.gradle | 55 ++++++++++++++ test/crashreport-upgrade/consumer-rules.pro | 0 test/crashreport-upgrade/gradle.properties | 3 + test/crashreport-upgrade/proguard-rules.pro | 24 ++++++ .../src/main/AndroidManifest.xml | 20 +++++ .../upgrade/UpgradeReportConstants.java | 15 ++++ .../upgrade/UpgradeReportProvider.java | 74 +++++++++++++++++++ .../src/main/res/xml/provider_paths.xml | 7 ++ 19 files changed, 253 insertions(+), 18 deletions(-) create mode 100644 test/crashreport-upgrade/.gitignore create mode 100644 test/crashreport-upgrade/build.gradle create mode 100644 test/crashreport-upgrade/consumer-rules.pro create mode 100644 test/crashreport-upgrade/gradle.properties create mode 100644 test/crashreport-upgrade/proguard-rules.pro create mode 100644 test/crashreport-upgrade/src/main/AndroidManifest.xml create mode 100644 test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportConstants.java create mode 100644 test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportProvider.java create mode 100644 test/crashreport-upgrade/src/main/res/xml/provider_paths.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml index b3a159f443..b569ae3318 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -82,6 +82,7 @@ diff --git a/app/build.gradle b/app/build.gradle index a5d0225232..a590264328 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,13 +105,14 @@ android { } // f系列-网约车-出租车 fochtaxi { + // 应用包名 applicationId rootProject.ext.android.fLauncherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fochtaxi"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -133,13 +134,14 @@ android { } // f系列-网约车-小巴车 fochbus { + // 应用包名 applicationId rootProject.ext.android.fLauncherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue,CHANNEL_VALUE: "fochbus"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -161,13 +163,14 @@ android { } // f系列-分体机全系列,未细分 f8xx { + // 应用包名 applicationId rootProject.ext.android.fLauncherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue,CHANNEL_VALUE: "f8xx"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -189,13 +192,14 @@ android { } // f系列-分体机 f80x { + // 应用包名 applicationId rootProject.ext.android.fLauncherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "f80x"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -217,13 +221,14 @@ android { } // f系列-分体机 phone { + // 应用包名 applicationId rootProject.ext.android.fLauncherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '1' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "phone"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -245,13 +250,14 @@ android { } // f系列-分体机-高德 f8Amap { + // 应用包名 applicationId rootProject.ext.android.fLauncherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "f8Amap"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -273,13 +279,14 @@ android { } // e系列,采用Launcher方案 e8xx { + // 应用包名 applicationId rootProject.ext.android.launcherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonLauncherAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonLauncherAmapApiValue, CHANNEL_VALUE: "e8xx"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -301,13 +308,14 @@ android { } // 同上 em4 { + // 应用包名 applicationId rootProject.ext.android.launcherApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonLauncherAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonLauncherAmapApiValue, CHANNEL_VALUE: "em4"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -329,13 +337,14 @@ android { } // e系列-2+32,对标D系列2+32,采用独立app的形式 em3 { + // 应用包名 applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue,CHANNEL_VALUE: "em3"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -357,13 +366,14 @@ android { } // e系列-1+16,对标D系列1+16,采用独立app形式 em1 { + // 应用包名 applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue,CHANNEL_VALUE: "em1"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -385,13 +395,14 @@ android { } // e系列-1+16,对标D系列1+16,采用独立app形式 em2 { + // 应用包名 applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue,CHANNEL_VALUE: "em2"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -413,13 +424,14 @@ android { } // d系列 d8xx { + // 应用包名 applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue,CHANNEL_VALUE: "d8xx"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -441,13 +453,14 @@ android { } // d系列 2 + 32 d80x { + // 应用包名 applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue,CHANNEL_VALUE: "d80x"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -469,13 +482,14 @@ android { } // d系列 1+16 版本 d82x { + // 应用包名 applicationId rootProject.ext.android.independentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,自研车机类型为0 buildConfigField 'int', 'CAR_MACHINE_TYPE', '0' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'false' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.commonIndependentAmapApiValue,CHANNEL_VALUE: "d82x"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false' // 是否支持换肤 @@ -497,13 +511,14 @@ android { } // 比亚迪 bydauto { + // 应用包名 applicationId rootProject.ext.android.bydautoIndependentApplicationId dimension "product" buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false' // 车机类型,主要用于区分自研车机还是别人家的车机,其他车机,比亚迪定为1 buildConfigField 'int', 'CAR_MACHINE_TYPE', '1' buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true' - manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.bydautoIndependentApiValue] + manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.bydautoIndependentApiValue,CHANNEL_VALUE: "bydauto"] // 是否使用高德sdk自定义导航 buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'true' // 是否支持换肤 @@ -557,7 +572,7 @@ repositories { } aspectjx { - include "com.mogo.chat" + include "com.mogo.chat" } dependencies { diff --git a/app/functions/crashreport.gradle b/app/functions/crashreport.gradle index 7fb0712d47..9390b9e7ee 100644 --- a/app/functions/crashreport.gradle +++ b/app/functions/crashreport.gradle @@ -3,10 +3,12 @@ project.dependencies { if (Boolean.valueOf(RELEASE)) { implementation rootProject.ext.dependencies.crashreport + implementation rootProject.ext.dependencies.crashreportupgrade debugImplementation rootProject.ext.dependencies.crashreportbugly releaseImplementation rootProject.ext.dependencies.crashreportnoop } else { implementation project(':test:crashreport') + implementation project(':test:crashreport-upgrade') debugImplementation project(':test:crashreport-bugly') releaseImplementation project(':test:crashreport-noop') } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5121884a7f..f9b68f4e86 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,6 +16,16 @@ android:theme="@style/AppTheme.App" android:resizeableActivity="false" tools:replace="android:label"> + + + + + + diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 820bc4c8ab..a16f097341 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -32,6 +32,7 @@ import com.mogo.module.v2x.utils.ObuConfig; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.test.crashreport.ITestCrashReportProvider; +import com.mogo.test.crashreport.upgrade.UpgradeReportProvider; import com.mogo.utils.ProcessUtils; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.httpdns.HttpSimpleLocation; @@ -115,6 +116,8 @@ public class MogoApplication extends AbsMogoApplication { LeakCanary.install(this); + // 初始化 bugly 升级 + ARouter.getInstance().navigation(UpgradeReportProvider.class); // debug 下初始化 bugly 上报 if (DebugConfig.isDebug()) { ARouter.getInstance().navigation(ITestCrashReportProvider.class); diff --git a/config.gradle b/config.gradle index e099ab172b..ee642a7c90 100644 --- a/config.gradle +++ b/config.gradle @@ -204,6 +204,7 @@ ext { crashreport : "com.mogo.test:crashreport:${CRASHREPORT_VERSION}", crashreportbugly : "com.mogo.test:crashreport-bugly:${CRASHREPORT_BUGLY_VERSION}", crashreportnoop : "com.mogo.test:crashreport-noop:${CRASHREPORT_NOOP_VERSION}", + crashreportupgrade : "com.mogo.test:crashreport-noop:${CRASHREPORT_UPGRADE_VERSION}", skinsupportbase : "com.mogo.skin:skin-support-base:${SKIN_SUPPORT_VERSION}", diff --git a/gradle.properties b/gradle.properties index 54fa4c0895..65c68bc372 100644 --- a/gradle.properties +++ b/gradle.properties @@ -122,6 +122,7 @@ MOGO_MODULE_MONITOR_VERSION=2.0.12 CRASHREPORT_VERSION=2.0.12 CRASHREPORT_BUGLY_VERSION=2.0.12 CRASHREPORT_NOOP_VERSION=2.0.12 +CRASHREPORT_UPGRADE_VERSION=2.0.12 ## tts TTS_BASE_VERSION=2.0.12 TTS_DI_VERSION=2.0.12 diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java index 485fab815c..0a8554c0d4 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java @@ -90,6 +90,9 @@ public class V2XRefreshModel { } /** + * 已经由 + * @see com.mogo.module.v2x.V2XMarkerService + * 短链代替 * 刷新地图点数据,同步获取 */ public void querySnapshotAsync(MogoLatLng latLng, int radius, int limit) { diff --git a/settings.gradle b/settings.gradle index 8728c8634f..5513b6d948 100644 --- a/settings.gradle +++ b/settings.gradle @@ -13,6 +13,7 @@ include ':tts:tts-noop' include ':test:crashreport' include ':test:crashreport-bugly' include ':test:crashreport-noop' +include ':test:crashreport-upgrade' include ':skin:skin-support' include ':skin:skin-support-appcompat' include ':skin:skin-support-cardview' diff --git a/test/crashreport-bugly/build.gradle b/test/crashreport-bugly/build.gradle index 2ee98887fe..9c042db3df 100644 --- a/test/crashreport-bugly/build.gradle +++ b/test/crashreport-bugly/build.gradle @@ -49,7 +49,7 @@ dependencies { implementation project(":foudations:mogo-commons") } - implementation 'com.tencent.bugly:crashreport:latest.release' + implementation 'com.tencent.bugly:crashreport_upgrade:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.1.9 implementation 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新Bugly NDK版本号,也可以指定明确的版本号,例如3.0 diff --git a/test/crashreport-upgrade/.gitignore b/test/crashreport-upgrade/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/test/crashreport-upgrade/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/test/crashreport-upgrade/build.gradle b/test/crashreport-upgrade/build.gradle new file mode 100644 index 0000000000..e28fb2d408 --- /dev/null +++ b/test/crashreport-upgrade/build.gradle @@ -0,0 +1,55 @@ +apply plugin: 'com.android.library' +apply plugin: 'com.alibaba.arouter' + +android { + compileSdkVersion rootProject.ext.android.compileSdkVersion + defaultConfig { + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode Integer.valueOf(VERSION_CODE) + versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION") + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + + ndk { + // 设置支持的SO库架构 + abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a' + } + + javaCompileOptions { + annotationProcessorOptions { + arguments = [AROUTER_MODULE_NAME: project.getName()] + } + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(dir: "libs", include: ["*.jar"]) + implementation rootProject.ext.dependencies.androidxappcompat + implementation rootProject.ext.dependencies.arouter + annotationProcessor rootProject.ext.dependencies.aroutercompiler + + if (Boolean.valueOf(RELEASE)) { + implementation rootProject.ext.dependencies.crashreport + implementation rootProject.ext.dependencies.mogoutils + implementation rootProject.ext.dependencies.mogocommons + } else { + implementation project(":test:crashreport") + implementation project(":foudations:mogo-utils") + implementation project(":foudations:mogo-commons") + } + + implementation 'com.tencent.bugly:crashreport_upgrade:latest.release' + //其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.2.0 +} + +apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() \ No newline at end of file diff --git a/test/crashreport-upgrade/consumer-rules.pro b/test/crashreport-upgrade/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/crashreport-upgrade/gradle.properties b/test/crashreport-upgrade/gradle.properties new file mode 100644 index 0000000000..bcb33e8a94 --- /dev/null +++ b/test/crashreport-upgrade/gradle.properties @@ -0,0 +1,3 @@ +GROUP=com.mogo.test +POM_ARTIFACT_ID=crashreport-upgrade +VERSION_CODE=1 diff --git a/test/crashreport-upgrade/proguard-rules.pro b/test/crashreport-upgrade/proguard-rules.pro new file mode 100644 index 0000000000..68dec0863c --- /dev/null +++ b/test/crashreport-upgrade/proguard-rules.pro @@ -0,0 +1,24 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile +-dontwarn com.tencent.bugly.** +-keep public class com.tencent.bugly.**{*;} +-keep class android.support.**{*;} diff --git a/test/crashreport-upgrade/src/main/AndroidManifest.xml b/test/crashreport-upgrade/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..765c64126e --- /dev/null +++ b/test/crashreport-upgrade/src/main/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + + + + + + \ No newline at end of file diff --git a/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportConstants.java b/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportConstants.java new file mode 100644 index 0000000000..8e2b0380b8 --- /dev/null +++ b/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportConstants.java @@ -0,0 +1,15 @@ +package com.mogo.test.crashreport.upgrade; + + +/** + * @author donghongyu + * @since 2020/9/9 + *

+ * 描述 + */ +public class UpgradeReportConstants { + + public static final String PATH = "/upgradereport/api"; + + public static final String NAME = "UpgradeReportApi"; +} diff --git a/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportProvider.java b/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportProvider.java new file mode 100644 index 0000000000..18eb9acfce --- /dev/null +++ b/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportProvider.java @@ -0,0 +1,74 @@ +package com.mogo.test.crashreport.upgrade; + +import android.content.Context; +import android.text.TextUtils; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.alibaba.android.arouter.facade.template.IProvider; +import com.mogo.commons.network.Utils; +import com.mogo.utils.logger.Logger; +import com.tencent.bugly.Bugly; +import com.tencent.bugly.crashreport.CrashReport; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; + + +/** + * @author donghongyu + * @since 2020/9/9 + *

+ * 升级模块 + */ +@Route(path = UpgradeReportConstants.PATH) +public class UpgradeReportProvider implements IProvider { + + private static final String TAG = "UpgradeReportProvider"; + + @Override + public void init(Context context) { + Logger.d(TAG, "init"); + String packageName = context.getPackageName(); + String processName = getProcessName(android.os.Process.myPid()); + + //设置Bugly 用户策略(UserStrategy) + CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(context); + + strategy.setUploadProcess(processName == null || processName.equals(packageName)); + + CrashReport.putUserData(context, "serial", Utils.getSn()); + + Bugly.init(context, "f3f8b0b2f1", true, strategy); + } + + /** + * 获取进程号对应的进程名 + * + * @param pid 进程号 + * @return 进程名 + */ + private static String getProcessName(int pid) { + BufferedReader reader = null; + try { + reader = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline")); + String processName = reader.readLine(); + if (!TextUtils.isEmpty(processName)) { + processName = processName.trim(); + } + return processName; + } catch (Throwable throwable) { + throwable.printStackTrace(); + } finally { + try { + if (reader != null) { + reader.close(); + } + } catch (IOException exception) { + exception.printStackTrace(); + } + } + return null; + } +} + diff --git a/test/crashreport-upgrade/src/main/res/xml/provider_paths.xml b/test/crashreport-upgrade/src/main/res/xml/provider_paths.xml new file mode 100644 index 0000000000..1b4e49502c --- /dev/null +++ b/test/crashreport-upgrade/src/main/res/xml/provider_paths.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file