bugly android 错误不上报,Android使用Bugly 异常上报热更新使用过程中的问题

热修复

java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

补丁是修改fragment的话在三星手机中会不兼容 指定下发版本5.0以上

如果出现Class ref in pre-verified class resolved to unexpected implementation异常, 请确认以下几点:Application中传入ApplicationLike的参数时是否采用字符串而不是Class.getName方式;新的Application是否已经加入到dex loader pattern中; 额外添加到dex loader pattern中类的引用类也需要加载到loader pattern中。

旧文档中的SampleApplicationLike

package com.hzjr.common;

import android.annotation.TargetApi;

import android.app.Application;

import android.content.Context;

import android.content.Intent;

import android.os.Build;

import android.support.multidex.MultiDex;

import android.widget.Toast;

import com.tencent.bugly.Bugly;

import com.tencent.bugly.beta.Beta;

import com.tencent.bugly.beta.interfaces.BetaPatchListener;

import com.tencent.tinker.loader.app.DefaultApplicationLike;

import java.util.Locale;

/**

* Created by zjw on 2017/12/20 0020.

*/

public class SampleApplicationLike extends DefaultApplicationLike {

public static final String TAG = "Tinker.SampleApplicationLike";

public SampleApplicationLike(Application application, int tinkerFlags,

boolean tinkerLoadVerifyFlag, long applicationStartElapsedTime,

long applicationStartMillisTime, Intent tinkerResultIntent) {

super(application, tinkerFlags, tinkerLoadVerifyFlag, applicationStartElapsedTime, applicationStartMillisTime, tinkerResultIntent);

}

@Override

public void onCreate() {

super.onCreate();

// 设置是否开启热更新能力,默认为true

Beta.enableHotfix = true;

// 设置是否自动下载补丁,默认为true

Beta.canAutoDownloadPatch = true;

// 设置是否自动合成补丁,默认为true

Beta.canAutoPatch = true;

// 设置是否提示用户重启,默认为false

Beta.canNotifyUserRestart = false;

// 补丁回调接口

Beta.betaPatchListener = new BetaPatchListener() {

@Override

public void onPatchReceived(String patchFile) {

Toast.makeText(getApplication(), "补丁下载地址" + patchFile, Toast.LENGTH_SHORT).show();

}

@Override

public void onDownloadReceived(long savedLength, long totalLength) {

Toast.makeText(getApplication(),

String.format(Locale.getDefault(), "%s %d%%",

Beta.strNotificationDownloading,

(int) (totalLength == 0 ? 0 : savedLength * 100 / totalLength)),

Toast.LENGTH_SHORT).show();

}

@Override

public void onDownloadSuccess(String msg) {

Toast.makeText(getApplication(), "补丁下载成功", Toast.LENGTH_SHORT).show();

}

@Override

public void onDownloadFailure(String msg) {

Toast.makeText(getApplication(), "补丁下载失败", Toast.LENGTH_SHORT).show();

}

@Override

public void onApplySuccess(String msg) {

Toast.makeText(getApplication(), "补丁应用成功", Toast.LENGTH_SHORT).show();

}

@Override

public void onApplyFailure(String msg) {

Toast.makeText(getApplication(), "补丁应用失败", Toast.LENGTH_SHORT).show();

}

@Override

public void onPatchRollback() {

}

};

// 设置开发设备,默认为false,上传补丁如果下发范围指定为“开发设备”,需要调用此接口来标识开发设备

Bugly.setIsDevelopmentDevice(getApplication(), true);

// 多渠道需求塞入

// String channel = WalleChannelReader.getChannel(getApplication());

// Bugly.setAppChannel(getApplication(), channel);

// 这里实现SDK初始化,appId替换成你的在Bugly平台申请的appId

// 调试时,将第三个参数改为true

Bugly.init(getApplication(), "c2b7a49199", false);

}

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)

@Override

public void onBaseContextAttached(Context base) {

super.onBaseContextAttached(base);

// you must install multiDex whatever tinker is installed!

MultiDex.install(base);

// 安装tinker

// TinkerManager.installTinker(this); 替换成下面Bugly提供的方法

Beta.installTinker(this);

}

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)

public void registerActivityLifecycleCallback(Application.ActivityLifecycleCallbacks callbacks) {

getApplication().registerActivityLifecycleCallbacks(callbacks);

}

@Override

public void onTerminate() {

super.onTerminate();

// Beta.unInit();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值