为什么使用 multiDexEnabled (true) 允许应用程序构建但不断崩溃?
Why does use of multiDexEnabled (true) allow the app to build but constantly crash?
我正在开发的一个应用程序(基本代码不是我写的,包含许多无法删除的大型库)。在最近的 运行 中,它开始响应消息:
只有当应用程序尝试使用 运行 箭头进行构建时才会发生这种情况,它在调用 "rebuild" 或 "clean" 时成功构建。
在线包含的解决方案是使用 multiDexEnabled true (multiDex documentation here.)
使用它,我能够使用 "run" 箭头和 "rebuild" 获得建筑物。但是,在 phone 上构建并 运行 的应用程序崩溃并显示以下错误消息:
12-11 16:17:16.963 28868-28868/? D/dalvikvm: Late-enabling CheckJNI
12-11 16:17:17.023 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10471 (common_google_play_services_updating_text) in Lcom/google/android/gms/R$string;
12-11 16:17:17.023 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0021
12-11 16:17:17.023 28868-28868/com.myname.myappcoop I/dalvikvm: DexOpt: unable to optimize static field ref 0x28e8 at 0x2e in Lcom/google/android/gms/common/GoogleApiAvailability;.zza
12-11 16:17:17.033 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10465 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
12-11 16:17:17.033 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0012
12-11 16:17:17.033 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10462 (common_google_play_services_notification_ticker) in Lcom/google/android/gms/R$string;
12-11 16:17:17.033 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0013
12-11 16:17:17.033 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10437 (common_ic_googleplayservices) in Lcom/google/android/gms/R$drawable;
12-11 16:17:17.033 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0039
12-11 16:17:17.033 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10462 (common_google_play_services_notification_ticker) in Lcom/google/android/gms/R$string;
12-11 16:17:17.033 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0099
12-11 16:17:17.043 28868-28868/com.myname.myappcoop I/dalvikvm: Could not find method android.content.pm.PackageManager.getPackageInstaller, referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zzj
12-11 16:17:17.043 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve virtual method 616: Landroid/content/pm/PackageManager;.getPackageInstaller ()Landroid/content/pm/PackageInstaller;
12-11 16:17:17.043 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x6e at 0x000b
12-11 16:17:17.043 28868-28868/com.myname.myappcoop I/dalvikvm: DexOpt: unable to optimize static field ref 0x28c4 at 0x6c in Lcom/google/android/gms/common/GooglePlayServicesUtil;.zza
12-11 16:17:17.043 28868-28868/com.myname.myappcoop I/dalvikvm: DexOpt: unable to optimize static field ref 0x28e9 at 0x6e in Lcom/google/android/gms/common/GooglePlayServicesUtil;.zza
12-11 16:17:17.083 28868-28907/com.myname.myappcoop I/GMPM: App measurement is starting up
12-11 16:17:17.083 28868-28907/com.myname.myappcoop E/GMPM: getGoogleAppId failed with status: 10
12-11 16:17:17.083 28868-28907/com.myname.myappcoop E/GMPM: Uploading is not possible. App measurement disabled
12-11 16:17:17.113 28868-28868/com.myname.myappcoop D/dalvikvm: GC_FOR_ALLOC freed 358K, 3% free 16887K/17276K, paused 11ms, total 12ms
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8714 (static_string) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x000b
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8710 (static_string2) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x000e
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8711 (static_string3) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0011
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8716 (static_string4) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0014
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8717 (static_string5) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0017
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8721 (static_string6) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x001a
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8720 (static_string7) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x001d
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8719 (static_string8) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0020
12-11 16:17:17.143 28868-28868/com.myname.myappcoop D/MAIN: Context 1 : com.myname.myapp.Application@4268dfe8
12-11 16:17:17.163 28868-28868/com.myname.myappcoop E/dalvikvm: Could not find class 'com.myname.myapp.view.FalseActionBar', referenced from method com.myname.myapp.view.FalseActionBar.initializeView
12-11 16:17:17.163 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve new-instance 3015 (Lcom/myname/myapp/view/FalseActionBar;) in Lcom/myname/myapp/view/FalseActionBar;
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x22 at 0x002a
12-11 16:17:17.163 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10366 ($SwitchMap$com$myname$myapp$view$FalseActionBar$TitleMode) in Lcom/myname/myapp/view/FalseActionBar;
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x62 at 0x0005
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/dalvikvm: DexOpt: unable to opt direct call 0x5db9 at 0x2c in Lcom/myname/myapp/view/FalseActionBar;.initializeView
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/dalvikvm: DexOpt: unable to opt direct call 0x5dba at 0x46 in Lcom/myname/myapp/view/FalseActionBar;.initializeView
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/AndroidRuntime: Shutting down VM
12-11 16:17:17.163 28868-28868/com.myname.myappcoop W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x4162fba8)
12-11 16:17:17.163 28868-28868/com.myname.myappcoop E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myname.myappcoop, PID: 28868
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myname.myappcoop/com.myname.myapp.MainActivity}: android.view.InflateException: Binary XML file line #24: Error inflating class com.myname.myapp.view.FalseActionBar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access0(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #24: Error inflating class com.myname.myapp.view.FalseActionBar
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.myname.myapp.MainActivity.onCreate(MainActivity.java:96)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access0(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.myname.myapp.MainActivity.onCreate(MainActivity.java:96)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access0(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: com.myname.myapp.view.FalseActionBar
at com.myname.myapp.view.FalseActionBar.initializeView(FalseActionBar.java:61)
at com.myname.myapp.view.FalseActionBar.<init>(FalseActionBar.java:46)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.myname.myapp.MainActivity.onCreate(MainActivity.java:96)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access0(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
12-11 16:17:46.173 28868-28868/? I/Process: Sending signal. PID: 28868 SIG: 9
代码崩溃的地方(原因:java.lang.NoClassDefFoundError:com.myname.myapp.view.FalseActionBar$1)是在声明侦听器时。它最初是在另一个 class 扩展点击侦听器中,所以我将它引入代码中,但这没有帮助。
title.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
switch (mode) {
case NONE:
//Nothing!
break;
case BACK:
if(delegate != null){
delegate.goBack(backLocation);
}
break;
case HOME:
if(delegate != null){
delegate.goHome();
}
break;
}
}
我最初认为问题出在充气器上,但现在我相当确定一定是使用 multiDex 造成的。
multiDex 正在做什么导致 inflation 崩溃?
只需添加
android:name="android.support.multidex.MultiDexApplication"
in AndroidManifest.xml
在 application
XM 标签中作为 属性.
这将解决您所有的问题。
NoClassDefFoundError
是因为您的项目在 运行 时没有获取文件。所以试试这个建议,让我知道它是否解决了。
希望您使用的是 android 工作室。
尝试将此行也添加到 gradle 文件并重新测试相同的
dexOptions {
javaMaxHeapSize "4g"
}
你需要做以下事情
在build.gradle中添加
dexOptions {
javaMaxHeapSize "4g"
}
启用 multidex
defaultConfig {
multiDexEnabled true
}
创建一个使用 MultiDexApplication 扩展的文件,如下所示
public class App extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
并将此 'App' class 作为应用程序 class 清单如下 -
<application
android:name=".activity.App"
我正在开发的一个应用程序(基本代码不是我写的,包含许多无法删除的大型库)。在最近的 运行 中,它开始响应消息:
只有当应用程序尝试使用 运行 箭头进行构建时才会发生这种情况,它在调用 "rebuild" 或 "clean" 时成功构建。
在线包含的解决方案是使用 multiDexEnabled true (multiDex documentation here.)
使用它,我能够使用 "run" 箭头和 "rebuild" 获得建筑物。但是,在 phone 上构建并 运行 的应用程序崩溃并显示以下错误消息:
12-11 16:17:16.963 28868-28868/? D/dalvikvm: Late-enabling CheckJNI
12-11 16:17:17.023 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10471 (common_google_play_services_updating_text) in Lcom/google/android/gms/R$string;
12-11 16:17:17.023 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0021
12-11 16:17:17.023 28868-28868/com.myname.myappcoop I/dalvikvm: DexOpt: unable to optimize static field ref 0x28e8 at 0x2e in Lcom/google/android/gms/common/GoogleApiAvailability;.zza
12-11 16:17:17.033 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10465 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
12-11 16:17:17.033 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0012
12-11 16:17:17.033 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10462 (common_google_play_services_notification_ticker) in Lcom/google/android/gms/R$string;
12-11 16:17:17.033 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0013
12-11 16:17:17.033 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10437 (common_ic_googleplayservices) in Lcom/google/android/gms/R$drawable;
12-11 16:17:17.033 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0039
12-11 16:17:17.033 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10462 (common_google_play_services_notification_ticker) in Lcom/google/android/gms/R$string;
12-11 16:17:17.033 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0099
12-11 16:17:17.043 28868-28868/com.myname.myappcoop I/dalvikvm: Could not find method android.content.pm.PackageManager.getPackageInstaller, referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zzj
12-11 16:17:17.043 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve virtual method 616: Landroid/content/pm/PackageManager;.getPackageInstaller ()Landroid/content/pm/PackageInstaller;
12-11 16:17:17.043 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x6e at 0x000b
12-11 16:17:17.043 28868-28868/com.myname.myappcoop I/dalvikvm: DexOpt: unable to optimize static field ref 0x28c4 at 0x6c in Lcom/google/android/gms/common/GooglePlayServicesUtil;.zza
12-11 16:17:17.043 28868-28868/com.myname.myappcoop I/dalvikvm: DexOpt: unable to optimize static field ref 0x28e9 at 0x6e in Lcom/google/android/gms/common/GooglePlayServicesUtil;.zza
12-11 16:17:17.083 28868-28907/com.myname.myappcoop I/GMPM: App measurement is starting up
12-11 16:17:17.083 28868-28907/com.myname.myappcoop E/GMPM: getGoogleAppId failed with status: 10
12-11 16:17:17.083 28868-28907/com.myname.myappcoop E/GMPM: Uploading is not possible. App measurement disabled
12-11 16:17:17.113 28868-28868/com.myname.myappcoop D/dalvikvm: GC_FOR_ALLOC freed 358K, 3% free 16887K/17276K, paused 11ms, total 12ms
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8714 (static_string) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x000b
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8710 (static_string2) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x000e
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8711 (static_string3) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0011
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8716 (static_string4) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0014
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8717 (static_string5) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0017
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8721 (static_string6) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x001a
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8720 (static_string7) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x001d
12-11 16:17:17.133 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 8719 (static_string8) in Lcom/myname/display/R$string;
12-11 16:17:17.133 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0020
12-11 16:17:17.143 28868-28868/com.myname.myappcoop D/MAIN: Context 1 : com.myname.myapp.Application@4268dfe8
12-11 16:17:17.163 28868-28868/com.myname.myappcoop E/dalvikvm: Could not find class 'com.myname.myapp.view.FalseActionBar', referenced from method com.myname.myapp.view.FalseActionBar.initializeView
12-11 16:17:17.163 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve new-instance 3015 (Lcom/myname/myapp/view/FalseActionBar;) in Lcom/myname/myapp/view/FalseActionBar;
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x22 at 0x002a
12-11 16:17:17.163 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10366 ($SwitchMap$com$myname$myapp$view$FalseActionBar$TitleMode) in Lcom/myname/myapp/view/FalseActionBar;
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x62 at 0x0005
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/dalvikvm: DexOpt: unable to opt direct call 0x5db9 at 0x2c in Lcom/myname/myapp/view/FalseActionBar;.initializeView
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/dalvikvm: DexOpt: unable to opt direct call 0x5dba at 0x46 in Lcom/myname/myapp/view/FalseActionBar;.initializeView
12-11 16:17:17.163 28868-28868/com.myname.myappcoop D/AndroidRuntime: Shutting down VM
12-11 16:17:17.163 28868-28868/com.myname.myappcoop W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x4162fba8)
12-11 16:17:17.163 28868-28868/com.myname.myappcoop E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myname.myappcoop, PID: 28868
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myname.myappcoop/com.myname.myapp.MainActivity}: android.view.InflateException: Binary XML file line #24: Error inflating class com.myname.myapp.view.FalseActionBar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access0(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #24: Error inflating class com.myname.myapp.view.FalseActionBar
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.myname.myapp.MainActivity.onCreate(MainActivity.java:96)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access0(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.myname.myapp.MainActivity.onCreate(MainActivity.java:96)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access0(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: com.myname.myapp.view.FalseActionBar
at com.myname.myapp.view.FalseActionBar.initializeView(FalseActionBar.java:61)
at com.myname.myapp.view.FalseActionBar.<init>(FalseActionBar.java:46)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.myname.myapp.MainActivity.onCreate(MainActivity.java:96)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access0(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
12-11 16:17:46.173 28868-28868/? I/Process: Sending signal. PID: 28868 SIG: 9
代码崩溃的地方(原因:java.lang.NoClassDefFoundError:com.myname.myapp.view.FalseActionBar$1)是在声明侦听器时。它最初是在另一个 class 扩展点击侦听器中,所以我将它引入代码中,但这没有帮助。
title.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
switch (mode) {
case NONE:
//Nothing!
break;
case BACK:
if(delegate != null){
delegate.goBack(backLocation);
}
break;
case HOME:
if(delegate != null){
delegate.goHome();
}
break;
}
}
我最初认为问题出在充气器上,但现在我相当确定一定是使用 multiDex 造成的。
multiDex 正在做什么导致 inflation 崩溃?
只需添加
android:name="android.support.multidex.MultiDexApplication"
in AndroidManifest.xml
在 application
XM 标签中作为 属性.
这将解决您所有的问题。
NoClassDefFoundError
是因为您的项目在 运行 时没有获取文件。所以试试这个建议,让我知道它是否解决了。
希望您使用的是 android 工作室。 尝试将此行也添加到 gradle 文件并重新测试相同的
dexOptions {
javaMaxHeapSize "4g"
}
你需要做以下事情
在build.gradle中添加
dexOptions { javaMaxHeapSize "4g" }
启用 multidex
defaultConfig { multiDexEnabled true }
创建一个使用 MultiDexApplication 扩展的文件,如下所示
public class App extends MultiDexApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
并将此 'App' class 作为应用程序 class 清单如下 -
<application android:name=".activity.App"