在MyApp类中扩展MultiDexApplication

问题描述 投票:0回答:1

首先,我试图创建扩展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)

warning

文档没有说明它。

那么,如果已经有名称写的话,如何在清单上注册呢?

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

通过this docs,我只是停下来使用这个命名的应用程序并使用: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());
    }

}

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

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

java android android-manifest android-multidex
1个回答
1
投票

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

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

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


    <application
        android:name=".App"
© www.soinside.com 2019 - 2024. All rights reserved.