Uso de $ {applicationId} en el manifiesto de la biblioteca
Estoy trabajando en un SDK que utiliza un ContentProvider interno, me gustaría usar este SDK en algunos proyectos y declararlo en el manifiesto de la biblioteca, por lo que he intentado esto:
<provider android:name=".core.MyContentProvider" android:authorities="${applicationId}" android:exported="false"/>
Lo que sucede es que el $ {applicationId} se reemplaza con el nombre del paquete de la biblioteca y no el top apk relatedId …
- Ejecute la tarea después de packageApplication cuando utilice el complemento androide gradle
- Gradle genera errores después de actualizar Android Studio
- Android - Prácticas recomendadas para variables en el script de compilación de Gradle
- Copie el constructor usando "initWith" para "productFlavors" y "sourceSets"
- archivos duplicados copiados en APK META_INF / NOTICE
¿Hay una manera de asegurarse de que el lanzamiento de applicationId se colocaría en el valor de android: authorities ?
- Especificar versionCode en android / gradle proyectos raíz del proyecto build.gradle
- Combinaciones de sabores de productos Gradle de Android
- Gradle 0.9. + / 0.9.2 error: No se puede cargar la clase 'com.android.builder.testing.api.DeviceProvider'
- NoClassDefFound error al importar el proyecto desde git
- Cómo utilizar opencv en android studio utilizando gradle build tool?
- Gradle: ¿Cómo personalizar los permisos de Manifiesto de Android?
- Ejecutar una tarea de gradle independiente personalizada en android studio
- Error de ADT que exporta con Gradle
Estaba funcionando en el mismo problema con varias variaciones diferentes y identificaciones únicas, y terminó para arriba ir con la substitución de una llave del placeholder cuando Gradle está construyendo la app, algo así como:
android.applicationVariants.all { variant -> variant.outputs.each { output -> output.processManifest.doLast{ replaceInManifest(output, 'P_AUTHORITY', variant.applicationId) } } } def replaceInManifest(output, fromString, toString) { def manifestOutFile = output.processManifest.manifestOutputFile def updatedContent = manifestOutFile.getText('UTF-8').replaceAll(fromString, toString) manifestOutFile.write(updatedContent, 'UTF-8') }
Y luego en el manifiesto:
<provider android:name=".core.MyContentProvider" android:authorities="P_AUTHORITY" android:exported="false"/>
Eso es muy útil varias veces
- Cómo utilizar Ormlite con LoaderManager
- Haga clic en el diseño interior para redireccionarlo a otro diseño