Gradle构建失败并出现此错误:
Error:C:\Users\Roman\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.0.2.aar\bab547c3f1b8061ef9426f524a823a15\res\drawable-xhdpi-v4\abc_btn_switch_to_on_mtrl_00001.9.png failed to read PNG signature: file does not start with PNG signature
Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
Error:Execution failed for task ':app:mergeDebugResources'.
Error: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
aapt2 compile --legacy -o C:\dev\workspace\android2\MatrixCalculator\app\build\intermediates\res\merged\debug C:\Users\Roman\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.0.2.aar\bab547c3f1b8061ef9426f524a823a15\res\drawable-xhdpi-v4\abc_btn_switch_to_on_mtrl_00001.9.png
Issues:
- ERROR: C:\Users\Roman\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.0.2.aar\bab547c3f1b8061ef9426f524a823a15\res\drawable-xhdpi-v4\abc_btn_switch_to_on_mtrl_00001.9.png failed to read PNG signature: file does not start with PNG signature
我尝试解决此问题的一些基本事项:
答案 0 :(得分:16)
问题可能是因为图片的错误扩展
就我而言,该文件是JPEG
图片,但保存为 PNG
未转换为。在这种情况下,将更改扩展为真实的并转换为 PNG ,然后重试。
对于instace,你有ic_logo.png
但它实际上是 JPG 图像。
您应该将其重命名为ic_logo.jpg
并使用 Photoshop 之类的内容将图像转换为PNG格式。
答案 1 :(得分:4)
在build.gradle
aaptOptions { cruncherEnabled = false }
删除C:\Users\.gradle\caches
答案 2 :(得分:3)
答案 3 :(得分:2)
android {
buildTypes {
release {
crunchPngs false // or true
}
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
crunchPngs false // or true
lintOptions {
checkReleaseBuilds false
abortOnError false
}
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
答案 4 :(得分:1)
我不确定它是否是有效的解决方案,但删除仅错误消息中提到的文件有帮助。删除文件夹时,包含它的文件没有。
答案 5 :(得分:1)
由于出现错误的图像扩展名而发生。 例如,图像为 jpg ,扩展名为 png 。
解决方案:
def sum_divisors(n):
sum = 0
divisor = 1
while divisor < n:
if n % divisor == 0:
sum = sum + divisor
divisor += 1
# Return the sum of all divisors of n, not including n
return sum
答案 6 :(得分:0)
您可能使用过JPEG文件或其他图像文件格式。
使用PNG图像解决错误。
可绘制目录只能有png类型的图像。
答案 7 :(得分:0)
这确实是错误的文件类型的结果,可以通过以正确的格式保存文件来修复。
我使用 PhoneGap Build 遇到了这个问题,并希望为其他任何 PhoneGap / Cordova 用户留下2美分进入这个。
我的问题是我将旧的PhoneGap 6.x 升级为 8.0 ,似乎默认启动的行为已更改。它曾经要求jpg作为默认的splash,但是在8.0上它会在生产版本中产生这个错误。
之前有效:
<splash src="www/splash.jpg" />
现在您有2个选项。用png替换默认的splash,如下所示:
<splash src="www/res/screen/android/screen-xhdpi-portrait.png" />
其他选项是完全删除默认启动。
答案 8 :(得分:0)
要快速修复,请在app.gradle中将 shrinkResources 改为 false ,而不是 true 希望这会有所帮助。 如果没有那么也添加这个 aaptOptions {cruncherEnabled = false}
答案 9 :(得分:0)
如果您没有任何透明像素,那么将文件重命名为def isDigit(string):
string = string.strip()
if string[:1] == "-":
cuted = string[1:]
if cuted.isdigit():
return True
else:
return False
elif string.isdigit():
return True
else:
return False
print isDigit("-234.4")
对我来说是可行的。
答案 10 :(得分:0)
我遇到了同样的问题。要解决该问题,只需重新启动Android Studio并再次构建gradle文件。
答案 11 :(得分:0)
我发现了一个有趣但简单的方法,首先在任何在线站点或您的photoshop上将您的文件(很可能是jpeg或其他图像文件)转换为png。然后使用https://appicon.co/将该png图片转换为png图标,然后将其添加到android / app / src / main中的res文件夹中。完成
答案 12 :(得分:0)
我遇到了同样的问题,可以通过将图像从Android studio转换为webP来解决 右键点击图片->点击“转换为WebP”
该转换将处理文件格式并减小PNG的大小
答案 13 :(得分:0)
就我而言,还有一个 jpg 文件而不是 png,所以我更改了扩展名并解决了我的问题。
答案 14 :(得分:0)
您可以在 node_modules/react-native/react.gradle 中添加代码。在 doFirst 之后
doLast {
def moveFunc = { resSuffix ->
File originalDir = file("$buildDir/generated/res/react/release/${resSuffix}");
if (originalDir.exists()) {
File destDir = file("$buildDir/../src/main/res/${resSuffix}");
ant.move(file: originalDir, tofile: destDir);
}
}
moveFunc.curry("drawable-ldpi").call()
moveFunc.curry("drawable-mdpi").call()
moveFunc.curry("drawable-hdpi").call()
moveFunc.curry("drawable-xhdpi").call()
moveFunc.curry("drawable-xxhdpi").call()
moveFunc.curry("drawable-xxxhdpi").call()
moveFunc.curry("raw").call()
}
在删除drawable文件夹后检查它是否没有解决问题 github enter link description here
答案 15 :(得分:0)
我能够永久修复它。
我创建了一个新的空白 expo 项目,然后我添加了一个新的应用程序图标(正确的 png 格式),然后我从 expo 中弹出。
然后我将 mipmap-*
文件夹从空白项目复制到我的真实项目中。一切都很完美。
答案 16 :(得分:-1)
如果您使用在线平台生成App Icon(launcher_icon),则使用PNG格式或先将JPEG转换为PNG,然后使用APP ICON GENERATOR
答案 17 :(得分:-1)
你可以用windows win10'Paint'打开图片, 然后你可以保存为 .png 并覆盖它, 它会解决问题
答案 18 :(得分:-2)
我有同样的错误,我执行了一些步骤: