Recentemente, atualizei meu telefone para um LG Motion 4G (Android 4 ICS). Vejo que o sdcard está montado em /sdcard/external_sd
. Também notei que isso parece ser o mesmo com alguns outros modelos mais recentes. Os aplicativos esperam que o sdcard esteja em /sdcard
. Presumo que os fabricantes desejam incluir muito armazenamento interno, mas por que montar o armazenamento interno /sdcard
? Isso não deveria ser contra algum tipo de padrão de especificação do Android?
external-sd
storage
Sepero
fonte
fonte
Respostas:
O motivo é o histórico do Android: a primeira geração de dispositivos Android tinha apenas uma pequena quantidade de armazenamento interno (em torno de 100-400MiB) sob o qual estava montado
/data
.Em seguida, os dispositivos com um cartão SD externo naquele momento foram lançados. O cartão SD foi montado embaixo
/mnt/sdcard
.Depois disso, os dispositivos com grande armazenamento interno chegaram ao mercado. Esse armazenamento foi dividido em
/mnt/sdcard
partes , porque havia se tornado o local padrão para grandes blocos de dados de aplicativos, imagens e outros. Portanto, o ambiente Android precisava ter um diretório/data
e/mnt/sdcard
. Portanto, uma partição era para/data
, a outra para/mnt/sdcard
. Esse é o motivo pelo qual o espaço de armazenamento pode ficar baixo (a/data
partição), mesmo que haja muito espaço/mnt/sdcard
.Essa situação foi aprimorada com o Android 3.0:
/data
e/mnt/sdcard
agora está apontando para a mesma partição. Bom trabalho, Google, isso poderia ter sido feito versões atrás. Essa também é a razão pela qual o app2sd não é mais necessário no Android 3.0 ou superior: você só moveria os dados no mesmo volume.Agora chegamos à resposta se a sua pergunta: Como
/mnt/sdcard
já está montado no armazenamento interno, um cartão SD externo precisa usar um ponto de montagem diferente. E esse ponto de montagem não é especificado pelo Google. Poderia ser/mnt/sdcard/ext_sd
/mnt/external
/mnt/extSdCard
/mnt/sdcard/external_sd
A chamada da API
getExternalStorageDirectory()
geralmente aponta para o diretório de armazenamento interno. Esse comportamento está documentado. Existem projetos de código aberto que fornecem ferramentas para encontrar o diretório externo do cartão SD de maneira canônica.fonte
isExternalStorageRemovable()
para ver se o armazenamento "externo" é removível, e pode-se determinar os pontos de montagem (usando omount
comando) e procurar sinalizadores de montagem etc. Mas se não me enganar aqui, isso ainda significa que cada desenvolvedor precisa descobrir por ele mesmo o aplicativo e não há uma chamada de API simples para fazer isso por ele?/data
partição forem mesclados, como eu poderia montar / desmontar com segurança meu cartão SD para conectá-lo, por exemplo, ao meu PC? Parece-me que ter partições separadas é lógico e não vejo por que tudo isso aconteceu./data
partição que é mesclada.This situation was improved with Android 3.0: /data and /mnt/sdcard are now pointing to the same parition
. Apenas para sua informação, isso NÃO é verdade em pelo menos um telefone com Android 4.0 (Pantech Burst), onde/data
há uma partição ext4 de 1 GB e/mnt/sdcard
uma partição FAT32 de 12 GB.Afastar a montagem de SD externo
/mnt/sdcard
não tem mérito técnico, é a maneira do Google ajudar os fornecedores de hardware a criar um ponto de diferenciação para telefones com mais memória interna.Não há razão para que os aplicativos tenham que encontrar uma maneira de localizar o cartão externo quando
/mnt/sdcard
estava claramente o local onde o sdcard deveria estar e a maneira indefinida do Google de carregar o cartão SD externo é outro enredo pouco amigável para o consumidor, para tornar o cartão SD externo menos útil em dispositivos Android mais recentes. Não há motivo para isso/data
e/mnt/sdcard
teve que ser mesclado na mesma partição na versão mais recente do Android, exceto pelo fabricante para diferenciar telefones com maior memória interna de unidades de menor custo e menos memória interna. Mesmo que a fusão tivesse que ser feita, o Google poderia ter definido claramente um PADRÃOnovo ponto de montagem para os cartões SD externos, em vez de deixá-lo completamente vago. Isso está funcionando completamente contra a prevenção de "segmentação" adicional do ecossistema Android por um design desajeitado para ajudar na diferenciação de fornecedores de telefones de última geração com unidades de menor custo com menos memória interna.Os binários de aplicativos Android são pequenos, os telefones com 1 a 2 Gigs de memória interna devem ter espaço mais do que suficiente para centenas de aplicativos, e todos os dados grandes podem ser guardados com segurança em um cartão SD externo. Mas os fornecedores perceberam que precisavam ter uma maneira de diferenciar seu produto final mais alto, e alegar que uma memória interna mais alta se tornou parte desse esquema e prejudicar a utilidade da memória externa é a outra parte integrada que esse esquema exigia para que ele funcionasse completamente. API menos útil para encontrar cartões SD externos e pontos de montagem não padronizados.
Portanto: não, montar o cartão SD em um local que
/mnt/sdcard
não seja nada além de uma estratégia de negócios para vender novos telefones com preços mais altos na versão mais recente do Android, nada mais que isso. Imagine que, se o Nexus 4 de 8 GB e o de 16 GB do Nexus puderem usar 64 GB de cartão sd externo para aplicativos e mídias, existe uma razão para alguém comprar a versão de 16 GB? Esses 8 GB extras de memória NAND certamente não valem US $ 50 de diferença de preço se estiverem envolvidos cartões SD externos. Como a maioria dos componentes de um smartphone deve ser praticamente a mesma (RAM, processador, rádios), a única área que resta para obter mais margem de lucro é o espaço de memória interna e, portanto, o estranho ponto de montagem de memórias externas.Todo mundo também percebeu a ausência de suporte externo a SD da safra atual de dispositivos Android com a marca "Google"? Essa tendência continuará se expandindo nos dispositivos Android "de primeira linha". O suporte externo ao cartão SD foi uma diferenciação importante para os dispositivos Android ultrapassarem o domínio do iPhone no mercado móvel. Agora, com a decisão do Android suprema no jogo de números, há pouca necessidade de que essa prática de redução de lucros seja mantida por muito mais tempo.
Não vou me surpreender com o Android 5.0, o suporte ao cartão SD externo seria uma coisa do passado. Como se é difícil para os aplicativos encontrar o cartão SD externo, a maioria dos programas simplesmente usa os locais
/data
e os/mnt/sdcard
locais conhecidos . Com a maioria dos aplicativos usando mais e mais dados armazenados para sua operação, uma estratégia vibrante de marcação de produtos é criada a partir do nada "simplesmente não montando o cartão SD externo em/mnt/sdcard
.fonte
/data
e/mnt/sdcard
", como vejo claramente um motivo: Evitando a fragmentação do armazenamento interno./sdcard/external_sd
no LG P880), o backup do "armazenamento compartilhado" inclui os dois e cria um grande arquivo. Não há como fazer backup do SD interno apenas em uma abordagem fácil. O que não faz muito sentido, pois existem maneiras muito mais fáceis de fazer backup do cartão externo. Um fato que me deixa louco, como eu tenho o dispositivo mencionado ...Você deve estar ciente (se estiver enraizado) de que pode acessar o /system/etc/vold.fstab e trocar os pontos de montagem por / sdcard e /mnt/external_sd..... Isso permitirá que o seu sdcard esteja no / sdcard conforme o esperado e o "armazenamento interno" restante será montado em / mnt / external_sd ou se você preferir / sdcard / external_sd /
fonte