VM具有multidex支持,MultiDex支持库被禁用

Ani*_*nil 15 android virtual-machine android-multidex

我收到以下错误.

致命异议:主要

  • 版本为2.1.0的VM具有multidex支持
  • 安装
  • VM具有multidex支持,MultiDex支持库被禁用.
  • 安装
  • VM具有multidex支持,MultiDex支持库被禁用.
  • 关闭VM

这是我的build.gradle,我在android部分启用了multidex,

apply plugin: 'com.android.application'


android {
compileSdkVersion 23
buildToolsVersion '23.0.0'

defaultConfig {
    applicationId "com.mycompany.newlogin"
    minSdkVersion 15
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
productFlavors {

}
useLibrary 'org.apache.http.legacy'
}



dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:multidex:1.0.0'
compile 'com.google.guava:guava-jdk5:17.0'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
//compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

}
Run Code Online (Sandbox Code Playgroud)

我的清单文件是

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mycompany.newlogin" >
<uses-permission android:name="android.permission.INTERNET"/>


<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:name="android.support.multidex.MultiDexApplication">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Login"
        android:label="@string/title_activity_login" >
    </activity>
    <activity
        android:name=".Register"
        android:label="@string/title_activity_register" >
    </activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

Ban*_*res 4

创建一个类,让其命名App并扩展MultiDexApplication如下:

import android.support.multidex.MultiDexApplication;

public class App extends MultiDexApplication {
    //you can leave this empty or override methods if you like so the thing is that you need to extend from MultiDexApplication
}
Run Code Online (Sandbox Code Playgroud)

在您的清单中添加App为您的应用程序名称,就像这样

<application
        android:name=".App" // <<< this is the important line!
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name">
Run Code Online (Sandbox Code Playgroud)

添加所有内容后,进行一个干净的构建,它现在应该可以工作了:)。

  • 老兄,我认为这不是一个错误,虚拟机已经支持multidex,这就是他们禁用的原因,尝试检查5.0以下的日志。我猜ART虚拟机已经有了multidex支持 (6认同)
  • `android:name="android.support.multidex.MultiDexApplication"` -&gt; 将其替换为您的自定义类。 (2认同)