Problemas y soluciones encontrados al actualizar a Android Studio3.0

Los problemas y soluciones encontrados al actualizar a Android Studio3.0, Android Studio3.0 es una gran actualización esta vez. Después de la actualización, descubrí que la compilación ha mejorado enormemente, así como las últimas herramientas de depuración de errores. En resumen, la nueva versión de Google sigue siendo muy sincera.

Problemas encontrados

1 、 saborDimensiones

Registro de errores

Error: Todos los sabores ahora deben pertenecer a una dimensión de sabor con nombre. Obtenga más información en https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

Razón: gradle3.0 necesita usar FlavourDimensions para empaque de múltiples versiones, modifíquelo como sigue:

android {
//…
defaultConfig {
//…
flavourDimensions "dimen"
}
}

Luego realice los cambios correspondientes en productFlavors

productFlavors {
PRODUCTA {dimensión “dimen”}
ProductB {dimensión “dimen”}
}

Configurar múltiples tamaños de sabor

android {
// ...
defaultConfig {
// ...
flavourDimensions "dimenA", "dimenB"
}
}
productFlavors {
productA {dimension "dimenA"}
productB {dimension "dimenB"}
productC {dimension "dimenA"}
}

2.apk llamado
Registro de errores

No se puede establecer el valor de la propiedad de solo lectura 'outputFile' para ApkVariantOutputImpl_Decorated {apkData = Main {type = MAIN, fullName = busDebug, filters = []}} de tipo com.android.build.gradle.internal.api.ApkVariantOutputImpl. Abrir documento

El código anterior:

applicationVariants.all {variant ->
variant.outputs.each {salida ->
def outputFile = output.outputFile
if (outputFile! = null && outputFile.name.endsWith ('. apk')) {
def fileName = “XXX- ree fa u l t Co n fyo g. v e r s i o n Co de - por defecto C onfig. versión C ode - {defaultConfig.versionName} - r e l e a s e Tyo m e ( ) - release T ime () - {productFlavors.name [0]} ”
if (variant.buildType.name == 'release') {
fileName + = '.apk'
} else if (variant.buildType.name == 'debug' ) {
fileName + = '_debug.apk'
} else {
fileName + = '_other.apk'
}
output.outputFile = new File (outputFile.parent, fileName)
}
}
}

Reemplace gradle3.0 cada uno con todos, output.outputFile con outputFileName, no se necesita ningún archivo nuevo, el código modificado:

applicationVariants.all {variant ->
variant.outputs.all {
def fileName = “XXX- ree fa u l t Co n fyo g. v e r s i o n Co de - por defecto C onfig. versión C ode - {defaultConfig.versionName} - r e l e a s e Tyo m e ( ) - release T ime () - {productFlavors.name [0]} ”
if (variant.buildType.name == 'release') {
fileName + = '.apk'
} else if (variant.buildType.name == 'debug' ) {
fileName + = '_debug.apk'
} else {
fileName + = '_other.apk'
}
outputFileName = fileName
}
}

Cabe señalar que al usar Build-> Generate Signed APK ..., el paquete de apk generado se colocará en una carpeta con el nombre del canal.

3. Los procesadores de anotaciones deben declararse explícitamente ahora. Añádalos a la configuración de annotationProcessor.

Registro de errores

Error: la ejecución falló para la tarea ': app: javaPreCompilePreProductDebug'.
Los procesadores de anotaciones deben declararse explícitamente ahora. Se encuentra que las siguientes dependencias de la ruta de clases de compilación contienen un procesador de anotaciones. Agréguelos a la configuración de annotationProcessor.
- butterknife-7.0.1.jar (butterknife-7.0.1.jar)
Alternativamente, configure android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true para continuar con el comportamiento anterior. Tenga en cuenta que esta opción está obsoleta y se eliminará en el futuro.
Consulte https://developer.android.com/r/tools/annotation-processor-error-message.html para obtener más detalles.
修复 方案
android {
//…
defaultConfig {
//…
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
}
}
}
}

4.Aapt2Exception

Registro de errores

Error: (113, 5) error: atributo de estilo '@android: attr / windowEnterAnimation' no encontrado.
Error: (113, 5) error: atributo de estilo '@android: attr / windowSalirAnimation' no encontrado.

Error: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: error AAPT2: verifique los registros para obtener detalles
Error: java.util.concurrent.ExecutionException: com.android. tools.aapt2.Aapt2Exception: error AAPT2: verifique los registros para obtener detalles
Error: com.android.tools.aapt2.Aapt2Exception: error AAPT2: verifique los registros para obtener detalles
Error: Error de ejecución para la tarea ': aplicación: processPreProductDebugResources'.
No se pudo ejecutar aapt

Solución Agregue el siguiente código en gradle.properties, deshabilite la compilación aapt2
android.enableAapt2 = false

5. Otro

La nueva versión de gradle no necesita configurar buildToolsVersion

las dependencias son así al importar el paquete
{
implementación fileTree (incluir: ['* .jar'], dir: 'libs')
androidTestImplementation ...
proyecto de
implementación ... archivos de
implementación ... implementación ...
testImplementation'junit: junit: 4.12 '
}

Supongo que te gusta

Origin blog.csdn.net/hai_jian/article/details/81454443
Recomendado
Clasificación