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

Ral*_*kum 24 android android-resources

我有一个Android应用程序,它抛出BUILD进程跟随错误:

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

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

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

/home/Ralf/Projekte/University/android-sampleapp/demo/build/intermediates/res/merged/debug/values/values.xml错误:(1258)以非位置格式指定的多个替换; 你的意思是添加formatted ="false"属性?错误:(1258)意外的结束标记字符串错误:java.util.concurrent.ExecutionException: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/University/android-sampleapp/demo/build/intermediates/res/merged/debug -m -J/home/Ralf/Projekte/University/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.comm on.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/University/android-sampleapp/demo/build /中间体/ 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''以非零退出va结束 lue 1

当我点击字符串resrouces中的错误时,它指向:隐藏%02d:%02d min

但我需要翻译这些资源,为什么我得到这个?

Luc*_*les 57

那是因为你的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>

  • 我有多个带有数百个字符串的语言文件。是否可以在某个地方设置另一个替代设置,而不是更改每一行。这实际上仅在升级Gradle和Studio之后才发生。 (3认同)
  • 非常有用的答案,非常感谢您解决我的问题 (2认同)

Ala*_*lan 11

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


小智 6

此错误可能还存在其他问题。例如,对我来说,我在字符串中添加的单引号 (') 导致出现此问题。使用带有反斜杠的单引号帮助我解决了错误。如果您在更改某些内容后收到此错误,请检查这些更改。