这不完全是个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.
这不完全是个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.3for the project I'm working on.Here is the diff that solved my problem:
This issue body was partially generated by patch-package.