2015-10-18 81 views
16

我正在使用Android自定義啓動器。應用程序可以在某些手機上完美運行,但不會在其他手機上啓動在啓動應用程序時發生以下錯誤。某些設備上出錯 - 找不到類'com.google.android.gms.measurement.internal.zzz'

E/dalvikvm﹕ Could not find class 'com.google.android.gms.measurement.internal.zzz', referenced from method com.google.android.gms.measurement.internal.zzv.zzaL 

E/AndroidRuntime﹕ FATAL EXCEPTION: main 

java.lang.VerifyError: com/google/android/gms/measurement/internal/zzv 
      at com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(Unknown Source) 
      at android.content.ContentProvider.attachInfo(ContentProvider.java:1651) 
      at android.content.ContentProvider.attachInfo(ContentProvider.java:1622) 
      at android.app.ActivityThread.installProvider(ActivityThread.java:5016) 
      at android.app.ActivityThread.installContentProviders(ActivityThread.java:4590) 
      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4530) 
      at android.app.ActivityThread.access$1500(ActivityThread.java:155) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1385) 
      at android.os.Handler.dispatchMessage(Handler.java:110) 
      at android.os.Looper.loop(Looper.java:193) 
      at android.app.ActivityThread.main(ActivityThread.java:5300) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646) 
      at dalvik.system.NativeStart.main(Native Method) 
+0

Aqib嗨。你有沒有設法找到任何信息,爲什麼這被拋出? – mm8154

+0

@ mm8154我在下面添加了我的答案。 – AqibBangash

回答

41

因此,經過大量的搜索,我才知道這個問題是由於多重索引。在某些電話上,多重索引不起作用。可能是由於他們的Android版本。但是我解決了這個問題通過introductng一個應用程序類

public class MyApplication extends Application { 

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

和menifest我在應用程序代碼中輸入的名稱,如:

<application 
     android:name=".MyApplication" 
     android:allowBackup="true" 
     android:icon="@mipmap/xxxxxx" 
     android:label="@string/app_name" 
     android:manageSpaceActivity="xxxxxxxxxx" 
     android:theme="@style/AppTheme" > 
+1

非常感謝它拯救了我的一天。 – amardeep

+1

這也幫助了我,我想知道爲什麼這有助於? – bajicdusko

+0

發生這種情況是因爲多重分化。當你的代碼太大以至於不能用單個dex文件編譯時,我們使用多重分解。但在此之後,它不會在所有手機上運行。 – AqibBangash

21

+)開發應用程序與在65K方法將導致此錯誤。

+)當你的應用程序,它引用達到一定規模(DEX文件的庫應用程序的可以有方法總數高達65536包括Android框架方法,庫方法,並在自己的代碼的方法),您會遇到構建錯誤,表明您的應用已達到Android應用構建體系結構的限制。

+)要解決這個問題,包括Multidex配置的build.gradle像圖片中的一個突出的,隨着這與你的應用程序類重寫attachBaseContext(上下文基地)方法下面的內容。

public class YourParentApplication extends Application { 

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

在你的AndroidManifest.xml補充一點:

<application 
    android:name=".YourParentApplication" 
    android:allowBackup="true" 
    android:icon="@drawable/radiius_logo" 
    android:label="@string/app_name" 
    android:largeHeap="true" 
    android:theme="@style/MyMaterialTheme"> 

有關的詳細信息,請參閱Multidex這些網站 http://developer.android.com/tools/building/multidex.html

How to enable multidexing with the new Android Multidex support library

enter image description here

+0

OP表示他得到一個運行時錯誤,而不是一個構建錯誤。您提出的解決方案僅適用於構建錯誤。 –

+1

@IgorGanapolsky實際上它也修復了運行時錯誤。爲我做了。 – Gyome

1

這是由於multidexing,您的應用程序使用超過64K的方法與

defaultConfig {

.....

multiDexEnabled真正更新

的build.gradle(應用層)

}

依賴性{

.....

compile'c​​om.android.support:multidex:1.0。1'

}

@覆蓋

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

在你的應用程序類

相關問題