Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

App fecha depois de um tempo de uso

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
alancunha
Novato
Novato
Reações: 0
Mensagens: 2

App fecha depois de um tempo de uso

Mensagem por alancunha » Qua Mai 18, 2016 10:19 am

galera to com problema no meu app para android, vou resumir, quando o usuário acaba uma fase ele volta para o menu principal e começa tudo de novo. Depois de umas 13 vezes o app fecha sozinho, a impressão que da é que como tivesse sobrecarregando a memoria, mas todas as instancias permanentes são destruídas antes de voltar a tela principal. no debug quando fecha aparece esse erro: 
05-18 09:58:49.930 20481 20481 F DEBUG   : *** *** *** *** *** *** *** *** *** *
** *** *** *** *** *** ***
05-18 09:58:49.931 20481 20481 F DEBUG   : Build fingerprint: 'motorola/quark_re
tbr/quark_umts:6.0.1/MPG24.107-61/36:user/release-keys'
05-18 09:58:49.931 20481 20481 F DEBUG   : Revision: 'p4a0'
05-18 09:58:49.931 20481 20481 F DEBUG   : ABI: 'arm'
05-18 09:58:49.932 20481 20481 F DEBUG   : pid: 12885, tid: 12897, name: GLThrea
d 4370  >>> com.yoyogames.runner <<<
05-18 09:58:49.932 20481 20481 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAP
ERR), fault addr 0x4
05-18 09:58:49.990 20481 20481 F DEBUG   :     r0 00000000  r1 000000ce  r2 dead
c0de  r3 baadb00b
05-18 09:58:49.990 20481 20481 F DEBUG   :     r4 a077fb7c  r5 0015f900  r6 0000
0001  r7 00000000
05-18 09:58:49.990 20481 20481 F DEBUG   :     r8 00000000  r9 2777d810  sl 0000
0001  fp b6d86ec0
05-18 09:58:49.990 20481 20481 F DEBUG   :     ip b6d82624  sp b3b620f0  lr b6d6
2e7f  pc a0640ae4  cpsr 40030010
05-18 09:58:50.022 20481 20481 F DEBUG   :
05-18 09:58:50.022 20481 20481 F DEBUG   : backtrace:
05-18 09:58:50.022 20481 20481 F DEBUG   :     #00 pc 001ccae4  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (MemoryManager::_Alloc(int, char const*, int
)+40)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #01 pc 001ccb74  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (MemoryManager::Alloc(int, char const*, int,
 bool)+20)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #02 pc 00137734  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (CBitmap32::CBitmap32(IBitmap*, bool, bool,
int)+228)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #03 pc 00137cf0  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (CBitmap32::CBitmap32(IBitmap*, bool, bool,
bool)+104)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #04 pc 0018d3ac  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (CSprite::LoadStrip(IBitmapLoader*, bool, bo
ol, int, bool)+564)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #05 pc 0018d5cc  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (CSprite::LoadFromData(void*, int, int, int,
 bool, bool, bool, int, int, bool)+196)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #06 pc 0018d754  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (CSprite::LoadFromPNGData(void*, int, int, b
ool, bool, bool, int, int, bool)+120)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #07 pc 0018d820  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (CSprite::LoadFromFile(char*, int, bool, boo
l, bool, bool, int, int, bool)+180)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #08 pc 00192128  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (Sprite_Add(char*, int, bool, bool, bool, bo
ol, int, int)+828)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #09 pc 00108630  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (F_SpriteAdd(RValue&, CInstance*, CInstance*
, int, RValue*)+248)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #10 pc 000bfbb8  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (DoCall(unsigned int, unsigned char*, unsign
ed char const*, VMExec*)+204)
05-18 09:58:50.022 20481 20481 F DEBUG   :     #11 pc 000c7d34  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (VM::Exec(VMExec&, RValue*)+396)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #12 pc 000c7f90  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (VM::Exec(char const*, CInstance*, CInstance
*, VMBuffer*, RValue*, VMBuffer*, char const*)+260)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #13 pc 000b5678  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (ExecuteIt(CInstance*, CInstance*, CCode*, R
Value*)+180)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #14 pc 000b570c  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (Code_Execute_Special(CInstance*, CInstance*
, CCode*, RValue*)+8)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #15 pc 00187610  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (Script_Perform(int, CInstance*, CInstance*,
 int, RValue*, DynamicArrayOfRValue*)+344)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #16 pc 0010634c  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (F_ScriptExecute(RValue&, CInstance*, CInsta
nce*, int, RValue*)+244)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #17 pc 000bfbb8  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (DoCall(unsigned int, unsigned char*, unsign
ed char const*, VMExec*)+204)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #18 pc 000c7d34  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (VM::Exec(VMExec&, RValue*)+396)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #19 pc 000c7f90  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (VM::Exec(char const*, CInstance*, CInstance
*, VMBuffer*, RValue*, VMBuffer*, char const*)+260)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #20 pc 000b5678  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (ExecuteIt(CInstance*, CInstance*, CCode*, R
Value*)+180)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #21 pc 000b56c8  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (Code_Execute(CInstance*, CInstance*, CCode*
, RValue*)+4)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #22 pc 000d0f2c  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (CEvent::Execute(CInstance*, CInstance*)+48)

05-18 09:58:50.023 20481 20481 F DEBUG   :     #23 pc 000d137c  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (Perform_Event_Object(CInstance*, CInstance*
, int, int, int)+204)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #24 pc 000d13fc  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (Perform_Event(CInstance*, CInstance*, int,
int)+36)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #25 pc 001837bc  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (HandleButton(int)+332)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #26 pc 00183c90  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (HandleMouse()+360)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #27 pc 00182554  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (DoAStep()+456)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #28 pc 001829f8  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (MainLoop_Process()+468)
05-18 09:58:50.023 20481 20481 F DEBUG   :     #29 pc 001db8d0  /data/app/com.yo
yogames.runner-1/lib/arm/libyoyo.so (Java_com_yoyogames_runner_RunnerJNILib_Proc
ess+500)
05-18 09:58:50.024 20481 20481 F DEBUG   :     #30 pc 00ac33c7  /data/app/com.yo
yogames.runner-1/oat/arm/base.odex (offset 0x60e000)
05-18 09:58:50.950 20481 20481 F DEBUG   :
05-18 09:58:50.950 20481 20481 F DEBUG   : Tombstone written to: /data/tombstone
s/tombstone_01
05-18 09:58:50.950 20481 20481 E DEBUG   : AM write failed: Broken pipe
Quando compilo o app tambem ocorre o problema...ja tentei atualizar sdk e testar em outra versão do GMS e o problema persiste.

Avatar do usuário
Rodrigo Santiago
Colaborador
Colaborador
Reações: 0
Mensagens: 273

Re: APP FECHA DEPOIS DE UM TEMPO DE USO

Mensagem por Rodrigo Santiago » Qua Mai 18, 2016 10:25 am

Me parece que realmente você está excedendo de alguma forma a memória. Você está usando surfaces ou criando sprites ?

obs - Tradução do erro:  é na alocação de objetos e de bitmaps (sprite add ),

Avatar do usuário
Markito
Colaborador
Colaborador
Reações: 0
Mensagens: 50

Re: APP FECHA DEPOIS DE UM TEMPO DE USO

Mensagem por Markito » Qua Mai 18, 2016 10:27 am

Log escreveu:05-18 09:58:49.932 20481 20481 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x4
Falha de segmentação. Isso ocorre quando um programa acessa uma memória fora do escopo reservado pelo sistema. Julgando pelo backtrace, o erro ocorreu depois de carregar algumas imagens (pelas funções CBitmap32, CSprite::LoadFromData, MemoryManager::Alloc) - talvez sejam imagens muito grandes para um dispositivo mobile?

O carregamento constante delas acarretaria problemas com o tempo. Por outro lado poderia ser uma falha do runner do GMS em não liberar corretamente as memórias alocadas previamente ao dar game_restart(). Nos conte mais sobre os objetos persistentes e como o jogo é iniciado :yes:

Avatar do usuário
alancunha
Novato
Novato
Reações: 0
Mensagens: 2

Re: App fecha depois de um tempo de uso

Mensagem por alancunha » Qui Mai 19, 2016 7:29 pm

Galera desculpem a demora, primeiramente o problema foi resolvido!!! bom vamos la, quando minha room é criada carrega os objetos, e nesses objetos utilizo variáveis junto com o "sprite_add"
exemplo:
global.spr_p = sprite_add("\sdcard\Android\Pictures\teste\01.png", 0, 0, 0, 0, 0);
O codigo acima armazena o sprite na variavel "global.spr_p", porem no meu app são criadas varias variaveis para cada sprite, mas ate ai blz tudo é carregado e exibido corretamente.

Quando o jogador morre coloquei para destruir todas as instancias que foram criadas e volta para o menu principal utilizando "room_goto" para recomeçar tudo novamente. O problema como disse anteriormente é que depois de algumas vezes do app "reiniciar" ele fecha sozinho, até mesmo se no lugar do room_goto colocar o game_restart o problema ocorre. Depois de dar uma pesquisada encontrei isto http://docs.yoyogames.com/source/dadios ... elete.html
aqui vai a descrição da função sprite_delete do link acima traduzida:
Esta função irá apagar um sprite do jogo, liberando qualquer memória que estava reservado para ele. Esta é uma remoção permanente, e se o ativo que você excluir foi incluído como parte dos recursos do jogo, nem mesmo reiniciar o jogo (a menos que você fechar o aplicativo primeiro) vai recuperá-lo. Esta é uma função muito importante para aqueles momentos em que você precisa para criar e alterar sprites de recursos externos e deve sempre ser usado para remover os ativos que não são mais necessários por um jogo, ou para limpar um ativo indexado a partir de uma variável antes de re- a atribuição de um outro activo para essa variável.
Pelo o que entendi o sprite_add carrega um sprite de recurso externo como dito na descrição da função. Então para resolver o problema o que fiz foi montar um script com o comando sprite_delete para todas as variáveis que carregaram um sprite da memoria do celular. Exemplo:
sprite_delete(global.farol0);
sprite_delete(global.spr_p);
sprite_delete(global.spr_p1);
sprite_delete(global.spr_p2);
Coloquei o script para executar antes de deletar as instancias e pronto PROBLEMA RESOLVIDO, morri mais de 60 vezes para testar e nenhum problema ocorreu. Agora não sei se sou burro, mas eu nao sabia dessa função. :cheers: Obrigado galera !!

Trancado

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes