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,
- ¿Cómo obtener la API de Kakaotalk para la aplicación de Android?
- Ningún recurso encontrado que coincida con el nombre dado en layout_hint
- IPackageStatsObserver no se puede resolver con un tipo (Android)
- Tratando de usar la biblioteca google-play-services_lib pero obteniendo errores como 'GooglePlayServicesClient no resuelto a un tipo'
- ¿Por qué no puedo instalar Google Cloud Messaging para Android Library?
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>
- Error al analizar la salida de 'versión de adb'
- No se pudo encontrar la clase android.support.v4.app.NotificationCompat $ Builder
- Integración de Android Sdk en Android Studio
- Android 2.1 vs 2.2
- AndroidManifest.xml implícita vs permisos explícitos (usos-característica vs usos-permisos)
- utilizando onBackPressed () con compatibilidad con versiones anteriores
- ¿Por qué no funciona el código de los tutoriales de Android SDK fuera de la caja?
- ¿Cómo actualizar Android Studio automáticamente?
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.
- Cómo anular la animación de la actividad de entrada si se indica por el lanzador
- Android Download Manager