在 MyApp 中扩展 MultiDexApplication class

Extend MultiDexApplication in MyApp class

首先,我试图创建扩展 MultiDexApplication 的 class 应用程序,如下所示:

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"
        ...

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

这是 class 创建的应用程序:

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());
    }

}

请注意,我在 onCreate

调用 MultiDex.install(this);

这是讨论的相应方法吗

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

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

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


    <application
        android:name=".App"