错误: 以非位置格式指定的多个替换; 您的意思是添加 format = “ false”属性吗?

我有一个 Android 应用程序,它抛出了 BUILD 进程下面的错误:

/home/Ralf/Projekte/University/android-sampleapp/sampleapp/build/mediates/bundle/debug/res/values-de/values-de. xml 错误: (88,5)在非位置中指定的多个替换 您的意思是添加 format = “ false”属性吗? 错误: (88,5)意外的结束标记字符串

/home/Ralf/Projekte/University/android-sampleapp/sampleapp/build/mediates/bundle/debug/res/values/values.xml 错误: (106,5)在非位置中指定的多个替换 您的意思是添加 format = “ false”属性吗? 错误: (106,5)意外的结束标记字符串

/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/res/merge/debug/values-de/values-de. xml 错误: (131)以非位置格式指定的多个替换; 您是否打算添加 format = “ false”属性? 错误: (131) 意外的结束标记字符串

/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/res/merge/debug/values/values.xml 错误: (1258)在非位置中指定的多个替换 您的意思是添加 format = “ false”属性吗? 错误: (1258)意外的结束标记字符串 错误: java.util.concurt.ExectionException: 异常: 执行时出错 Process/opt/sdk/build-tools/26.0.2/aapt with reference { package-f —— no-runch- I/opt/sdk/Platform/android-27/android.jar-M/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/Manifists/full/debug/AndroidManifest.xml - S/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/res/merge/debug - m-J/home/Ralf/Projekte/University/android-sampleapp/demo/build/generated/source/r/debug - F/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/res/debug/resources-debug. ap _ - D/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/multi-dex/debug/Manif_ keep. txt ——自定义软件包 com.ralfi.demo -0 apk —— output-text-marks/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰 —— no-version-Vector } Error: com.android.ide.common.process. ProcessException: Error while 使用参数执行 process/opt/sdk/build-tools/26.0.2/aapt { package-f —— no-runch- I/opt/sdk/Platform/android-27/android.jar - M/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/Manifists/full/debug/AndroidManifest.xml - S/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/res/merge/debug - m-J/home/Ralf/Projekte/University/android-sampleapp/demo/build/generated/source/r/debug - F/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/res/debug/resources-debug. ap _ - D/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/multi-dex/debug/Manif_ keep. txt ——自定义软件包 com.ralfi.demo -0 apk —— output-text-marks/home/Ralf/Projekte/University/android-sampleapp/demo/build/mediates/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰包/腰 错误: org.gradle.Process.Internal。执行异常: Process‘ command’/opt/sdk/build-tools/26.0.2/aapt” 非零退出值1

当我点击字符串资源处的错误时,它指向: 隐藏% 02d:% 02d 分钟

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

35758 次浏览

这是因为 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>

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

这个错误背后可能还有其他问题。例如,我在字符串中加入的单引号(’)导致了这个问题。使用单引号和反斜杠帮助我解决了这个错误。如果在更改某些内容后出现此错误,请检查这些更改。

替换由百分号标记,因此如果百分号没有被正确替换,则任何百分号都可能导致此错误。

百分号是无效的 XML 字符,除非在此文件格式中正确使用它进行替换。

键入“百分比”而不是使用符号。