[안드로이드] com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource compilation failed 오류 해결하기 (error: failed to read PNG signature: file does not start with PNG signature. 이미지 확장자 오류 처리)
빌드 버전 상향 후 몇 개의 이미지를 추가 후 테스트를 위해 휴대폰에서 실행하는 경우는 오류가 발생하지 않았다.
그러나 릴리즈 버전으로 빌드하는 경우에 발생하는 오류이다.
파일 이름이 잘 못 되었나 싶어 확인했으나 png파일로 되어있고 존재했다.
Execution failed for task ':app:mergeReleaseResources'.
> 8 exceptions were raised by workers:
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource compilation failed
C:androidAndroidStudioProjectscomappsrcmainresdrawable-xxhdpii_s_r.png:
error: failed to read PNG signature: file does not start with PNG signature.
C:androidAndroidStudioProjectscomappsrcmainresdrawable-xxhdpii_s_r.png: error:
file failed to compile.
[build.gradle] 파일 정보
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
classpath 'com.google.gms:google-services:4.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
[buildgradle (:app) 파일 정보]
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
// buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.test"
minSdkVersion 26
targetSdkVersion 30
versionCode 8
versionName "1.0.8"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//
// kotlinOptions {
// jvmTarget = "1.8"
// }
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// implementation 'com.android.support:appcompat-v7:29.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.google.firebase:firebase-messaging:20.1.0'
implementation 'com.google.firebase:firebase-core:17.2.1'
implementation 'com.google.firebase:firebase-ads:18.3.0'
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation 'androidx.work:work-runtime:2.2.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
// Import the BoM for the Firebase platform
implementation platform('com.google.firebase:firebase-bom:29.0.4')
// Declare the dependency for the Cloud Firestore library
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-firestore'
// Declare the dependency for the Firebase Authentication library
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-auth'
// Also declare the dependency for the Google Play services library and specify its version
// implementation 'com.google.android.gms:play-services-auth:20.0.1'
//MIT progressbar
//https://github.com/ybq/Android-SpinKit
implementation 'com.github.ybq:Android-SpinKit:1.4.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
//위치는 dependencies 아래쪽에 반듯이 위치시킬것
apply plugin: 'com.google.gms.google-services'
오류 해결을 위해 gradle.properties 설정파일 열고 android.enableAapt2=false 속성을 추가해주었다.
오류는 여전히 해결되지 않았다.
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.useAndroidX=true
android.enableJetifier=true
android.enableAapt2=false
오류 원인은 이미지 형식이 PNG가 아닌데 파일의 확장자가 PNG로 되어 있기 때문이다.
그래서 혹시나 해서 그림판에서 이미지를 열고 png파일로 저장했다. 그럼에도 불구하고 계속 동일한 오류가 발생 중이다.
원래파일은 확장자가 HEIC인 파일이다. png로 변경했는데…. 뭔가 바뀌지 않는 정보가 존재하는 것 같다.
그래서 아래 사이트에서 png파일을 jpg로 일괄 변경 후 다운 받아서 처리하였다.
오늘 새롭게 알게된 사실은 이미지확장자 중에 HEIC, WebP가 있다는 것이다.
150개가 넘는 이미지를 일일이 변경하는 것은 너무나도 시간낭비, 인력낭비임으로
아래 사이트를 이용하여 일괄로 변경하였다.
오늘도 오류가 발생하여 또 하나는 배우는구나…..
[REFERENCE]