Android Asset Packaging Tool ( aapt
)은 최신 릴리스에서 매우 엄격 해졌 으며 이제 모든 Android 버전에 사용 됩니다. 더 이상 위치가 아닌 형식 지정자를 허용 하지 않기 때문에 발생하는 aapt-error가 생성 됩니다 .
다음은 리소스 문자열에 % 기호를 포함시키는 방법에 대한 몇 가지 아이디어입니다.
문자열에 형식 지정자 또는 대체가 필요하지 않은 경우 단순히 formatted
속성 을 사용하여 다음 과 같이 설정할 수 있습니다 false
.
<string formatted="false">%a + %a == 2%a</string>
이 경우 문자열은 형식 문자열로 사용 Formatter
되지 않으므로 % 기호를 이스케이프하지 않아도됩니다. 결과 문자열은 "% a + % a == 2 % a"입니다.
formatted="false"
속성 을 생략하면 문자열이 형식 문자열로 사용되므로 % 기호를 이스케이프해야합니다. 이것은 이중 %로 올바르게 수행됩니다.
<string>%%a + %%a == 2%%a</string>
이제 aapt
오류는 없지만 사용 방법에 따라 Formatter
형식 인수 없이 a 를 호출 하면 결과 문자열은 "%% a + %% a == 2 %% a"일 수 있습니다 .
Resources res = context.getResources();
String s1 = res.getString(R.string.str);
// s1 == "%%a + %%a == 2%%a"
String s2 = res.getString(R.string.str, null);
// s2 == "%a + %a == 2%a"
xml과 코드가 없으면 정확히 문제가 무엇인지 말하기 어렵지만 바라는 것은 메커니즘을 조금 더 잘 이해하는 데 도움이되기를 바랍니다.