2015-10-25 20 views
7

Otrzymuję następujący błąd.Maszyna wirtualna ma obsługę wielościeżkową, biblioteka pomocy MultiDex jest wyłączona

krytyczny wyjątek: Głównym

  • VM w wersji 2.1.0 ma multidex wsparcia
  • zainstalować
  • VM multidex wsparcia, biblioteka wsparcie MultiDex jest wyłączone.
  • Instalacja
  • Maszyna wirtualna ma obsługę wielu znaków, biblioteka obsługi MultiDex jest wyłączona.
  • Wyłączanie VM

tutaj jest mój build.gradle, mam umożliwia multidex w Android części

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' 

} 

i mój plik manifestu jest

<?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> 
+0

masz klasę rozciągający się od aplikacji? – Baniares

+1

Mam klasę MainActivity, która rozszerza AppCompactActivity – Anil

+1

Z dokumentów: Ta biblioteka zapewnia zgodność dla platform o poziomie API od 4 do 20. Ta biblioteka nie robi nic na nowszych wersjach platformy, które zapewniają wbudowaną obsługę dodatkowych plików dex. Sprawdziłem ich kod na [grepcode] (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/android/support/multidex/MultiDex.java) –

Odpowiedz

2

utworzyć klasa pozwala nazwać ją App i rozszerzyć z MultiDexApplication w ten sposób:

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 
} 

w swoim manifeście dodać App jak nazwa aplikacji, tak jak to

<application 
     android:name=".App" // <<< this is the important line! 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name"> 

Po dodaniu wszystko uczynić czystą kompilację i powinno działać teraz :).

+0

Przesłałem plik manifestu, proszę spojrzeć i pomóc mi, gdzie dodać w moim pliku manifestu – Anil

+1

'android: name =" android.support.multidex.MultiDexApplication "' -> Zastąp to Twoja niestandardowa klasa. – kientux

+0

Zrobiłem, ale wciąż pokazuje ten sam błąd – Anil

1

Zastąp metoda attachBaseContext w swojej klasie aplikacji

@Override 
protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    MultiDex.install(this); 
} 
+0

Zakładając, że istnieje klasa rozszerzająca ** Aplikacja ** –