错误:以非位置格式指定的多个替换;你的意思是添加格式化的=" false"属性

时间:2018-01-19 16:52:55

标签: android android-resources

我有一个Android应用程序,它会在出现以下错误时抛出BUILD进程:

  

/home/Ralf/Projekte/University/android-sampleapp/sampleapp/build/intermediates/bundles/debug/res/values-de/values-de.xml   错误:(88,5)在非位置指定的多个替换   格式;你的意思是添加格式化的=" false"属性?   错误:(88,5)意外的结束标记字符串

     

/home/Ralf/Projekte/University/android-sampleapp/sampleapp/build/intermediates/bundles/debug/res/values/values.xml   错误:(106,5)在非位置指定的多个替换   格式;你的意思是添加格式化的=" false"属性?   错误:(106,5)意外的结束标记字符串

     

/home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/merged/debug/values-de/values-de.xml   错误:(131)以非位置格式指定的多个替换;   你的意思是添加格式化的=" false"属性?错误:(131)   意外的结束标记字符串

     

/home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/merged/debug/values/values.xml错误:(1258)非位置指定的多个替换   格式;你的意思是添加格式化的=" false"属性?   错误:(1258)意外的结束标记字符串   错误:java.util.concurrent.ExecutionException:   com.android.ide.common.process.ProcessException:执行时出错   进程/opt/sdk/build-tools/26.0.2/aapt with arguments {package -f   --no-crunch -I /opt/sdk/platforms/android-27/android.jar -M / home / Ralf / Projekte / University / android-sampleapp / demo / build / intermediates / manifests / full / debug / AndroidManifest。 XML   -S / home / Ralf / Projekte /大学/ android-sampleapp / demo / build / intermediates / res / merged / debug   -m -J / home / Ralf / Projekte /大学/ android-sampleapp / demo / build / generated / source / r / debug   -F /home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/debug/resources-debug.ap_   -D /home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/multi-dex/debug/manifest_keep.txt   --custom-package com.ralfi.demo -0 apk --output-text-symbols / home / Ralf / Projekte / University / android-sampleapp / demo / build / intermediates / symbols / debug   --no-version-vectors}错误:com.android.ide.common.process.ProcessException:同时出错   使用参数执行进程/opt/sdk/build-tools/26.0.2/aapt   {package -f --no-crunch -I /opt/sdk/platforms/android-27/android.jar   -M /home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/manifests/full/debug/AndroidManifest.xml   -S / home / Ralf / Projekte /大学/ android-sampleapp / demo / build / intermediates / res / merged / debug   -m -J / home / Ralf / Projekte /大学/ android-sampleapp / demo / build / generated / source / r / debug   -F /home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/debug/resources-debug.ap_   -D /home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/multi-dex/debug/manifest_keep.txt   --custom-package com.ralfi.demo -0 apk --output-text-symbols / home / Ralf / Projekte / University / android-sampleapp / demo / build / intermediates / symbols / debug   --no-version-vectors}错误:org.gradle.process.internal.ExecException:进程'命令' /opt/sdk/build-tools/26.0.2/aapt'&#39 ;完成了   非零退出值1

当我点击字符串重新出现时的错误时,它指向: 隐藏%02d:%02d min

但我需要翻译这些资源,为什么我会这样做?

2 个答案:

答案 0 :(得分:41)

这是因为您的String资源有多个%s或类似的。为避免这种情况,您必须标识每个:%1$s。例如:

<string name="full_name">First: %1$s - Last: %2$s</string>

%1$s是您的第一个替换,%2$s是您的第二个。

如果您不打算执行任何替换,只需添加属性formatted="false"即可。例如:

<string name="your_string" formatted="false">Level: 100%</string>

答案 1 :(得分:3)

此错误的另一种可能是之前已经警告过;这些错误中可能隐藏着不同的错误,因此您需要查找并修复它。有一个重复的资源值错误,不知何故触发了很多“以非位置格式指定的多重替换”,找到并修复重复值错误解决了构建问题。