android android-studio android-gradle activeandroid

¿Por qué Active Android no funciona con gradle 2.0?



android-studio android-gradle (6)

Estoy usando Active Android en mi aplicación. Estaba funcionando bien hasta que actualicé mi Android Studio a 2.0 desde 1.3. Con esta actualización, mi gradle también se actualizó a 2.0, lo que está causando algunos problemas con el Android activo.

Estoy recibiendo este error al construir con gradle 2.0.

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ''java.lang.String com.activeandroid.TableInfo.getTableName()'' on a null object reference at com.activeandroid.Cache.getTableName(Cache.java:156) at com.activeandroid.query.From.addFrom(From.java:169) at com.activeandroid.query.From.toSql(From.java:250) at com.activeandroid.query.From.execute(From.java:298)

Intenté construir mi antiguo estudio con Gradle 1.3, todavía funciona bien. ¿Alguna ayuda por favor?

archivo build.gradle cuando la aplicación está dando el error anterior

buildscript { repositories { jcenter() } dependencies { classpath ''com.android.tools.build:gradle:2.0.0'' classpath ''com.google.gms:google-services:2.0.0-beta2'' } } allprojects { repositories { jcenter() } }

build.gradle cuando la aplicación funciona bien

buildscript { repositories { jcenter() } dependencies { classpath ''com.android.tools.build:gradle:1.3.0'' classpath ''com.google.gms:google-services:2.0.0-beta2'' } } allprojects { repositories { jcenter() } }

propiedades de envoltura de gradle

distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https/://services.gradle.org/distributions/gradle-2.10-all.zip


Hay un problema con ActiveAndroid que no puede recuperar las clases del Modelo buscando en DexFile cuando se activa la Ejecución instantánea. here hay información sobre DexFile y la ejecución instantánea.

Hay tres soluciones posibles:

  1. Deshabilitar Intant ejecutar Android Studio -> Preferencias -> Intant ejecutar
  2. Agrega el código ya sugerido en AndroidManifest:

<meta-data android:name="AA_MODELS" android:value="com.myapp.model.Item, com.myapp.model.Category" />

  1. Agregue el siguiente código en la intialización de ActiveAndroid:

Configuration.Builder config = new Configuration.Builder(this); config.addModelClasses(Model1.class, Model2.class); ActiveAndroid.initialize(config.create());

Espero eso ayude


Me encontré con el mismo problema, pero no sé por qué. He especificado explícitamente las clases de mi Modelo en mi AndroidManifest:

<meta-data android:name="AA_MODELS" android:value="com.myapp.model.Item, com.myapp.model.Category" />

Esta resuelto


Para agregar a la respuesta proporcionada por VictorG, podría evitar deshabilitar la ejecución instantánea. Dado que el problema básico es que Cache no retiene los valores de ModelInfo debido a los cambios de DexFile causados ​​por la ejecución instantánea, usted podría verificar si el ModelInfo contiene datos de la tabla y reinicializar ActiveAndroid si es necesario.

if (Cache.isInitialized() && Cache.getTableInfos().isEmpty()) { ActiveAndroid.dispose(); } ActiveAndroid.initialize(HOWEVER_YOU_BUILD_YOUR_CONFIG);


También me encontré con este problema, descubrí que solo es un problema en los dispositivos Android 23+, y se puede evitar si desactiva la Ejecución instantánea (Archivo-> Configuración-> Compilación, Ejecución, Implementación-> Ejecución instantánea).

Si desea mantener la ejecución instantánea, puede intentar Desmarcar "Reiniciar actividad en cambios de código"

En Mac:

Preferencias> Compilación, Ejecución, Despliegue> Ejecución instantánea> Desmarque "Reiniciar actividad en cambios de código"


Tengo el mismo problema en Gradle 2.0, pero no sé por qué aparece este error. Finalmente, lo resolví degradando la versión de Gradle a Gradle 1.5.0.


Tuve el mismo problema con ORM android activo. No funciona solo en el emulador. Apagar la ejecución instantánea. Y una reinstalación completa de la aplicación, borró el error.