Ignorar applicatoinID dentro del manifiesto del proyecto de la biblioteca con Gradle
Tengo un proyecto principal que hace referencia a un proyecto de biblioteca. Ambos están compilados con Gradle.
Este es el defaultConfig para el archivo de gradle del proyecto principal:
- No se pudo encontrar el método android () para los argumentos en el proyecto de Android Studio
- Ejecutar la aplicación de Android en modo de depuración
- ¿Qué sabor del producto Android Studio genera por defecto en build.gradle?
- Añadir archivos .so pre-construidos en el proyecto utilizando Android Gradle plugin 0.7.3
- Cómo obtener sabor actual en gradle
defaultConfig { applicationId "com.example.app" minSdkVersion 15 targetSdkVersion 21 versionCode 2 versionName "1.0" }
Y este es el defaultConfig para el archivo de gradle del proyecto de la biblioteca:
defaultConfig { minSdkVersion 11 targetSdkVersion 21 versionCode 1 versionName "1.0" }
Como puede ver, no declaro ningún ID de aplicación dentro de la biblioteca.
Tengo un permiso definido dentro de mi proyecto de biblioteca como a continuación:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.library"> <permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" />
Cuando construyo el proyecto, el applicationId es reemplazado por com.example.library (el nombre del paquete de la biblioteca). Y eso no es lo que quiero. Quiero que sea reemplazado por com.example.app ya que es applicationId de mi aplicación .
Si pongo el marcador de posición $ { ID de aplicación} dentro del archivo de manifiesto de la aplicación, todo funciona.
¿Alguien sabe si esto se puede lograr y cómo?
- Android Gradle DexException: Múltiples archivos dex definen Lorg / hamcrest / Descripción
- Git - checkout código git remoto en Android Studio proyecto importado con Gradle construir
- Error al crear un proyecto de Android con los servicios de Google Play
- La versión de Gradle se bloquea después de la actualización de Android Studio 1.3
- Apache conexión HTTP con Android 6.0 (Marshmallow)
- Construir proyecto con Gradle 2.2.1 y Android Studio 1.2.2
- Error al resolver: com.google.android.gms: play-services-measurement: 9.6.1
- Uso de la biblioteca personal alojada en github como dependencia gradle
Aquí puede ver cómo cambiar los valores en un manifiesto http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger
En la sección Soporte de marcador de posición verá más detalles
en su app.gradle
def packagename = "com.packagename"; android { defaultConfig { applicationId packagename } buildTypes { debug { applicationIdSuffix ".dev" manifestPlaceholders = [finalApplicationId: packagename + applicationIdSuffix] } release { applicationIdSuffix "" manifestPlaceholders = [finalApplicationId: packagename + applicationIdSuffix] }
En el manifiesto de tu biblioteca
<provider android:name="an.example" android:authorities="${finalApplicationId}.recommendation" />
Veo la siguiente solución:
Proyecto build.gradle
ext { applicationId = "com.yourproject" }
App build.gradle
defaultConfig { applicationId rootProject.applicationId }
Biblioteca build.gradle
buildTypes { release { buildConfigField 'String', 'ROOT_APPLICATION_ID', rootProject.applicationId } debug { buildConfigField 'String', 'ROOT_APPLICATION_ID', "\"" + rootProject.applicationId + ".dev\"" } }
Además, si desea utilizar la variable en el Manifiesto, use la siguiente manera:
Biblioteca build.gradle
android { defaultConfig { manifestPlaceholders = [ROOT_APPLICATION_ID:rootProject.applicationId] } buildTypes { release { buildConfigField 'String', 'ROOT_APPLICATION_ID', "\"" + manifestPlaceholders.get("ROOT_APPLICATION_ID")+ "\"" } debug { manifestPlaceholders.put("ROOT_APPLICATION_ID", rootProject.applicationId + ".dev"); buildConfigField 'String', 'ROOT_APPLICATION_ID', "\"" + manifestPlaceholders.get("ROOT_APPLICATION_ID")+ "\"" } } }
La variable de defaultConfig estará disponible en mainfest y las variables de buildTypes estarán disponibles en el código.
Manifiesto
<provide android:name="com.lazada.core.storage.db.LazadaContentProvider" android:authorities="${ROOT_APPLICATION_ID}.authority" android:exported="false" />
Establecer la aplicación de bibliotecaId en gradle de la biblioteca
buildTypes { release { applicationId "com.example.library"}}
- Convertir HTML a PDF utilizando iText en Android. ¿Cómo configurar UTF-8 (diacríticos)?
- Tipo de pantalla / brillo de Android