首页 > 解决方案 > 在 MyApp 类中扩展 MultiDexApplication

问题描述

首先,我试图创建扩展 MultiDexApplication 的类 App,如下所示:

public class App extends MultiDexApplication {

    private static Application application;

    public static Application getApplication() {
        return application;
    }

    public static Context getContext() {
        return getApplication().getApplicationContext();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        application = this;
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(getContext());
    }

}

但我收到一条消息建议:

The <application> com.packageName.App is not registered in the manifest less... (Ctrl+F1)

警告

该文档没有说明任何内容。

那么,如果它已经写了名字,我怎么能在清单上注册它呢?

 <application 
        android:name="android.support.multidex.MultiDexApplication"
        ...

通过这个文档,我只是停止使用这个给定的命名应用程序并使用:android:name=".App"

这是 App 创建的类:

public class App extends Application {

    private static Application application;

    public static Application getApplication() {
        return application;
    }

    public static Context getContext() {
        return getApplication().getApplicationContext();
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        application = this;
        MultiDex.install(getContext());
    }

}

请注意,我正在调用MultiDex.install(this);onCreate

这是这里讨论的相应方法吗?

标签: javaandroidandroid-manifestandroid-multidex

解决方案


我不认为你必须继承MultiDexApplication。所以你有你的App类,你调用MultiDex.install,你的应用程序类<application/>在你的清单中的标记下(完整路径或相对路径 - 无关紧要)。

还请确保您的应用模块的 build.gradle 文件multiDexEnabled true在 android/defaultConfig 下?

PS.:在manifest下指定App的典型(相对路径)方式:


    <application
        android:name=".App"

推荐阅读