Android Flavors, ContentProviders, SyncAdapters y AccountManager

He definido algunos sabores y buildTypes para mi aplicación para Android

productFlavors { X { applicationId = "com.x.xxxx" } Y { applicationId = "com.y.yyyy" } } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard_rules.txt' } debug { applicationIdSuffix ".debug" } } 

Que hace el trabajo de crear diferentes sabores / buildType combinaciones.

Ahora, para asegurarme de que ContentProviders funcione y no obtenga un error de Error Failure [INSTALL_FAILED_CONFLICTING_PROVIDER] , he cambiado las referencias android:authorities="${applicationId}" y AUTHORITY en código a BuildConfig.APPLICATION_ID .

Eso hace que el ContentProvider funcione bien, es decir, no arroja un error cuando instalo dos tipos diferentes en el mismo teléfono. Me permite instalarlos.

El siguiente paso es donde está el error. Utilizo SyncAdapter y AccountManager para controlar algunas cosas. He modificado ACCOUNT_TYPE para usar APPLICATION_ID . Debido al problema con gradle no poder usar ${applicationId} en archivos de recursos xml sin manifiesto, he creado una estructura de directorio diferente para cada sabor y syncadapter.xml copiado el syncadapter.xml y authenticator.xml con las cadenas correspondientes de tipo de authority y account type .

También he probado la técnica descrita en este blog – http://blog.jensdriller.com/android-gradle-workaround-for-missing-placeholder-support-in-resource-files/

Y la parte superior votó las respuestas sobre el uso de tipos de construcción en Gradle para ejecutar la misma aplicación que utiliza ContentProvider en un dispositivo, pero las cosas no parecen funcionar.

¿Alguien ha podido conseguir esto para trabajar recientemente?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.