Aplicación que se estrella en Android API menos de 5.0 (piruleta)

El problema que estoy enfrentando es que mi aplicación android funciona bien en los dispositivos que tienen API 5.0 y superiores, pero se bloquea en los dispositivos que tienen Kitkat (4.4) y sus correspondientes versiones inferiores. Sé que su de alguna manera relacionados con las herramientas de construcción en mi gradle file, pero Todavía no capaz de resolver el problema.Podría alguien por favor me ayude con esto.

Este es mi archivo gradle,

buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.+' } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' apply plugin: 'android' repositories { maven { url 'https://maven.fabric.io/public' } maven { url 'http://clinker.47deg.com/nexus/content/groups/public' } } android { compileSdkVersion 22 buildToolsVersion '22.0.1' defaultConfig { applicationId "com.abc.example" minSdkVersion 10 targetSdkVersion 22 multiDexEnabled true versionCode 12 versionName "1.0" } buildTypes { release { multiDexEnabled true minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } android { packagingOptions { exclude 'META-INF/LICENSE' } } android { packagingOptions { exclude 'META-INF/NOTICE' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:22.2.0' compile('com.fortysevendeg.swipelistview:swipelistview:1.0-SNAPSHOT@aar') { transitive = true exclude module: 'httpclient' exclude group: 'httpclient' } compile 'com.squareup.retrofit:retrofit:1.9.0' compile 'com.squareup.okhttp:mockwebserver:2.3.0' compile 'de.hdodenhof:circleimageview:1.2.2' compile 'com.android.support:multidex:1.0.1' compile 'com.google.android.gms:play-services-maps:7.5.0' compile files('libs/bitlyj-2.0.0.jar') } 

También obtener este error cuando se construye el proyecto,

 Caused by: java.lang.NoClassDefFoundError: com.package.R$styleable at com.package.widgets.StyleableTextView.<init>(StyleableTextView.java:23) 

Esta es la clase StyleableTextView,

 public class StyleableTextView extends TextView { public StyleableTextView(Context context) { super(context); } public StyleableTextView(Context context, AttributeSet attrs) { super(context.getApplicationContext(), attrs); UiUtil.setCustomFont(StyleableTextView.this, context, attrs, R.styleable.com_eywa_wonk_widgets_StyleableTextView, R.styleable.com_eywa_wonk_widgets_StyleableTextView_font); } public StyleableTextView(Context context, AttributeSet attrs, int defStyle) { super(context.getApplicationContext(), attrs, defStyle); UiUtil.setCustomFont(StyleableTextView.this, context, attrs, R.styleable.com_eywa_wonk_widgets_StyleableTextView, R.styleable.com_eywa_wonk_widgets_StyleableTextView_font); } } 

Este es el estilo en attrs,

 <resources> <attr name="font" format="string" /> <declare-styleable name="com.package.widgets.StyleableTextView"> <attr name="font" /> </declare-styleable> </resources> 

Cuando está utilizando multidex , a continuación, tratar de extender su clase de aplicación con MultiDexAppication lugar de Application y sustituir por debajo del método esto requerido para Android por debajo de 5.0 (porque 5.0 y superior de soporte para el multidex)

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

Y en dependencias añadir esto

Compile 'com.android.support:multidex:1.0.1'

Acabo de tener este problema y lo solucioné agregando la línea siguiente a las aplicaciones AndroidManifest.xml como atributo en la etiqueta de la aplicación:

 android:name="android.support.multidex.MultiDexApplication" 

Tengo dos aplicaciones que comparten los mismos recursos y bibliotecas. La única diferencia está en la interfaz expuesta. He añadido multidex a ambos, pero se olvidó de poner el atributo anterior en el manifiesto de uno. El NoClassDefFoundError no ayudó mucho en absoluto.

También puede consultar lo siguiente: http://developer.android.com/tools/building/multidex.html

Uno de los problemas que puede enfrentar es éste, como se explica en la documentación :

 multiDexEnabled true 

Las aplicaciones que utilizan multidex pueden no iniciarse en dispositivos que ejecutan versiones de la plataforma anteriores a Android 4.0 (API nivel 14) debido a un error Dalvik linearAlloc (Edición 22586). Si está orientado a niveles de API anteriores a 14, asegúrese de realizar pruebas con estas versiones de la plataforma, ya que la aplicación puede tener problemas al inicio o cuando se cargan grupos particulares de clases. La reducción del código puede reducir o posiblemente eliminar estos posibles problemas.

Esto podría no ser relevante para el escenario en particular, pero como el encabezado de la pregunta se relaciona con el problema que encontré y la razón por la que me encontré con esta pregunta. Así que estoy respondiendo aquí. Me encontré con un problema similar a esto, pero en mi caso extender multidexapplication, y habilitar multidex no estaban haciendo el trabajo. Terminé usando un plugin para contar métodos en mi proyecto. Mediante el uso de que me di cuenta de que no estoy cerca del límite de 65K y el error está relacionado con otra cosa. Encontré esta página donde alguien había hablado de desactivar la ejecución instantánea de Configuración, que realmente hizo el trabajo para mí. Ahora no estoy usando la biblioteca multi-dex y las compilaciones son más rápidas también. Si vuelvo a encontrar el problema, actualizaré la respuesta en consecuencia.

  • Modifique AIRPLANE_MODE_ON en Android 4.2 (y superior)
  • ¿Cómo cambiar o cambiar entre las pestañas en la distribución gráfica sdk de Android?
  • ADK vs JDK vs SDK diferencia?
  • Crear casilla de verificación con aleación de titanio
  • Necesito la dirección de correo electrónico del usuario después de un inicio de sesión con éxito en facebook en android con SDK 4.0
  • ¿Por qué Blackberry y Android SDK necesitan versiones antiguas de Eclipse IDE?
  • vuforia AR SDK - no se puede reproducir video por url
  • El emulador de Eclipse se congela
  • Error al actualizar sdk
  • Configuración de Android Facebook SDK en Eclipse
  • Intención de Android para reproducir vídeo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.