Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@

.packages
.pub/
pubspec.lock

build/

#
*.iml
.idea/
4 changes: 2 additions & 2 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
group 'com.crazecoder.flutterbugly'
version '1.0-SNAPSHOT'
version '0.3.2+1'

buildscript {
repositories {
Expand All @@ -8,7 +8,7 @@ buildscript {
}

dependencies {
classpath 'com.android.tools.build:gradle:4.1.1'
classpath 'com.android.tools.build:gradle:4.1.0'
}
}

Expand Down
26 changes: 0 additions & 26 deletions android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,30 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.crazecoder.flutterbugly">

<application
android:usesCleartextTraffic="true"
tools:targetApi="n">
<activity
android:name="com.tencent.bugly.beta.ui.BetaActivity"
android:configChanges="keyboardHidden|orientation|screenSize|locale"
android:theme="@android:style/Theme.Translucent" />

<activity
android:name="com.tencent.bugly.beta.ui.BetaActivity"
android:configChanges="keyboardHidden|orientation|screenSize|locale"
android:theme="@android:style/Theme.Translucent" />

<provider
android:name="com.tencent.bugly.beta.utils.BuglyFileProvider"
android:authorities="${applicationId}.fileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package com.crazecoder.flutterbugly;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.crazecoder.flutterbugly.bean.BuglyInitResultInfo;
import com.crazecoder.flutterbugly.utils.JsonUtil;
Expand All @@ -22,6 +23,7 @@
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
Expand All @@ -31,25 +33,70 @@
/**
* FlutterBuglyPlugin
*/
public class FlutterBuglyPlugin implements FlutterPlugin, MethodCallHandler, ActivityAware {
public class FlutterBuglyPlugin implements FlutterPlugin, ActivityAware, MethodCallHandler {
private MethodChannel channel;
private Context applicationContext;
private Activity activity;
private Result result;
private boolean isResultSubmitted = false;
private static MethodChannel channel;
@SuppressLint("StaticFieldLeak")
private static Activity activity;
private FlutterPluginBinding flutterPluginBinding;


/**
* Plugin registration.
*/
@Deprecated
public static void registerWith(Registrar registrar) {
channel = new MethodChannel(registrar.messenger(), "crazecoder/flutter_bugly");
FlutterBuglyPlugin plugin = new FlutterBuglyPlugin();
channel.setMethodCallHandler(plugin);
activity = registrar.activity();
FlutterBuglyPlugin instance = new FlutterBuglyPlugin();
instance.onAttachedToEngine(registrar.context(), registrar.activity(), registrar.messenger());
}

//
public void onAttachedToEngine(@NonNull Context applicationContext, @Nullable Activity activity, @NonNull BinaryMessenger messenger) {
channel = new MethodChannel(messenger, "crazecoder/flutter_bugly");
channel.setMethodCallHandler(this);
this.applicationContext = applicationContext;
this.activity = activity;
}

// --- FlutterPlugin

@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
onAttachedToEngine(binding.getApplicationContext(), null, binding.getBinaryMessenger());
}

@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
channel.setMethodCallHandler(null);
channel = null;

applicationContext = null;
}

// --- ActivityAware

@Override
public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
activity = binding.getActivity();
}

@Override
public void onDetachedFromActivityForConfigChanges() {
onDetachedFromActivity();
}

@Override
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
onAttachedToActivity(binding);
}

@Override
public void onDetachedFromActivity() {
activity = null;
}

// --- MethodCallHandler

@Override
public void onMethodCall(final MethodCall call, @NonNull final Result result) {
isResultSubmitted = false;
Expand Down Expand Up @@ -97,14 +144,16 @@ public void onUpgrade(int ret, UpgradeInfo strategy, boolean isManual, boolean i
}
} : null;
}
Beta.canShowUpgradeActs.add(activity.getClass());
if (activity != null) {
Beta.canShowUpgradeActs.add(activity.getClass());
}

String appId = call.argument("appId").toString();
Bugly.init(activity.getApplicationContext(), appId, BuildConfig.DEBUG);
Bugly.init(applicationContext, appId, BuildConfig.DEBUG);
if (call.hasArgument("channel")) {
String channel = call.argument("channel");
if (!TextUtils.isEmpty(channel))
Bugly.setAppChannel(activity.getApplicationContext(), channel);
Bugly.setAppChannel(applicationContext, channel);
}
result(getResultBean(true, appId, "Bugly 初始化成功"));
} else {
Expand All @@ -113,21 +162,21 @@ public void onUpgrade(int ret, UpgradeInfo strategy, boolean isManual, boolean i
} else if (call.method.equals("setUserId")) {
if (call.hasArgument("userId")) {
String userId = call.argument("userId");
Bugly.setUserId(activity.getApplicationContext(), userId);
Bugly.setUserId(applicationContext, userId);
}
result(null);
} else if (call.method.equals("setUserTag")) {
if (call.hasArgument("userTag")) {
Integer userTag = call.argument("userTag");
if (userTag != null)
Bugly.setUserTag(activity.getApplicationContext(), userTag);
Bugly.setUserTag(applicationContext, userTag);
}
result(null);
} else if (call.method.equals("putUserData")) {
if (call.hasArgument("key") && call.hasArgument("value")) {
String userDataKey = call.argument("key");
String userDataValue = call.argument("value");
Bugly.putUserData(activity.getApplicationContext(), userDataKey, userDataValue);
Bugly.putUserData(applicationContext, userDataKey, userDataValue);
}
result(null);
} else if (call.method.equals("checkUpgrade")) {
Expand Down Expand Up @@ -185,37 +234,4 @@ private BuglyInitResultInfo getResultBean(boolean isSuccess, String appId, Strin
bean.setMessage(msg);
return bean;
}

@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
this.flutterPluginBinding = binding;
}

@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
channel.setMethodCallHandler(null);
flutterPluginBinding = null;
}

@Override
public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
activity = binding.getActivity();
channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "crazecoder/flutter_bugly");
channel.setMethodCallHandler(this);
}

@Override
public void onDetachedFromActivityForConfigChanges() {

}

@Override
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {

}

@Override
public void onDetachedFromActivity() {

}
}
61 changes: 18 additions & 43 deletions example/.gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
Expand All @@ -16,56 +15,32 @@
*.iws
.idea/

# Visual Studio Code related
.vscode/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
build/
/build/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
# Web related
lib/generated_plugin_registrant.dart

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*
# Symbolication related
app.*.symbols

# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
# Obfuscation related
app.*.map.json

# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
11 changes: 11 additions & 0 deletions example/android/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java

# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
key.properties
5 changes: 5 additions & 0 deletions example/android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
32 changes: 32 additions & 0 deletions example/ios/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
*.mode1v3
*.mode2v3
*.moved-aside
*.pbxuser
*.perspectivev3
**/*sync/
.sconsign.dblite
.tags*
**/.vagrant/
**/DerivedData/
Icon?
**/Pods/
**/.symlinks/
profile
xcuserdata
**/.generated/
Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*

# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
!default.perspectivev3
Loading