Skip to content

bugly合规升级 #40

Description

@349989153

这不完全是个issue,其实是个solve

因为隐私合规,app被要求整改,其中一个就是bugly的合规,对照着bugly的 开发者合规指南 ,在ai的帮助下,更新了bugly sdk的版本,分享出来希望能帮助更多的人。目前已在我app上跑通。

主要修改的是 android/build.gradle 和 com/reactlibrary/bugly/RNBuglyModule.java:
1、dependencies使用com.tencent.bugly:crashreport:4.1.9.3'(开发者合规指南推荐)
2、dependencies移除com.tencent.bugly:crashreport_upgrade:1.6.1(bugly不再有热更新,热更新放到腾讯旗下shiply了)
3、dependencies移除com.tencent.bugly:nativecrashreport:3.9.2(和新的sdk有重复,不移除就报错)
4、RNBuglyModule.java去掉没有的包,更改一些方法名(建议去掉跟upgrade有关的代码,如上所说bugly不再有热更新)

Hi! 👋

Firstly, thanks for your work on this project! 🙂

Today I used patch-package to patch rn-bugly@1.3.0-beta.3 for the project I'm working on.

Here is the diff that solved my problem:

diff --git a/node_modules/rn-bugly/android/build.gradle b/node_modules/rn-bugly/android/build.gradle
--- a/node_modules/rn-bugly/android/build.gradle
+++ b/node_modules/rn-bugly/android/build.gradle
@@ -41,6 +41,7 @@ repositories {
 dependencies {
     implementation 'com.facebook.react:react-native:+'
     implementation fileTree(dir: "libs", include: ["*.jar"])
-    implementation 'com.tencent.bugly:crashreport_upgrade:1.6.1'
-    implementation 'com.tencent.bugly:nativecrashreport:3.9.2'
+//     implementation 'com.tencent.bugly:crashreport_upgrade:1.6.1'
+//     implementation 'com.tencent.bugly:nativecrashreport:3.9.2'
+    implementation 'com.tencent.bugly:crashreport:4.1.9.3'
 }
diff --git a/node_modules/rn-bugly/android/src/main/java/com/reactlibrary/bugly/RNBuglyModule.java b/node_modules/rn-bugly/android/src/main/java/com/reactlibrary/bugly/RNBuglyModule.java
--- a/node_modules/rn-bugly/android/src/main/java/com/reactlibrary/bugly/RNBuglyModule.java
+++ b/node_modules/rn-bugly/android/src/main/java/com/reactlibrary/bugly/RNBuglyModule.java
@@ -2,29 +2,29 @@
 package com.reactlibrary.bugly;
 
 import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.os.Environment;
+// import android.graphics.drawable.Drawable; // 不再需要
+// import android.os.Environment; // 不再需要
 
 import com.facebook.react.bridge.Arguments;
 import com.facebook.react.bridge.Promise;
 import com.facebook.react.bridge.ReactApplicationContext;
 import com.facebook.react.bridge.ReactContextBaseJavaModule;
 import com.facebook.react.bridge.ReactMethod;
-import com.facebook.react.bridge.Callback;
+// import com.facebook.react.bridge.Callback;
 import com.facebook.react.bridge.ReadableMap;
 import com.facebook.react.bridge.ReadableMapKeySetIterator;
-import com.facebook.react.bridge.ReadableType;
-import com.facebook.react.bridge.WritableArray;
+// import com.facebook.react.bridge.ReadableType;
+// import com.facebook.react.bridge.WritableArray;
 import com.facebook.react.bridge.WritableMap;
-import com.tencent.bugly.Bugly;
-import com.tencent.bugly.beta.Beta;
-import com.tencent.bugly.beta.UpgradeInfo;
+// import com.tencent.bugly.Bugly;
+// import com.tencent.bugly.beta.Beta;         <-- 删除:升级功能类
+// import com.tencent.bugly.beta.UpgradeInfo;  <-- 删除:升级信息类
 import com.tencent.bugly.crashreport.BuglyLog;
 import com.tencent.bugly.crashreport.CrashReport;
 
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
+// import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -42,99 +42,30 @@ public class RNBuglyModule extends ReactContextBaseJavaModule {
     return "RNBugly";
   }
 
-  //初始化(自动检查更新)
+  // 初始化(自动检查更新) - 修改为只初始化Bugly,忽略更新逻辑
   public static void init(Context context,String appId,boolean isDebug) {
-    Bugly.init(context,appId,isDebug);
+    CrashReport.initCrashReport(context,appId,isDebug);
   }
 
-  //初始化(不自动检查更新)
+  // 初始化(不自动检查更新) - 修改为只初始化Bugly,移除Beta配置
   public static void initWithoutAutoCheckUpgrade(Context context,String appId,boolean isDebug) {
-    Beta.autoCheckUpgrade = false;
-    Bugly.init(context,appId,isDebug);
+    // Beta.autoCheckUpgrade = false; // <-- 删除
+    CrashReport.initCrashReport(context,appId,isDebug);
   }
 
+  // getResourceId 方法不再被使用,可以删除或保留
   private int getResourceId(String sourceName,String typeName) {
     Context ctx = getCurrentActivity().getApplicationContext();
     int resId = getCurrentActivity().getResources().getIdentifier(sourceName, typeName, ctx.getPackageName());
-    //如果没找到,将会返回0
     return resId;
   }
 
   @ReactMethod
   public void init(ReadableMap map, Promise promise) {
-    int upgradeCheckPeriod = 0;
-    if(map.hasKey("upgradeCheckPeriod")) {
-      upgradeCheckPeriod = map.getInt("upgradeCheckPeriod");
-    }
-    Beta.upgradeCheckPeriod = upgradeCheckPeriod;
-
-    boolean showInterruptedStrategy = true;
-    if(map.hasKey("showInterruptedStrategy")) {
-      showInterruptedStrategy = map.getBoolean("showInterruptedStrategy");
-    }
-    Beta.showInterruptedStrategy = showInterruptedStrategy;
-
-    boolean enableNotification = true;
-    if(map.hasKey("enableNotification")) {
-      enableNotification = map.getBoolean("enableNotification");
-    }
-    Beta.enableNotification = enableNotification;
-
-    boolean autoDownloadOnWifi = false;
-    if(map.hasKey("autoDownloadOnWifi")) {
-      autoDownloadOnWifi = map.getBoolean("autoDownloadOnWifi");
-    }
-    Beta.autoDownloadOnWifi = autoDownloadOnWifi;
+    // --- 删除所有 Beta (升级) 相关的配置代码 ---
+    // 之前这里有大量的 Beta.xxxx = map.xxxx; 全部删除。
+    // 标准版 CrashReport 不支持这些配置。
 
-    boolean canShowApkInfo = true;
-    if(map.hasKey("canShowApkInfo")) {
-      canShowApkInfo = map.getBoolean("canShowApkInfo");
-    }
-    Beta.canShowApkInfo = canShowApkInfo;
-
-    boolean autoCheckAppUpgrade = true;
-    if(map.hasKey("autoCheckAppUpgrade")) {
-      autoCheckAppUpgrade = map.getBoolean("autoCheckAppUpgrade");
-    }
-    Beta.autoCheckAppUpgrade = autoCheckAppUpgrade;
-
-    int largeIconId = 0;
-    if(map.hasKey("largeIconName")) {
-      largeIconId = getResourceId(map.getString("largeIconName"),"drawable");
-    }
-    int smallIconId = 0;
-    if(map.hasKey("smallIconName")) {
-      smallIconId = getResourceId(map.getString("smallIconName"),"drawable");
-    }
-    int defaultBannerId = 0;
-    if(map.hasKey("defaultBannerName")) {
-      defaultBannerId = getResourceId(map.getString("defaultBannerName"),"drawable");
-    }
-    int upgradeDialogLayoutId = 0;
-    if(map.hasKey("upgradeDialogLayoutName")) {
-      upgradeDialogLayoutId = getResourceId(map.getString("upgradeDialogLayoutName"),"layout");
-    }
-    int tipsDialogLayoutId = 0;
-    if(map.hasKey("tipsDialogLayoutName")) {
-      tipsDialogLayoutId = getResourceId(map.getString("tipsDialogLayoutName"),"layout");
-    }
-    //由于是js端进行初始化,不必延时,将默认的3s改为0
-    Beta.initDelay = 0;
-    if(largeIconId>0) {
-      Beta.largeIconId = largeIconId;
-    }
-    if(smallIconId>0) {
-      Beta.smallIconId = smallIconId;
-    }
-    if(defaultBannerId>0) {
-      Beta.defaultBannerId = defaultBannerId;
-    }
-    if(upgradeDialogLayoutId>0) {
-      Beta.upgradeDialogLayoutId = upgradeDialogLayoutId;
-    }
-    if(tipsDialogLayoutId>0) {
-      Beta.tipsDialogLayoutId = tipsDialogLayoutId;
-    }
     String appId = "";
     if(map.hasKey("appId")) {
       appId = map.getString("appId");
@@ -144,7 +75,8 @@ public class RNBuglyModule extends ReactContextBaseJavaModule {
       return;
     }
     try {
-      Bugly.init(getReactApplicationContext(),appId,false);
+      // 依然使用 Bugly.init 进行初始化,它会启动 CrashReport
+      CrashReport.initCrashReport(getReactApplicationContext(),appId,false);
       promise.resolve(true);
     } catch (Exception e) {
       promise.reject("-1",e.getMessage());
@@ -232,7 +164,6 @@ public class RNBuglyModule extends ReactContextBaseJavaModule {
 
   @ReactMethod
   public void postException(ReadableMap map, Promise promise) {
-
     try
     {
       int category = map.getInt("category");
@@ -285,49 +216,16 @@ public class RNBuglyModule extends ReactContextBaseJavaModule {
 
   @ReactMethod
   public void checkUpgrade(ReadableMap options) {
-    //用户手动点击检查,非用户点击操作请传false
-    boolean isManual = true;
-    //是否显示弹窗等交互,[true:没有弹窗和toast] [false:有弹窗或toast]
-    boolean isSilence = false;
-    if(options.hasKey("isManual"))
-    {
-      isManual = options.getBoolean("isManual");
-    }
-    if(options.hasKey("isSilence"))
-    {
-      isSilence = options.getBoolean("isSilence");
-    }
-    Beta.checkUpgrade(isManual,isSilence);
+    // --- 移除功能 ---
+    // Beta.checkUpgrade(isManual,isSilence);
+    // 标准版不支持检查更新,这里留空防止 JS 调用报错
+    BuglyLog.w("RNBugly", "checkUpgrade is not supported in CrashReport SDK.");
   }
 
   @ReactMethod
   public void getUpgradeInfo(Promise promise) {
-
-    UpgradeInfo info = Beta.getUpgradeInfo();
-    if(info!=null)
-    {
-      WritableMap writableMap = Arguments.createMap();
-      writableMap.putString("apkMd5",info.apkMd5);
-      writableMap.putString("apkUrl",info.apkUrl);
-      writableMap.putString("id",info.id);
-      writableMap.putString("imageUrl",info.imageUrl);
-      writableMap.putString("newFeature",info.newFeature);
-      writableMap.putString("title",info.title);
-      writableMap.putString("versionName",info.versionName);
-      writableMap.putDouble("fileSize",info.fileSize);
-      //弹窗间隔(ms)
-      writableMap.putDouble("popInterval",info.popInterval);
-      //弹窗次数:
-      writableMap.putInt("popTimes",info.popTimes);
-      //发布类型(0:测试 1:正式):
-      writableMap.putInt("publishType",info.publishType);
-      writableMap.putInt("updateType",info.updateType);
-      //弹窗类型(1:建议 2:强制 3:手工):
-      writableMap.putInt("upgradeType",info.upgradeType);
-      writableMap.putInt("versionCode",info.versionCode);
-      writableMap.putDouble("publishTime",info.publishTime);
-      promise.resolve(writableMap);
-    }
+    // --- 移除功能 ---
+    // 标准版没有 UpgradeInfo
     promise.resolve(null);
   }
 }

This issue body was partially generated by patch-package.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions