top of page
Search
perpcharladoc

Targeting R+ (Version 30 and Above) Requires the Resources.Arsc of Installed Apks: como resolver um



O que é resources.arsc e por que ele é importante para o desenvolvimento de aplicativos Android?




Se você é um desenvolvedor Android, provavelmente sabe que seu app precisa incluir diversos recursos, como imagens, strings, layouts, estilos e muito mais. Mas você sabe o que é resources.arsc e por que ele é importante para o desenvolvimento de aplicativos Android? Neste artigo, explicaremos o que é resources.arsc, por que ele é importante para o desenvolvimento de aplicativos Android e como segmentar r+ (versão 30 e superior) com resources.arsc.




targeting r+ (version 30 and above) requires the resources.arsc of installed apks



O que é resources.arsc?




Resources.arsc é um arquivo de tabela de recursos do aplicativo que faz parte do pacote APK que instala seu aplicativo Android. É um arquivo binário que contém uma lista em formato de tabela dos recursos incluídos em seu aplicativo, como seus nomes, propriedades e IDs.


Um arquivo binário que contém uma lista em formato de tabela dos recursos incluídos em um aplicativo Android




Resources.arsc é gerado pela Android Asset Packaging Tool (aapt), que compila os recursos do seu aplicativo em um formato binário que pode ser facilmente mapeado e analisado pelo dispositivo em tempo de execução. Resources.arsc armazena informações como:


  • O tipo de configuração de recurso (string, attr, id, etc.)



  • As variantes do qualificador (en, v21, sw600dp, etc.)



  • O tamanho da configuração do recurso em bytes



  • O número de entradas na configuração do recurso



  • A densidade da configuração do recurso (a porcentagem de entradas não nulas)



  • Os nomes dos recursos na configuração de recursos



Armazena os nomes de recursos, propriedades e IDs para fácil mapeamento e análise em tempo de execução




Resources.arsc permite que seu aplicativo acesse e use os recursos de seu código usando a classe R, que também é gerada por aapt. A classe R contém campos estáticos que fazem referência aos IDs de recursos em resources.arsc. Por exemplo, se você tiver um TextView com android:id="@+id/my_textView" em seu arquivo XML de layout, poderá encontrá-lo em seu código usando findViewById(R.id.my_textView).O campo R.id.my_textView corresponde ao ID do recurso em resources.arsc, que é um valor inteiro que identifica exclusivamente o recurso TextView.


Por que o resources.arsc é importante para o desenvolvimento de aplicativos Android?




Resources.arsc é importante para o desenvolvimento de aplicativos Android porque permite que os desenvolvedores acessem e usem recursos de seu código usando a classe R, além de permitir o gerenciamento eficiente de recursos e a otimização para diferentes configurações de dispositivos.


Permite que os desenvolvedores acessem e usem recursos de seu código usando a classe R




Conforme mencionado anteriormente, resources.arsc armazena os nomes, propriedades e IDs dos recursos para facilitar o mapeamento e a análise no tempo de execução. A classe R fornece uma maneira conveniente para os desenvolvedores acessarem e usarem esses recursos de seu código, sem precisar codificar os valores ou IDs dos recursos. Por exemplo, se você deseja definir o texto de um TextView programaticamente, pode usar setText(R.string.hello_world), em que R.string.hello_world é o ID de recurso de um recurso de string definido em seu aplicativo. Dessa forma, você pode alterar facilmente o valor do texto em seu aplicativo modificando o recurso de string, sem precisar alterar seu código.


Permite gerenciamento eficiente de recursos e otimização para diferentes configurações de dispositivos




Resources.arsc também permite gerenciamento eficiente de recursos e otimização para diferentes configurações de dispositivos, como tamanho de tela, orientação, idioma, densidade e muito mais. Você pode criar diferentes pastas de recursos para diferentes configurações, como res/layout-land para layout de paisagem, res/values-fr para strings em francês, res/drawable-hdpi para imagens de alta densidade e assim por diante. Resources.arsc armazenará as informações sobre essas variantes de recursos e seus qualificadores e selecionará o melhor recurso correspondente para cada configuração de dispositivo em tempo de execução. Dessa forma, você pode fornecer uma experiência de usuário consistente e otimizada em diferentes dispositivos, sem a necessidade de criar APKs separados para cada configuração.


Como segmentar r+ (versão 30 e superior) com resources.arsc?




Se você deseja segmentar r+ (versão 30 e superior), que é Android 11 e superior, é necessário seguir alguns novos requisitos para resources.arsc. Esses requisitos são:


  • Seu aplicativo deve usar o APK Signature Scheme v2 ou superior



  • Seu resource.arsc deve ser armazenado descompactado e alinhado em um limite de 4 bytes



Esses requisitos são introduzidos para melhorar a segurança e o desempenho do seu aplicativo em dispositivos r+. Vamos ver o que eles significam e como segui-los.


O novo requisito para Android 11 e superior




Os apps devem usar o APK Signature Scheme v2 ou superior




APK Signature Scheme v2 é uma nova maneira de assinar seu aplicativo que foi introduzida no Android 7.0 (API de nível 24). Ele oferece instalação de aplicativo mais rápida, mais proteção contra modificações não autorizadas e suporte para rotação de chaves. APK Signature Scheme v3 é uma extensão da v2 que foi introduzida no Android 9.0 (API de nível 28). Ele adiciona suporte para rotação de chaves sem exigir um novo certificado de assinatura.


Se você deseja segmentar r+, deve assinar seu aplicativo com o APK Signature Scheme v2 ou superior. Isso garante que seu aplicativo seja verificado pela plataforma antes da instalação e que seu arquivo resources.arsc não seja modificado por nenhuma ferramenta ou serviço de terceiros.


Resources.arsc deve ser armazenado descompactado e alinhado em um limite de 4 bytes




Esse requisito está relacionado a como o resources.arsc é acessado pela plataforma em tempo de execução. Se o seu arquivo resources.arsc estiver compactado ou desalinhado, a plataforma terá que descompactá-lo ou realinhá-lo antes de analisá-lo, o que aumentará o uso de memória e o tempo de carregamento do seu aplicativo.


Se você deseja direcionar r+, deve armazenar seu arquivo resources.arsc descompactado e alinhado em um limite de 4 bytes. Isso significa que o tamanho do seu arquivo resources.arsc deve ser um múltiplo de 4 bytes e que o deslocamento do seu arquivo resources.arsc no APK também deve ser um múltiplo de 4 bytes.


As etapas a seguir para direcionar r+ com resources.arsc




Para segmentar r+ com resources.arsc, você precisa seguir estas etapas:


Use o Android Studio ou a ferramenta aapt para gerar recursos.arsc




A primeira etapa é gerar seu arquivo resources.arsc usando o Android Studio ou a ferramenta aapt. O Android Studio gerará automaticamente seu arquivo resources.arsc quando você criar seu aplicativo usando o Gradle. Você também pode usar a ferramenta aapt manualmente para gerar seu arquivo resources.arsc a partir de seus arquivos de recursos.


Use a ferramenta zipalign para alinhar resources.arsc em um limite de 4 bytes




A segunda etapa é usar a ferramenta zipalign para alinhar seu arquivo resources.arsc em um limite de 4 bytes. A ferramenta zipalign é uma ferramenta de linha de comando que otimiza seus arquivos APK alinhando dados não compactados em limites de 4 bytes. Você pode usar a ferramenta zipalign com a opção -p para alinhar seu arquivo resources.arsc em um limite de 4 bytes. Por exemplo, você pode executar o seguinte comando para alinhar seu arquivo app.apk: zipalign -p -f 4 app.apk app-aligned.apk Isso criará um novo arquivo APK chamado app-aligned.apk que tem seu arquivo resources.arsc alinhado em um limite de 4 bytes.


Use a ferramenta apksigner para assinar o aplicativo com APK Signature Scheme v2 ou superior




A terceira e última etapa é usar a ferramenta apksigner para assinar seu aplicativo com APK Signature Scheme v2 ou superior. A ferramenta apksigner é uma ferramenta de linha de comando que assina seus arquivos APK usando vários esquemas de assinatura. Você pode usar a ferramenta apksigner com a opção --v2-signing-enabled e a opção --v3-signing-enabled para assinar seu aplicativo com Esquema de Assinatura de APK v2 ou v3, respectivamente. Por exemplo, você pode executar o seguinte comando para assinar seu arquivo app-aligned.apk com APK Signature Scheme v3: apksigner sign --ks my-release-key.jks --v2-signing-enabled true --v3-signing-enabled true app-aligned.apk Isso assinará seu arquivo app-aligned.apk com APK Signature Scheme v3 usando sua chave de liberação armazenada em my-release-key.jks.


Conclusão




Neste artigo, explicamos o que é resources.arsc, por que ele é importante para o desenvolvimento de aplicativos Android e como segmentar r+ (versão 30 e superior) com resources.arsc. Aprendemos que resources.arsc é um arquivo binário que contém uma lista em formato de tabela dos recursos incluídos em seu aplicativo e que permite acessar e usar esses recursos de seu código usando a classe R e otimizá-los para diferentes configurações de dispositivo. Também aprendemos que segmentar r+ com resources.arsc exige que você use o APK Signature Scheme v2 ou superior e armazene seu arquivo resources.arsc descompactado e alinhado em um limite de 4 bytes.


Se você é um desenvolvedor Android que deseja segmentar r+ com resources.arsc, esperamos que este artigo o tenha ajudado a entender os novos requisitos e as etapas a seguir. Segmentar r+ com resources.arsc melhorará a segurança e o desempenho de seu aplicativo em dispositivos r+ e garantirá que seu aplicativo seja compatível com os recursos mais recentes da plataforma Android.


Então, o que você está esperando? Comece a segmentar r+ com resources.arsc hoje mesmo!


perguntas frequentes




Qual é a diferença entre resources.arsc e R.java?




Resources.arsc e R.java são ambos gerados pela ferramenta aapt, mas servem a propósitos diferentes. Resources.arsc é um arquivo binário que contém uma lista em formato de tabela dos recursos incluídos em seu aplicativo, como seus nomes, propriedades e IDs. R.java é um arquivo de origem Java que contém campos estáticos que fazem referência aos IDs de recursos em resources.arsc. Resources.arsc faz parte do pacote APK que instala seu aplicativo, enquanto R.java faz parte do código-fonte que compila seu aplicativo.


Como posso verificar se meu resources.arsc está alinhado e descompactado?




Você pode usar a ferramenta zipinfo para verificar se o arquivo resources.arsc está alinhado e descompactado no arquivo APK. A ferramenta zipinfo é uma ferramenta de linha de comando que exibe informações sobre arquivos ZIP, como seu conteúdo, tamanhos, taxas de compactação e deslocamentos.Você pode usar a ferramenta zipinfo com a opção -v para exibir informações detalhadas sobre seu arquivo APK e procurar a linha que mostra as informações sobre seu arquivo resources.arsc. Por exemplo, você pode executar o seguinte comando para verificar se o arquivo app.apk tem um arquivo resources.arsc alinhado e descompactado: zipinfo -v app.apk grep resources\.arsc Isso exibirá algo como isto: -rw---- 2.0 fat 123456 b- stor 21-Jun-23 23:58 resources.arsc A parte b-stor indica que o arquivo está armazenado sem compactação (stor) e o deslocamento do arquivo dentro do APK é um múltiplo de 4 bytes (b-).


Quais são os benefícios de segmentar r+ com resources.arsc?




Segmentar r+ com resources.arsc traz vários benefícios para seu aplicativo, como:


  • Segurança aprimorada: ao usar o APK Signature Scheme v2 ou superior, você garante que seu aplicativo seja verificado pela plataforma antes da instalação e que seu arquivo resources.arsc não seja modificado por nenhuma ferramenta ou serviço de terceiros.



  • Desempenho aprimorado: ao armazenar seu arquivo resources.arsc descompactado e alinhado em um limite de 4 bytes, você reduz o uso de memória e o tempo de carregamento de seu aplicativo, pois a plataforma não precisa descompactar ou realinhar seu arquivo resources.arsc antes de analisá-lo.



  • Compatibilidade aprimorada: ao segmentar r+, você garante que seu aplicativo seja compatível com os recursos mais recentes da plataforma Android, como armazenamento com escopo, permissões únicas, acesso à localização em segundo plano e muito mais.



Quais são os desafios de segmentar r+ com resources.arsc?




Segmentar r+ com resources.arsc também pode representar alguns desafios para seu aplicativo, como:


  • Tamanho do APK maior: ao armazenar o arquivo resources.arsc descompactado, você aumenta o tamanho do arquivo APK, pois a compactação reduz o tamanho dos arquivos binários. No entanto, isso pode não ser um problema significativo, pois os arquivos resources.arsc geralmente são pequenos em comparação com outros arquivos em seu APK, como imagens ou vídeos.



  • Processo de assinatura mais complexo: ao usar o APK Signature Scheme v2 ou superior, você precisa seguir um processo de assinatura mais complexo, pois precisa usar a ferramenta apksigner em vez da ferramenta jarsigner e precisa assinar seu aplicativo após alinhar seu arquivo resources.arsc com a ferramenta zipalign.



  • Possíveis problemas de compatibilidade: ao direcionar para r+, você pode encontrar alguns possíveis problemas de compatibilidade com dispositivos ou plataformas mais antigos que não suportam APK Signature Scheme v2 ou superior, ou que esperam um arquivo resources.arsc compactado ou desalinhado. No entanto, esses problemas podem ser resolvidos testando seu aplicativo em diferentes dispositivos e plataformas e usando o formato Android App Bundle para gerar APKs otimizados para diferentes configurações de dispositivo.



Onde posso encontrar mais informações sobre como segmentar r+ com resources.arsc?




Se você quiser encontrar mais informações sobre como segmentar r+ com resources.arsc, consulte as seguintes fontes:


  • A documentação oficial do Android em .



  • As postagens do blog oficial do Android em .



  • Os vídeos oficiais do desenvolvedor Android em .



  • Os guias oficiais do desenvolvedor Android sobre .



0517a86e26


0 views0 comments

Recent Posts

See All

Comments


bottom of page