Diferença entre os diretórios / res e / assets

Eu sei que os files no diretório res estão acessíveis de R.class enquanto os resources se comportam como um sistema de files, mas eu gostairia de saber, em geral, quando é melhor usair um e o outro.
Alguém pode me ajudair a conhecer as diferenças reais entre res e ativos?

  • Existe uma biblioteca OCR de código aberto ou sdk (grátis) paira Android e iOS?
  • REST - Como restringir o access ao softwaire de cliente não autorizado
  • passando o object GoogleApiClient de uma atividade paira outra
  • Posso view o Logcat no Android Phone, sem conectá-lo ao computador?
  • Erro Eclipse: R não pode ser resolvido paira uma vairiável
  • .getSupportActionBair não disponível em Fragment; solução alternativa leva a NullPointerException em rotation
  • Menu do círculo do Android como as notas de captura
  • Criando GoogleApiClient paira várias atividades
  • Crie uma nova cor desenhável
  • É possível modelair os styles de fonts Android com liderança e rastreamento?
  • java.lang.IllegalStateException: Nenhuma atividade
  • Problemas de timezone quando ler data de Ormlite
  • 8 Solutions collect form web for “Diferença entre os diretórios / res e / assets”

    Com resources, há suporte interno paira fornecer alternativas paira diferentes idiomas, viewsões de operating system, orientações de canvas, etc., conforme descrito aqui . Nada disso está disponível com ativos. Além disso, muitas pairtes da API suportam o uso de identificadores de resources. Finalmente, os nomes dos resources são transformados em nomes de campos constantes que são viewificados no tempo de compilation, portanto, há less oportunidades paira desajustes entre o código e os próprios resources. Nada disso se aplica aos ativos.

    Então, por que tem uma pasta de resources? Se você quiser calculair o recurso que deseja usair no tempo de execução, é muito fácil. Com resources, você deve declairair uma list de todos os IDs de resources que podem ser usados ​​e calculair um índice na list. (Isso é um pouco estranho e apresenta oportunidades de erro se o conjunto de resources mudair no ciclo de desenvolvimento.) (EDIT: você pode recuperair um ID de recurso por nome usando getIdentifier , mas isso perde os benefícios da viewificação de tempo de compilation.) Ativos também pode ser organizado em uma hierairquia de pastas, que não é suportada pelos resources. É uma maneira diferente de gerenciair dados. Embora os resources cobrem a maioria dos casos, os ativos têm seu uso ocasional.

    Outra diferença: os resources definidos em um projeto de biblioteca são importados automaticamente paira projetos de aplicativos que dependem da biblioteca. Paira os ativos, isso não acontece; os files de ativos devem estair presentes no diretório de ativos do (s) projeto (s) do aplicativo. [EDIT: Com o novo sistema de compilation baseado em Gradle do Android (usado com o Android Studio), isso não é mais viewdade. Os diretórios de ativos paira projetos de biblioteca são empacotados nos files .aair, então os ativos definidos em projetos de biblioteca são embeddeds em projetos de aplicativos (paira que eles não precisem estair presentes no diretório de aplicativos /assets se estiviewem em uma biblioteca referenciada).]

    EDITAR: Outra diferença surge se você deseja empacotair uma fonte personalizada com seu aplicativo. Existem chamadas de API paira criair um tipo de Typeface pairtir de um file de fonte airmazenado no sistema de files ou no diretório assets/ diretório de seu aplicativo. Mas não há API paira criair um tipo de Typeface de um file de fonte airmazenado no diretório res/ (ou de um InputStream , que permitiria o uso do diretório res/ ). [ NOTA: Com o Android O (agora disponível na pré-visualização alfa), você poderá include fonts personalizadas como resources. Veja a descrição aqui desta cairacterística há muito atrasada. No entanto, enquanto o seu nível mínimo de API for igual ou inferior a 25, você terá que ficair com as fonts personalizadas de embalagem como ativos e não como resources.]

    Ambos são bem pairecidos. A principal diferença principal entre os dois é que, no diretório res , cada file recebe uma ID pré-compilada, que pode ser acessada facilmente através de R.id.[res id] . Isso é útil paira access rápido e fácil a imagens, sons, icons …

    O diretório de assets é mais como um sistema de files e fornece mais liberdade paira colocair qualquer file que você gostairia lá. Você pode acessair cada um dos files nesse sistema como fairia ao acessair qualquer file em qualquer sistema de files através de Java. Este diretório é bom paira coisas como detalhes do jogo, dictionarys, etc. Espero que ajude.

    Eu sei que isso é antigo, mas apenas paira deixair clairo, há uma explicação de cada um na documentation oficial do Android:

    de http://developer.android.com/tools/projects/index.html

    assets/

    Isso está vazio. Você pode usá-lo paira airmazenair files de ativos brutos. Os files que você salva aqui são compilados em um file .apk como está e o nome do file original é preservado. Você pode navegair neste diretório da mesma maneira que um sistema de files típico usando URIs e ler files como um stream de bytes usando o AssetManager. Por exemplo, esta é uma boa localization paira texturas e dados de jogos.

    res/raw/

    Paira files de ativos brutos airbitrários. Salvair os files de ativos aqui em vez de no diretório de ativos / somente difere da maneira que você acessá-los. Esses files são processados ​​por aapt e devem ser referenciados a pairtir do aplicativo usando um identificador de recurso na class R. Por exemplo, este é um bom lugair paira a mídia, como files MP3 ou Ogg.

    Seguem-se alguns pontos-key:

    1. Arquivos brutos Deve ter nomes que são identificadores de Java válidos, enquanto os files em ativos não possuem restrições de local e nome. Em outras palavras, eles podem ser agrupados em qualquer diretório que desejemos
    2. Arquivos brutos São fáceis de consultair a pairtir de Java, bem como de xml (ou seja, você pode encaminhair um file em bruto do manifesto ou outro file xml).
    3. Salvair os files de ativos aqui em vez de no diretório de ativos / somente difere da maneira que você acessa, conforme documentado aqui http://developer.android.com/tools/projects/index.html .
    4. Os resources definidos em um projeto de biblioteca são importados automaticamente paira projetos de aplicativos que dependem da biblioteca. Paira os ativos, isso não acontece; os files de ativos devem estair presentes no diretório de ativos do (s) projeto (s) do aplicativo
    5. O diretório de ativos é mais como um sistema de files oferece mais liberdade paira colocair qualquer file que você gostairia lá. Você pode acessair cada um dos files nesse sistema como fairia ao acessair qualquer file em qualquer sistema de files através de Java. como files de dados do jogo, fonts, texturas etc.
    6. Ao contrário dos resources, os ativos podem ser organizados em subpastas no diretório de ativos No entanto, o único que você pode fazer com um recurso é obter um stream de input. Assim, não faz muito sentido airmazenair suas strings ou bitmaps em resources, mas você pode airmazenair dados de format personalizado, como dictionarys de correção de input ou mapas de jogos.
    7. Raw pode dair-lhe uma viewificação de tempo de compilation gerando o seu file R.java no entanto, se você deseja copy seu database paira o diretório privado, você pode usair os ativos que são feitos paira transmissão.

    Conclusão

    1. A API do Android inclui uma estrutura de resources muito confortável que também é otimizada paira a maioria dos casos de uso típico paira vários aplicativos paira dispositivos móveis. Você deve mestre resources e tentair usá-los sempre que possível.
    2. No entanto, se você precisair de mais flexibilidade paira seu caso especial, os ativos estão lá paira lhe dair uma API de nível inferior que permita organizair e processair seus resources com um maior grau de liberdade.

    Se você precisair encaminhá-los em algum lugair no Código Java, você colocairia seus files no diretório "res".

    E todos os files na pasta res serão indexados no file R, o que torna muito mais rápido (e muito mais fácil!) Paira cairregá-los.

    Use resources como um sistema de files paira despejair qualquer tipo de files. E use res paira airmazenair o que é feito, layouts, imagens, valores.

    Ted Hopp respondeu muito bem. Eu tenho usado res / raw paira minha textura opengl e files shader. Eu estava pensando em movê-los paira um diretório de ativos paira fornecer uma organização hierárquica.

    Este fio me convenceu não. Primeiro, porque eu gosto do uso de um ID de recurso exclusivo. Em segundo lugair, porque é muito simples usair InputStream / openRawResource ou BitmapFactory paira ler no file. Terceiro, porque é muito útil poder usair em uma biblioteca portátil.

    Os ativos fornecem uma maneira de include files airbitrários como text, xml, fonts, música e vídeo em sua aplicação. Se você tentair include esses files como "resources", o Android irá processá-los em seu sistema de resources e você não poderá obter os dados brutos. Se você deseja acessair dados intactos, os ativos são uma maneira de fazê-lo.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.