清单xml中的MultiDexApplication和全局类

时间:2016-08-01 19:36:10

标签: java android global-variables android-manifest

我的问题是我有一个全球类,有关于我的应用程序的信息,我在其他活动中显示,

我的AndroidManifest.xml就是这样......

<application
    android:name=".Global"      <-------- global class
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/nobar">
 .
 .
</application>

但我有错误java.lang.OutOfMemoryError: GC overhead limit exceeded65k limit in dex,我需要将其更改为...

<application
    android:name="android.support.multidex.MultiDexApplication" <--- changed
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/nobar">
 .
 .
</application>

这是我的build.gradle

apply plugin: 'com.android.application'

android {

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }

    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    defaultConfig {
        applicationId "com.xx.xx"
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 25
        versionName "1.0"
        // Enabling multidex support.
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            signingConfig signingConfigs.xx
            debuggable false
        }
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:24.1.1'
    compile 'com.google.android.gms:play-services:9.4.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.mcxiaoke.volley:library:1.0.19'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

}

但我需要全球课来分享有关活动的信息......

还是有另一种方法可以做到这一点?

4 个答案:

答案 0 :(得分:0)

在build.gradle中,尝试更改下面的内容,使用 multiDexEnabled true

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

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

https://developer.android.com/studio/build/multidex.html

How to enable multidexing with the new Android Multidex support library

答案 1 :(得分:0)

我的项目有一个全局类,我做了这个全局类的例子

Example of global class with android manifest

我的全球课程解决方案就是这个例子..

Android global variable

答案 2 :(得分:0)

像这样更新您的全局类以支持MultiDex。

public class Global extends Application {
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
    //rest of your code here
}

答案 3 :(得分:0)

我刚刚遇到了同样的问题。

为解决此问题,我修复了如下的Global类。

public class Global extends Application  --> before

public class Global extends android.support.multidex.MultiDexApplication --> after

然后,AndroidManifest.xml应该像以前一样在name属性中响应Global类。

<application
    android:name=".Global"