如何将instabug SDK集成到flutter应用中



我试图实现Instabug(崩溃分析)到我的android扑动应用程序,我很困惑,我应该在哪里输入这段代码到我的项目。

在应用程序子类的onCreate()方法中初始化Instabug:

instabug

步骤的图片扑动包中应用程序子类的onCreate()方法在哪里?如果我需要创建一个,我该在哪里创建呢?

在flutter应用程序根目录中,

跟随android/app/src/main/kotlin/your package/,然后你会看到MainActivity

创建一个继承自FlutterApplication的类,与MainActivity的路径相同

class CustomApplication : FlutterApplication {
override fun onCreate() {
super.onCreate()
// Paste here the integration codes of instabug
}
}

然后转到Manifest,android/app/src/main/kotlin/your package/AndroidManifest.xml,修改应用程序部分

<application
android:name=".CustomApplication"
...
</application>

您可以使用https://pub.dev/packages/instabug_flutter包
对于Android,请遵循Readme
步骤1中提到的步骤:将以下Maven存储库添加到您的项目级别build.gradle

allprojects {
repositories {
maven {
url "https://sdks.instabug.com/nexus/repository/instabug-cp"
}
}
}

步骤2:创建一个新的Java类,扩展FlutterApplication,并将其添加到AndroidManifest.xml

<application
android:name=".CustomFlutterApplication"
...
</application>

步骤3:在新创建的CustomFlutterApplication类中,重写onCreate()并添加以下代码:

来自https://github.com/Instabug/Instabug-Flutter/blob/master/example/android/app/src/main/java/com/instabug/instabugflutterexample/CustomFlutterApplication.java的CustomFlutterApplication代码

package com.instabug.instabugflutterexample;
import io.flutter.app.FlutterApplication;
import com.instabug.instabugflutter.InstabugFlutterPlugin;
import java.util.ArrayList;
public class CustomFlutterApplication extends FlutterApplication {
@Override
public void onCreate() {
super.onCreate();
ArrayList<String> invocation_events = new ArrayList<>();
invocation_events.add(InstabugFlutterPlugin.INVOCATION_EVENT_FLOATING_BUTTON);
InstabugFlutterPlugin instabug = new InstabugFlutterPlugin();
instabug.start(CustomFlutterApplication.this, "2d355f559ea67051a56fce82603f8e41", invocation_events);
instabug.setWelcomeMessageMode("WelcomeMessageMode.disabled");
}
}

Dart示例代码片段https://github.com/Instabug/Instabug-Flutter/blob/master/example/lib/main.dart

import 'dart:async';
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:instabug_flutter/Instabug.dart';
import 'package:instabug_flutter/BugReporting.dart';
import 'package:instabug_flutter/Surveys.dart';
import 'package:instabug_flutter/FeatureRequests.dart';
import 'package:instabug_flutter/CrashReporting.dart';
void main() async {
FlutterError.onError = (FlutterErrorDetails details) {
Zone.current.handleUncaughtError(details.exception, details.stack);
};
runZoned<Future<void>>(() async {
runApp(MyApp());
}, onError: (dynamic error, StackTrace stackTrace) {
CrashReporting.reportCrash(error, stackTrace);
});
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
@override
void initState() {
super.initState();
if (Platform.isIOS) {
Instabug.start('efa41f402620b5654f2af2b86e387029',
<InvocationEvent>[InvocationEvent.floatingButton]);
}
initPlatformState();
}

在深入研究了他们在instabug github repo上的例子后,我能够解决这个问题。

  1. 在main/kotlin/com/example/app下创建一个新的java文件CustomFlutterApplication.java。这就是MainActivity。
package com.example.app;

import io.flutter.app.FlutterApplication;
import com.instabug.instabugflutter.InstabugFlutterPlugin;

import java.util.ArrayList;

public class CustomFlutterApplication extends FlutterApplication {
@Override
public void onCreate() {
super.onCreate();
ArrayList<String> invocationEvents = new ArrayList<>();
invocationEvents.add(InstabugFlutterPlugin.INVOCATION_EVENT_SHAKE);
new InstabugFlutterPlugin().start(CustomFlutterApplication.this, "<API KEY>", invocationEvents);
}
}
  1. 在你的AndroidManifest.xml中,将android:name="io.flutter.app.FlutterApplication"替换为android:name=".CustomFlutterApplication"

  2. 在你的项目级build.gradle中,

allprojects {
repositories {
maven {
url "https://sdks.instabug.com/nexus/repository/instabug-cp"
}
}
}
  1. 现在构建项目

最新更新