Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


NoClassDefFoundError: Resolución fallida de: Landroid / support / v7 / appcompat / R $ styleable

Newbie intentando terminar el tutorial de Mi primera aplicación proporcionado por Google. En el camino a esta excepción fatal importé una gran cantidad de paquetes aleatorios para deshacerse de errores "no se pueden resolver" para una serie de cosas, ActionBarActivity, EditText, Fragment, LayoutInflater, etc, pero no estoy seguro de que esto importe. De todos modos, mi aplicación se bloquea y produce una excepción fatal cuando hago clic en el botón "Enviar" en la actividad principal. Aquí está mi código y archivo logcat.

MyActivity.java (también conocido como MainActivity.java del tutorial)

package magiccoupons.tutapp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; public class MyActivity extends Activity { public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.my, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** Called when the user clicks the Send button */ public void sendMessage(View view) { // Do something in response to button Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } } 

DisplayMessageActivity.java:

 package magiccoupons.tutapp; import android.widget.*; import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; import android.view.*; import android.support.v7.app.ActionBarActivity; import android.app.Fragment; public class DisplayMessageActivity extends ActionBarActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the message from the intent Intent intent = getIntent(); String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE); // Create the text view TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); // Set the text view as the activity layout setContentView(textView); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. * public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.activity_display_message, container, false); return rootView; } } */ } 

Build.gradle:

  apply plugin: 'com.android.application' android { compileSdkVersion 'android-L' buildToolsVersion '20' defaultConfig { applicationId "magiccoupons.tutapp" minSdkVersion 20 targetSdkVersion 20 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-v4:20.0.0' //compile 'com.android.support:appcompat-v7:21.0.0-rc1' } 

Activity_my.xml:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="magiccoupons.tutapp.MainActivity"> <EditText android:id="@+id/edit_message" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/edit_message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" /> </LinearLayout> 

Activity_display_message.xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="magiccoupons.tutapp.DisplayMessageActivity"> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> 

Y logcat:

 08-21 11:24:36.088 3645-3645/magiccoupons.tutapp I/Process﹕ Sending signal. PID: 3645 SIG: 9 08-21 11:37:33.584 4149-4149/magiccoupons.tutapp W/Resources﹕ Preloaded drawable resource #0x1080093 (android:drawable/sym_def_app_icon) that varies with configuration!! 08-21 11:37:33.676 4149-4149/magiccoupons.tutapp I/am_on_resume_called﹕ [0,magiccoupons.tutapp.MyActivity] 08-21 11:37:33.905 4149-4149/magiccoupons.tutapp D/gralloc_goldfish﹕ Emulator without GPU emulation detected. 08-21 11:37:38.139 4149-4149/magiccoupons.tutapp I/am_on_paused_called﹕ [0,magiccoupons.tutapp.MyActivity] 08-21 11:37:38.218 4149-4149/magiccoupons.tutapp I/Choreographer﹕ Skipped 75 frames! The application may be doing too much work on its main thread. 08-21 11:37:38.356 4149-4149/magiccoupons.tutapp D/AndroidRuntime﹕ Shutting down VM 08-21 11:37:38.369 4149-4149/magiccoupons.tutapp E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: magiccoupons.tutapp, PID: 4149 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$styleable; at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:106) at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57) at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:99) at magiccoupons.tutapp.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:15) at android.app.Activity.performCreate(Activity.java:5720) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1102) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2208) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2317) at android.app.ActivityThread.access$800(ActivityThread.java:143) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5070) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.appcompat.R$styleable" on path: DexPathList[[zip file "/data/app/magiccoupons.tutapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/magiccoupons.tutapp-1, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469)            at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:106)            at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57)            at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:99)            at magiccoupons.tutapp.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:15)            at android.app.Activity.performCreate(Activity.java:5720)            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1102)            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2208)            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2317)            at android.app.ActivityThread.access$800(ActivityThread.java:143)            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)            at android.os.Handler.dispatchMessage(Handler.java:102)            at android.os.Looper.loop(Looper.java:135)            at android.app.ActivityThread.main(ActivityThread.java:5070)            at java.lang.reflect.Method.invoke(Native Method)            at java.lang.reflect.Method.invoke(Method.java:372)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631) Suppressed: java.lang.ClassNotFoundException: android.support.v7.appcompat.R$styleable at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 18 more Caused by: java.lang.NoClassDefFoundError: Class "Landroid/support/v7/appcompat/R$styleable;" not found ... 22 more 

Lo siento si me perdí algo y esta pregunta es completamente innecesaria y / o un dupe. Gracias.

  • Android 5.0 - Animar el AppCompat v7 21 icono de inicio de la hamburguesa a la flecha hacia atrás mediante programación
  • Android Studio / Gradle no encuentra recursos de AppCompat para pruebas
  • Barra de herramientas y TabLayout no son visibles en dispositivos Android 4.4
  • Radio de la esquina de CardView
  • Cómo agregar menú de desbordamiento a la barra de herramientas?
  • Widget.AppCompat.Button colorButtonNormal muestra gris
  • La importación com.google.android.gms.location.LocationClient no se puede resolver después de formatear el equipo
  • Cómo crear AppCompatDialog de AlertDialog.Builder o equivalente?
  • One Solution collect form web for “NoClassDefFoundError: Resolución fallida de: Landroid / support / v7 / appcompat / R $ styleable”

    Está recibiendo ese error debido a las siguientes razones:

    En su archivo de compilación de Gradle, su aplicación está apuntando y compilándose con la versión beta de Android que aún está en desarrollo con:

     compileSdkVersion 'android-L' buildToolsVersion '20' 

    tanto como

     minSdkVersion 20 targetSdkVersion 20 

    La primera cosa a tener en cuenta es que esta aplicación no se ejecutará correctamente (en este momento) en cualquier dispositivo sin android-L flash a ella.

    El verdadero eje de su problema está en DisplayMessageActivity, se extiende a través de la herencia [ActionBarActivity] 🙁 https://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html ) esta es una de las bibliotecas de soporte Clases para AppCompat.

    Para solucionar esto, cambie su min SDK a 10 (o 14 que es sandwich de helado), su max SDK a 19 (Kit Kat) y descomente la biblioteca appcompat-v7 en sus dependencias.

    Como advertencia, al declarar widgets en sus respectivas actividades / fragmentos, suele ser una buena práctica tener su alcance fuera de cualquier método:

     EditText editText; Button sendMessageButton; // Then in your onCreate() method editText = (EditText) findViewById(R.id.editText); sendMessageButton = (Button) findViewById(R.id.sendMessageButton); 

    Esto ayuda a reducir la reasignación de memoria y hacer que su código sea un poco más legible. A veces usted puede tener que doblar las reglas un poco, pero esta es la práctica común.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.