Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在MyApp类中扩展多索引应用程序_Java_Android_Android Manifest_Android Multidex - Fatal编程技术网

Java 在MyApp类中扩展多索引应用程序

Java 在MyApp类中扩展多索引应用程序,java,android,android-manifest,android-multidex,Java,Android,Android Manifest,Android Multidex,首先,我尝试创建扩展MultiDexApplication的类应用程序,如下所示: public class App extends MultiDexApplication { private static Application application; public static Application getApplication() { return application; } public static Context getCo

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

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)
注意,我正在调用
MultiDex.install(这个)一次创建


这是讨论的相应方法吗?

我认为您不必继承
MultiDexApplication
。所以你有你的
App
类,你调用
MultiDex.install
,你有你的App类在清单中的
标签下(完整路径或相对路径-无所谓)

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

附注:在清单下指定应用程序的典型(相对路径)方式:


    <application
        android:name=".App"


是的,在gradle配置中一切正常。我只是想知道我所做的应用程序类是否是正确的方法。我看到了扩展应用程序的Multidex类,有一个名为
attachBaseContext
的方法,该类有一个空构造函数。。。我在应用程序类中没有做过这些事情(正如我的提问最后显示的代码)。在我看来,您为multidex应用程序定义应用程序的方法是正确的。下面是我使用的:
public类应用程序扩展应用程序{@Override protected void attachBaseContext(Context base){super.attachBaseContext(base);if(!BuildConfig.TESTMODE){MultiDex.install(this);}}}
onCreate上的call Multidex install和attachBaseContext之间有区别吗?是的。在为您的应用程序实例创建onCreate之前,将调用attachBaseContext。实际上,在末尾有另一个示例-但关键思想是在实际工作发生之前调用install。换句话说,尽快@MarcelloC–mara
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());
    }

}

    <application
        android:name=".App"