一、遇到的问题
- 项目背景
Unity与Android交互,通过调用原生接口上报打点
- 问题描述
客户端频繁的触发打点任务,调用Android端的接口,应用闪退,错误信息:“java.lang.ClassNotFoundException: Didn’t find class "com.google.xxx.xxxx"
二、原因
当您的应用及其引用的库包含的方法数超过 65536 时,您会遇到一个构建错误,指明您的应用已达到 Android 构建架构规定的引用限制。引用
三、解决方法
- 启用MultiDex 解决应用及其引用的库包含的方法数最大 65536限制
- 具体配置请参考官方示例,网上也有很多使用MultiDex 解决的方案,但是教程中使用的方法太老了,对我的问题无效,特此贴出官方的解决方案
- 需要补充一点,配置好后,如何启用MultiDex
(1) .Androidmanifest文件中指定Application为MultiDexApplication,对于一般不需要在application中执行初始化操作的app可以采用这种。但是我使用该方式,应用打开直接闪退了
<application
android:name="androidx.multidex.MultiDexApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
……>
(2).自定义Application并继承MultiDexApplication。这种方式解决了我的问题
public class MyApplication extends MultiDexApplication
{
}
(3).重写Application的attachBaseContext方法
public class MyApplication extends Application{
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
|