Recursos de la cadena de combinación de Gradle de Android
Me gustaría crear 2 APK diferentes (liberación y depuración) usando Gradle y quiero usar nombres diferentes para ellos ('appName' y 'appName depuración').
He encontrado algunas soluciones pero no funciona para mí:
Enlace 1
Enlace 2
- Android Studio: No se pudo crear un complemento de tipo 'AppPlugin'
- Gradle build-info.xml no se encuentra para la aplicación de módulo en Android Studio
- ¿Se puede implementar en un dispositivo a través de Gradle desde la línea de comandos
- Falta gradlew en el proyecto generado de android
- ¿Por qué Android Studio no creará mi archivo AAR en modo de liberación?
Quisiera instalar ambos apks en el dispositivo pero tengo el siguiente error:
Duplicate resources: ...\src\release\res\values\config.xml:string/config_app_name, ...\src\main\res\values\config.xml:string/config_app_name
Si config_app_name
clave config_app_name
de la main\res\values\config.xml
entonces Gradle dice que la clave no se encontró.
Tengo 3 archivos de manifiesto:
...\src\main\AndroidManifest.xml (this uses the `android:label="@string/config_app_name"`) ...\src\release\AndroidManifest.xml ...\src\debug\AndroidManifest.xml buildTypes { debug { packageNameSuffix ".debug" versionNameSuffix "-debug" buildConfig "public static final String PROVIDER_AUTHORITY = \"" + PROVIDER_DEBUG + "\";" signingConfig signingConfigs.debug } release { buildConfig "public static final String PROVIDER_AUTHORITY = \"" + PROVIDER_RELEASE + "\";" signingConfig signingConfigs.release } } sourceSets { debug { java.srcDirs = [ 'src/main/java'] res.srcDirs = [ 'src/main/res', 'src/debug/res'] } release { java.srcDirs = [ 'src/main/java'] res.srcDirs = [ 'src/main/res', 'src/release/res'] } }
¿Es posible usar una clave común (strings, integers, dimens) en la parte principal del proyecto y anularla en la parte de release / debug?
Gracias por adelantado.
- Problema de generación de Gradle 3.0.0-beta1
- Cómo recuperar la ruta a ADB en build.gradle
- Diferencia entre el funcionamiento de pelusa a través del menú de Android Studio y la línea de comandos de gradlew
- Android Gradle Conflicto de dependencia con la versión interna proporcionada por Android
- Error "Se requiere la versión 1.10 de Gradle. La versión actual es 1.12. "Al ejecutar" gradle wrapper "?
- Diferencia entre limpio, gradlew limpio
- Especificar la ubicación de salida al ensamblar un proyecto de Android con Gradle a través de Terminal?
- Android: No se pudo encontrar ni cargar la clase principal org.gradle.wrapper.GradleWrapperMain
Acabo de darme cuenta de que era sólo una cuestión de nombres. El nombre del paquete de lanzamiento estaba mal escrito. Perdón por este estúpido problema.
Ahora la combinación funciona como se esperaba.
Mire aquí: http://tools.android.com/tech-docs/new-build-system/resource-merging
Se han definido varias fuentes de recursos para el tipo de compilación. En tal caso tienen la misma prioridad y pueden causar conflictos.
Si desea una fusión correcta, debe crear un conjunto de fuentes principal independiente. Tendrá menos prioridad que los recursos de tipos de construcción.
sourceSets { main { java.srcDirs = ['src/main/java'] res.srcDirs = ['src/debug/res'] } debug { res.srcDirs = ['src/debug/res'] } release { res.srcDirs = ['src/release/res'] } }
Pero con tal estructura de directorio debe trabajar fuera de la caja sin la definición de los fuentes.
- Usar getSupportFragmentManager () Dentro de PreferenceActivity
- Animación superpuesta a una actividad de la cámara