Java 在MyApp类中扩展多索引应用程序
首先,我尝试创建扩展MultiDexApplication的类应用程序,如下所示: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
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"