Realm.io / Dagger / Databinding en el mismo proyecto
Tengo problemas con la compilación de mi proyecto después de añadir Realm.io como una dependencia a través de gradle. No se pueden encontrar los archivos generados creados por dagger y databinding. Si elimino realm.io, la aplicación se compila correctamente.
Aquí está mi build.gradle
- Builder (android.content.Context) 'no es público en' io.realm.RealmConfiguration.Builder '. No se puede acceder desde el paquete exterior
- Kotlin uso perezoso
- Prueba de Realm bajo Android
- ¿Cuál es la forma correcta de tratar con multithreading y Realm?
- Limitar el número de llamadas al usar Parse
apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' apply plugin: 'com.android.databinding' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { multiDexEnabled true applicationId "com.foo" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.facebook.stetho:stetho:1.2.0' compile 'com.facebook.stetho:stetho-okhttp:1.2.0' compile 'io.reactivex:rxandroid:0.24.0' compile 'io.reactivex:rxjava:1.0.14' compile 'com.squareup.okhttp:okhttp:2.4.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0' compile 'com.squareup.retrofit:retrofit:1.9.0' compile 'com.squareup.okio:okio:1.4.0' compile 'com.google.code.gson:gson:2.3' compile 'com.jakewharton:butterknife:6.1.0' compile 'com.android.support:recyclerview-v7:23.1.0' compile 'com.squareup.picasso:picasso:2.3.2' compile 'com.android.support:cardview-v7:23.1.0' compile 'com.android.support:multidex:1.0.1' compile 'com.android.support:design:23.1.0' compile 'com.jakewharton.timber:timber:4.1.0' compile 'io.realm:realm-android:0.85.1' compile 'com.google.dagger:dagger:2.0.1' provided 'javax.annotation:jsr250-api:1.0' apt "com.google.dagger:dagger-compiler:2.0.1" apt 'com.android.databinding:compiler:1.0-rc4' }
Veo que Realm también está generando archivos y tal vez los compiladores no están jugando bien juntos. ¿Alguna idea sobre cómo conseguir esto trabajando?
Gracias
- Android Realm número de versión de migración basado en qué?
- Acceso al dominio desde un subproceso incorrecto Android
- Cómo usar Realm's en el método con Kotlin
- Escritura y lectura entre subprocesos con Android Realm
- Acceso al dominio desde un subproceso incorrecto Excepción mientras se envió una copia usando copyFromRealm
- RealmList de tipo de cadena en Android
- ¿Cuál es la manera más fácil de mantener una base de datos sincronizada entre varios dispositivos iOS y Android?
- Getter no está asociado a ningún campo - Realm
Veo que también recibió el error:
No se encontró setter para field goalInfo
Asegúrese de que los nombres de campo son los mismos que los getters y setters. No agregue "m" a los nombres de campo. Ejemplo:
@RealmClass public Goal extends RealmObject { //private String mGoalInfo; private String goalInfo; public String getGoalInfo() { return goalInfo; } public void setGoalInfo(String goalInfo) { this.goalInfo = goalInfo; } }
La vinculación de datos funciona con RealmObjects , pero hay que implementar Observable.
public class Post extends RealmObject implements Observable { @PrimaryKey private long id; private String text; @Ignore private transient PropertyChangeRegistry mCallbacks; @Bindable public long getId() { return id; } public void setId(long id) { this.id = id; if(!isValid()) { // !isManaged() in Realm 2.0 notifyPropertyChanged(BR.id); } } @Bindable public String getText() { return text; } public void setText(String text) { this.text = text; if(!isValid()) { // !isManaged() in Realm 2.0 notifyPropertyChanged(BR.text); } } @Override public synchronized void addOnPropertyChangedCallback(OnPropertyChangedCallback callback) { if (mCallbacks == null) { mCallbacks = new PropertyChangeRegistry(); } mCallbacks.add(callback); } @Override public synchronized void removeOnPropertyChangedCallback(OnPropertyChangedCallback callback) { if (mCallbacks != null) { mCallbacks.remove(callback); } } /** * Notifies listeners that all properties of this instance have changed. */ public synchronized void notifyChange() { if (mCallbacks != null) { mCallbacks.notifyCallbacks(this, 0, null); } } /** * Notifies listeners that a specific property has changed. The getter for the property * that changes should be marked with {@link Bindable} to generate a field in * <code>BR</code> to be used as <code>fieldId</code>. * * @param fieldId The generated BR id for the Bindable field. */ public void notifyPropertyChanged(int fieldId) { if (mCallbacks != null) { mCallbacks.notifyCallbacks(this, fieldId, null); } } }
Y Dagger + Databinding puede romper entre sí, para lo que necesita agregar
apt 'com.google.guava:guava:19.0' // dagger + databind workaround
Realm, Dagger2 y Databinding están trabajando en mi proyecto.
La diferencia es:
Estoy usando android gradle plugin 1.5.0 y habilitar databinding siguiendo la configuración.
android { ... dataBinding { enabled = true } ... }
Y no tengo
apt 'com.android.databinding:compiler:1.0-rc4'
En dependencias.
Todo el proyecto de trabajo está aquí: https://github.com/zaki50/realm_template
Ahora es posible implementar la interfaz RealmModel y agregar una anotación @RealmClass a la clase en lugar de extender RealmObject. Esto permite extender BaseObservable sin embargo, todavía no funciona.
Obtiene un error de enlace de datos: paquete mypackage.databinding no existe
Vea este número en github: https://github.com/realm/realm-java/issues/2716
- Cómo zipalign el archivo apk en Windows
- Problema de inicio de sesión de Android Facebook SDK con parse sdk