¿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:
- Deshabilitar Intant ejecutar Android Studio -> Preferencias -> Intant ejecutar
- Agrega el código ya sugerido en AndroidManifest:
<meta-data
android:name="AA_MODELS"
android:value="com.myapp.model.Item, com.myapp.model.Category" />
- 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.