运行 在 android 4.4 中启动时应用程序崩溃(NoClassDefFoundError)
Application is Crashing when running starts in android 4.4 ( NoClassDefFoundError )
当 运行 在 android 4.4 中启动并显示 NoClassDefFoundError 时应用程序崩溃。但在 6.0 之前的其他 android 版本中可以正常工作。我在这里使用片段activity。错误如下所示。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
LoginPatternFragment loginFragement = new LoginPatternFragment();
fragmentTransaction.add(R.id.fragement, loginFragement);
fragmentTransaction.commit();
}
}
错误:
E/memtrack: Couldn't load memtrack module (No such file or directory)
E/android.os.Debug: failed to load memtrack module: -2
E/dalvikvm: Could not find class 'com.quicknip.restaurant3.Fragment.LoginPatternFragment', referenced from method com.quicknip.restaurant3.Fragment.LoginPatternFragment.loginService
E/dalvikvm: Could not find class 'com.quicknip.restaurant3.Fragment.LoginPatternFragment', referenced from method com.quicknip.restaurant3.Fragment.LoginPatternFragment.onCreateView
E/GMPM: Task exception on worker thread: java.lang.NoClassDefFoundError: com.google.android.gms.R$string: com.google.android.gms.measurement.zza.<init>(Unknown Source)
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.quicknip.restaurant3, PID: 2733
java.lang.NoClassDefFoundError: com.quicknip.restaurant3.Fragment.LoginPatternFragment
at com.quicknip.restaurant3.Fragment.LoginPatternFragment.onCreateView(LoginPatternFragment.java:59)
像这样创建一个class
class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
在您的 AndroidManifest 中,将 name
属性添加到您的应用程序标签:
<application name=".MyApplication"
终于找到答案了
通过替换
compile 'com.google.android.gms:play-services:8.4.0'
至
compile 'com.google.android.gms:play-services-analytics:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.google.android.gms:play-services-location:8.4.0'
compile 'com.google.android.gms:play-services-plus:8.4.0'
这对我有用。
当 运行 在 android 4.4 中启动并显示 NoClassDefFoundError 时应用程序崩溃。但在 6.0 之前的其他 android 版本中可以正常工作。我在这里使用片段activity。错误如下所示。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
LoginPatternFragment loginFragement = new LoginPatternFragment();
fragmentTransaction.add(R.id.fragement, loginFragement);
fragmentTransaction.commit();
}
}
错误:
E/memtrack: Couldn't load memtrack module (No such file or directory)
E/android.os.Debug: failed to load memtrack module: -2
E/dalvikvm: Could not find class 'com.quicknip.restaurant3.Fragment.LoginPatternFragment', referenced from method com.quicknip.restaurant3.Fragment.LoginPatternFragment.loginService
E/dalvikvm: Could not find class 'com.quicknip.restaurant3.Fragment.LoginPatternFragment', referenced from method com.quicknip.restaurant3.Fragment.LoginPatternFragment.onCreateView
E/GMPM: Task exception on worker thread: java.lang.NoClassDefFoundError: com.google.android.gms.R$string: com.google.android.gms.measurement.zza.<init>(Unknown Source)
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.quicknip.restaurant3, PID: 2733
java.lang.NoClassDefFoundError: com.quicknip.restaurant3.Fragment.LoginPatternFragment
at com.quicknip.restaurant3.Fragment.LoginPatternFragment.onCreateView(LoginPatternFragment.java:59)
像这样创建一个class
class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
在您的 AndroidManifest 中,将 name
属性添加到您的应用程序标签:
<application name=".MyApplication"
终于找到答案了
通过替换
compile 'com.google.android.gms:play-services:8.4.0'
至
compile 'com.google.android.gms:play-services-analytics:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.google.android.gms:play-services-location:8.4.0'
compile 'com.google.android.gms:play-services-plus:8.4.0'
这对我有用。