Eu declarei uma longa seqüência de entrada string.xml
de um aplicativo.
Declarado assim
<string name="terms">PLEASE READ THESE TERMS OF USE CAREFULLY BY ACCESSING THIS .................</string>
Mas isso dá o seguinte erro:
error: Apostrophe not preceded by \ (in PLEASE READ THESE TERMS OF USE CAREFULLY
Respostas:
poste sua string completa. Porém, meu palpite é que há um caractere apóstrofo (') em sua string. substitua-o por (\ ') e ele corrigirá o problema. por exemplo,
Ref:
http://www.mrexcel.com/forum/showthread.php?t=195353
https://code.google.com/archive/p/replicaisland/issues/48
fonte
<string name="good_example">"This'll work"</string>
referência: developer.android.com/guide/topics/resources/...Solução
Os apóstrofos em strings.xml devem ser escritos como
Exemplo
No meu caso, tive um erro com essa string no meu strings.xml e o consertei .
Aqui você vê que meu aplicativo é construído corretamente com esse código.
Aqui está a string real em meu aplicativo.
fonte
Você deve colocar \ antes de um apóstrofo. Assim como este \ ', verifique também se você está editando strings.xml e não values.xml (o android studio direciona você para este arquivo quando mostra o erro). Porque se você editar values.xml e tentar compilar novamente, o erro persiste. Isso estava acontecendo comigo recentemente.
fonte
https://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
Apóstrofos e citações de escape
Se você tiver um apóstrofo ou uma aspas em sua string, você deve escapar ou colocar toda a string no outro tipo de aspas. Por exemplo, aqui estão algumas picadas que funcionam e não funcionam:
fonte
Use esta regex
(?<!\\)'
para pesquisar um apóstrofo sem escape. Ele encontra um apóstrofo que não é precedido por uma barra invertida.fonte
Eu uso hebraico (linguagem RTL) em strings.xml. Eu procurei manualmente o string.xml por este char: 'então eu adicionei o caractere de escape \ na frente dele (agora parece \') e ainda recebo o mesmo erro!
Procurei novamente pelo char 'e troquei o char' por \ '(escrita do eng), pois mostra uma direita para a esquerda parece que' \ no strings.xml !!
Problema resolvido.
fonte
Você pode ser capaz de usar unicode equivalente tanto apóstrofo quanto outros caracteres que não são suportados na string xml. O equivalente de apóstrofo é "\ u0027".
fonte
1. para erro: apóstrofo sem escape na string
o que descobri é que a ferramenta AAPT2 aponta para a linha errada no xml, às vezes. Portanto, você deve corrigir o arquivo strings.xml inteiro
No Android Studio, no uso de arquivo problemático:
Editar-> localizar-> substituir
Em seguida, escreva no primeiro campo \ '(ou \ &,>, \ <, \ ")
no segundo campo' (ou &,>, <,")
e substitua cada um, se necessário. (Ou "reposicione todos" no caso de ' )
Em seguida, no primeiro campo coloque novamente '(ou &,>, <, ")
e no segundo escreva \'
e substitua cada um, se necessário. (Ou" substitua todos "no caso de ')
2. para outros símbolos problemáticos,
eu uso para comentar cada metade da próxima parte + reconstruir até não encontrar o sinal errado.
Por exemplo, uma palavra de escape "\ update" descarta inesperadamente esse erro :)
fonte
A melhor resposta de simplesmente escapar de
'
com\'
funciona, mas não gosto da solução porque ao usar substituir tudo por'
para\'
, funciona apenas uma vez. Na segunda vez, você ficará com\\'
.Portanto, use:
\u0027
.fonte