Saltar para conteúdo


Foto
- - - - -

[Tutorial] Download de apps com mais de 30MB do market


  • Por favor inicie sessão para responder
6 respostas a este tópico

#1 AWRyder

AWRyder

    Novato

  • Membros
  • Pip
  • 3 mensagens

Mensagem publicada 07 September 2011 - 22:59

Como já alguns de nós nos apercebemos, o Samsung Galaxy S (E talvez mais telefones mas desconheço) têm uma limitação de downloads do market de 30MB. Qualquer valor maior ele vai dizer que não tem espaço suficiente para fazer o download. Não são muitas as aplicações mas elas existem! Como tal, senti a necessidade de explorar este problema, especialmente depois de ter comprado uma aplicação no market e não a conseguir instalar pois era maior que o "limite".O facto é que após muita pesquisa, não se encontra muitas soluções para este problema, e muito do que se encontra é relacionado com o problema do market dizer também que não tem espaço quando se tenta actualizar uma app. Como tal, e com base no facto que o Android corre numa "base" de linux, decidi explorar o problema e tentar encontrar a solução.Então vamos por partes: O problema:A minha primeira pista foi descobrir que o market usa uma partição de cache onde guarda tudo o que faz download. Essa partição é a que está montada em /cache, e sem grandes surpresas, após correr um "df -h" descobri que essa mesma partição tem um tamanho de 30MB. Ora se foram criar uma partição de apenas 30MB para os downloads do market (e tudo o mais que use a cache), é natural que não se possa fazer download de algo com tamanho maior.Após saber qual era o problema, tentei várias abordagens para o solucionar.A primeira foi imediatamente: "E se tentar reduzir o tamanho de outra partição e aumentar a da cache?" Mas não tive muita sorte pois as minhas estão com o fs EXT4, e o partd do meu sistema android não possui suporte para ext4, para alem do mais... esta seria uma solução um bocado "brusca", eu procurava algo mais simples.Solução: Sem grande conhecimento de todas as funcionalidades do "mount" mas recorrendo ao seu grande --help, descobri um comando que poderia ajudar sem causar grandes mudanças e relativamente simples.A sua função bind permite "linkar" o conteudo de uma pasta noutra. Como por exemplo, o /sdcard é na verdade um link para /mnt/sdcard, ou o /etc para /system/etc.Logo pensei, porque não dizer ao android para em vez de usar a partição de 30MB em /cache, usar uma pasta qualquer, por exemplo, no SD-Card.E assim chegamos finalmente à parte "juicy" da solução, ou seja, a solução propriamente dita. :PAntes de mais aviso que é preciso root' class='bbc_url' title='External link' rel='nofollow external'>http://www.androidpt.info/index.php?title=Root']root para poder executar certos comandos necessários a resolver o problema.Para alem disso, leia este posto todo do principio ao fim e na menor duvida tente esclarece-la. Estes comandos não são particularmente perigosos quando usados neste contexto mas nunca se sabe quão longe os nossos erros nos levam.E finalmente, há muitas maneiras de correr comandos num android, sendo 3 delas:1 - Aplicações que sejam "terminais da linha de comandos". Encontram-se no market, free, de qualidade e rápidas, basta procurar por "terminal".2 - Utilizar o adb' class='bbc_url' title='External link' rel='nofollow external'>http://www.androidpt.info/index.php?title=ADB']adb para enviar comandos para a linha de comandos / shell.3 - Correr um servidor de ssh no telemovel e ligar-se a ele a partir de outro sistema (Ex, a partir do PC, utilizando o putty).Agora que temos acesso à linha de comandos do telemovel, comecemos por partes:
su
- Entra no "modo" de super user ( root' class='bbc_url' title='External link' rel='nofollow external'>http://www.androidpt.info/index.php?title=Root']root ).
mkdir /sdcard/tempcache
- Cria uma pasta no sdcard chamada tempcache, podem-lhe chamar o que quiserem mas sejam meigos. ;- )Para quem não tem SDCard e esteja a utilizar outro possível sistema que não tenha o sdcard interno como o Galaxy S, ou seja, necessite de utilizar outro sitio como o /system, sugiro que procurem como remontar o /system em read write e executar o comando mkdir no /system e utilizar esse caminho em vez daquele do /sdcard.
mount -o bind /sdcard/tempcache /cache
- Monta a pasta tempcache da directoria sdcard em /cache, passando por cima do mount actual que diz que o conteudo de /cache é a tal partição de 30MB.
df -h
- Apenas para confirmar, se procurar no meio dessa informação toda pelo /cache, verá que deverá agora dizer que o tamanho total corresponde ao do sdcard. ( Se não quiser procurar no meio de tantas linhas pode também correr o comando "df -h | grep cache" , sem aspas. )Se tudo correu bem, /cache terá agora muito mais espaço e poderá fazer download de aplicações com mais de 30MB. PS: Não tente fazer isto em cartões de tamanho menor que 30MB. ;-P Hehe.Não vou cobrir neste tutorial como fazer para que estas alterações sejam definitivas, ou seja, se reiniciar o telemóvel, a /cache vai voltar a ter de novo os seus 30MB originais. Eu pessoalmente prefiro assim, mas se quiser pode sempre procurar por como "correr comandos automaticamente ao iniciar o sistema android".Notas finais:Provavelmente existem soluções bem mais simples que esta que falhei em encontrar. Provavelmente sim... Mas esta funciona e devido ao facto de haver tão pouco falado sobre este problema na internet, decidi partilhar.Posso também eventualmente ter cometido alguma "gralha" neste tutorial, sou humano, só peço que me digam caso isso aconteça para eu poder remendar a gralha, assim como aceito qualquer crítica, sugestão, comentário.Tentei não usar muitos termos técnicos para uma compreensão mais fácil mas é quase impossível. Qualquer duvida podem sempre deixar aqui e alguém eventualmente terá a amabilidade de responder. :- )Penso que não me esqueci de nada. Por isso com os meus cumprimentos,AWRyder
  • Online Loan, AustAdmilk, Rebdert e 5 outros gostam disto

#2 hmartinho

hmartinho

    Mestre de Android

  • Former Staff
  • PipPipPipPipPipPip
  • 3626 mensagens

Mensagem publicada 08 September 2011 - 07:43

Obrigado pela partilha, e parabéns pelo tutorial ;)Cumps
-----------------------------------------------------------------
Nothing fails like success.

#3 goodtrance

goodtrance

    Fã de Android

  • Membros
  • PipPipPip
  • 314 mensagens
  • Galaxy Note GT-N7100

Mensagem publicada 08 September 2011 - 08:28

Excelente tutorial http://www.androidpt...tyle_emoticons/AndroidSmall/emo_im_happy.png por acaso já me aconteceu isso numa aplicação qualquer... Para mim era sticky com este tópico!!Obrigado pela partilha!! e sai um karma pelo trabalho!

#4 on.one

on.one

    Mestre de Android

  • Former Staff
  • PipPipPipPipPipPip
  • 5169 mensagens
  • LocalizaçãoAlfragide

Mensagem publicada 08 September 2011 - 09:47

Bom dia,A solução que implementei na rom ONE.PT parece-me mais funcional, não por ser o autor ou por se tratar da rom ONE.PT.Como todas as coisas há sempre prós e contras, e um dos contras é que quando o sdcard esta montado ou o mediascanner a decorrer vão surgir problemas.O solução que implementei é rápida porque usa a onenand, é activada no boot e não tem o problema do mediascanner. Basicamente consiste em criar um loopback filesystem que substitui a partição /cache. O contra deste método será apenas o espaço que ocupa na onenand, mas que me parece um mal menor, pois a onenand tem espaço suficiente para as duas tarefas.De qualquer dos modos a solução apresentada pelo AWRyder é uma excelente iniciativa, e representa um método válido para contornar uma limitação chata do SGS S.Se houver interesse posso elaborar um ficheiro com o método descrito para se poder aplicar em qualquer rom CWM.Um abraço.

Nexus 6 - Stock Android 6.0.1 (MMB29K), no userdata encription, display @ 1080p.


#5 AWRyder

AWRyder

    Novato

  • Membros
  • Pip
  • 3 mensagens

Mensagem publicada 08 September 2011 - 19:20

Bom diaA solução que implementei na rom ONE.PT parece-me mais funcional, não por ser o autor ou por se tratar da rom ONE.PT.Como todas as coisas há sempre prós e contras, e um dos contras é que quando o sdcard esta montado ou o mediascanner a decorrer vão surgir problemas.O solução que implementei é rápida porque usa a onenand, é activada no boot e não tem o problema do mediascanner. Basicamente consiste em criar um loopback filesystem que substitui a partição /cache. O contra deste método será apenas o espaço que ocupa na onenand, mas que me parece um mal menor, pois a onenand tem espaço suficiente para as duas tarefas.De qualquer dos modos a solução apresentada pelo AWRyder é uma excelente iniciativa, e representa um método válido para contornar uma limitação chata do SGS S.Se houver interesse posso elaborar um ficheiro com o método descrito para se poder aplicar em qualquer rom CWM.Um abraço.

Antes de mais quero dar os meus parabens pelo teu trabalho, One, és uma inspiração na minha área de "trabalho" e por acaso tenho usado sempre roms tuas mas nunca me deparei com a tua solução.Peço tambem desculpas por qualquer erro mas estou a utilizar um teclado "esquisito".Quanto à tua solução, é bem melhor que a minha e recomendo-a. A minha continua no entanto a poder ser usada para soluções rápidas e não frequentes, aconselho a não deixar a partiçao de cache desmontada por mais que o necessário.(podem restabelecer os mounts originais simplesmente reiniciando o telefone).Foi o melhor e mais rápido que consegui naquele dia as 4 da manhã.Agradeço os comentários e as apreciações. Eu tentei descrever o problema no tutorial mesmo para aqueles que tambem gostam desta area possam surgir com novas soluçoes ou explorar as existentes. Agradeço de novo ao One todo o seu trabalho e pedia-te apenas que me apontasses na direcçao correcta para saber mais de como implementar o teu método. PS.: Graças a este maravilhástico teclado acabei por ter que escrever de novo o post todo e a certa altura desisti dos acentos. Peço desculpa mas odeio mesmo este teclado. :- P

#6 on.one

on.one

    Mestre de Android

  • Former Staff
  • PipPipPipPipPipPip
  • 5169 mensagens
  • LocalizaçãoAlfragide

Mensagem publicada 08 September 2011 - 21:18

Antes de mais quero dar os meus parabens pelo teu trabalho One, és uma inspiração na minha área de "trabalho" e por acaso tenho usado sempre roms tuas mas nunca me deparei com a tua solução.Peço tambem desculpas por qualquer erro mas estou a utilizar um teclado "esquisito".Quanto à tua solução, é bem melhor que a minha e recomendo-a. A minha continua no entanto a poder ser usada para soluções rápidas e não frequentes, aconselho a não deixar a partiçao de cache desmontada por mais que o necessário.(podem restabelecer os mounts originais simplesmente reiniciando o telefone).Foi o melhor e mais rápido que consegui naquele dia as 4 da manhã.Agradeço os comentários e as apreciações. Eu tentei descrever o problema no tutorial mesmo para aqueles que tambem gostam desta area possam surgir com novas soluçoes ou explorar as existentes. Agradeço de novo ao One todo o seu trabalho e pedia-te apenas que me apontasses na direcçao correcta para saber mais de como implementar o teu método. PS.: Graças a este maravilhástico teclado acabei por ter que escrever de novo o post todo e a certa altura desisti dos acentos. Peço desculpa mas odeio mesmo este teclado. :- P

Boa noite,Se tiveres a ultima rom ONE.PT, basta fazer uso do SGSTools para em 'Apply Script' executar o script 'Virtual.Cache.ON.q.txt'.Qualquer dúvida não hesites.Um abraço

Nexus 6 - Stock Android 6.0.1 (MMB29K), no userdata encription, display @ 1080p.


#7 pinhu13

pinhu13

    Membro

  • Membros
  • PipPip
  • 118 mensagens

Mensagem publicada 29 November 2011 - 08:15

Não tendo essa opção one