未创建Android扩展应用

时间:2018-04-03 05:58:38

标签: android android-context

  1. MyApplication扩展了应用程序。

  2. MyApplication.java

    public class MyApplication extends Application {
    @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            MultiDex.install(this);
        }
    }
    
  3. 的AndroidManifest.xml

    <application android:name="com.my.app.MyApplication">
    
  4. tergetSdkVersion是23

  5. compileSdkVersion是26

  6. 使用multidex (multidex库是'com.android.support:multidex:1.0.1')

  7. 问题是有时候没有创建MyApplication。 (不总是) 看起来默认的Application实例是创建非MyApplication。

    !!!在targetSdkVersion更新18 - &gt; 23之后会出现此问题。

1 个答案:

答案 0 :(得分:0)

如果您使用MultiDex

,这就是您的应用程序类的样子
public class MyApplication extends MultiDexApplication{

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

如果你转到MultiDexApplication,这是.class文件中的代码。

public class MultiDexApplication extends Application {
    public MultiDexApplication() {
    }

    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

因此,如果要覆盖自定义实现的attachBaseContext,则可以覆盖该方法,否则无需覆盖。因为上面我将MyApplication类扩展为MultiDexApplication类。

您必须在AndroidManifest.xml

中注册您的Application类
<application
        android:name=".MyApplication"
        android:allowBackup="false"
        android:icon="@mipmap/app_icon"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".SomeActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
</application>

你已经完成了。

你的build.gradle(应用程序级别)看起来像

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 23
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.1'
}

如需进一步参考,您可以访问documentation