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 @@
+
@@ -90,7 +91,6 @@
-
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">
+
+
+
+ * 描述 + */ +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 @@
+
+