A Ferramenta de empacotamento de ativos Android ( aapt
) tornou-se muito rigorosa em sua versão mais recente e agora é usada para todas as versões do Android. O erro aapt que você está recebendo é gerado porque não permite mais especificadores de formato não posicionais .
Aqui estão algumas idéias de como você pode incluir o símbolo% em suas sequências de recursos.
Se você não precisar de nenhum especificador ou substituição de formato em sua string, basta usar o formatted
atributo e configurá-lo para false
:
<string formatted="false">%a + %a == 2%a</string>
Nesse caso, a string não é usada como uma string de formato para Formatter
que você não precise escapar dos% -symbols. A sequência resultante é "% a +% a == 2% a".
Se você omitir o formatted="false"
atributo, a sequência será usada como uma sequência de formatação e você precisará escapar dos% -symbols. Isso é feito corretamente com o dobro de%:
<string>%%a + %%a == 2%%a</string>
Agora aapt
não há erros, mas dependendo de como você a usa, a sequência resultante pode ser "%% a + %% a == 2 %% a" se a Formatter
for chamada sem nenhum argumento de formato :
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"
Sem nenhum código e xml, é difícil dizer qual é exatamente o seu problema, mas espero que isso ajude você a entender um pouco melhor os mecanismos.