Variáveis de ambiente no Mac

Olá,
eu não sei vocês, mas não é todo dia que tenho que configurar uma variável de ambiente no meu mac (geralmente quando recebemos a máquina, configuramos todo o ambiente e depois só quando aparece uma nova máquina e tal), mas toda vez que tenho, eu acabo não lembrando como faço então, é melhor deixar logo aqui registrado! 😉

Edite o arquivo

~/.bash_profile

O arquivo deverá conter algo do tipo:

export ANDROID_HOME=”/Users/usuario/dev/sdk/android-sdk-macosx”

export QUALQUER_HOME=”<qualquer endereco>”

export PATH=$PATH:$ANDROID_HOME:$QUALQUER_HOME

Se quiser recarregar o bash_profile para aquela sessão, basta executar:

source ~/.bash_profile

Bom, é isso, as suas variáveis de ambiente deverão estar no path e prontas para serem usadas! =D

[]’s

Inserindo e atualizando várias tabelas ao mesmo tempo usando PL/pgSQL

Olá pessoal,

esses dias eu me deparei com um probleminha um pouco chato (como sempre), depois de adicionar umas tabelas novas no sistema e atualizar umas outras antigas, teria que efetuar o link entre elas com os dados legados… bom, pare resolver isso, achei por bem criar uma funçãozinho em PL/pgSQL (sim, estou usando o PostgreSQL) para me ajudar. 😉

Segue ai em baixo, um exemplo do que tive que fazer:


create or replace function my_function(table_row my_table) returns void as $$
delegate
    next_id integer := nextval('my_other_table_id_seq');
begin
    insert into my_other_table(id, name) values (next_id, table_row.name);
    update my_table set my_other_table_link = next_id where id = table_row.id;
end;
$$language plpgsql;

Depois de criada a função, basta executá-la:

select my_function(linha) from my_table linha where linha.id between 123 and 456 order by asc;

Essa chamada fará um loop executando a função criada para cada linha resultado da query.

Simples não? 😉

[]’s

Categorias:PL/pgSQL, PostgreSQL

Iniciar emulador android na linha de comando

Olá pessoal,

alguma vez vocês já se sentiram reféns da duplinha Eclipse + ADT? Bom, nunca tinha me sentindo até que um dia, em uma máquina que já estava com muita coisa rodando, precisei abrir o emulador do Android e foi aí que me lembrei: “Putz, vou ter que abrir o Eclipse”. E como vocês sabem, o Eclipse não é a ferramenta mais leve do mundo…

Bom, deixando a conversa fiada para lá, basta executar 3 (o último é opcional).

  1. Vá no diretório onde as imagens dos seus emuladores estão salvas (no OSX seria em /Users/<seu usuário>/.android/avd) e veja a listagem de imagens (cada imagem tem 2 arquivos, um .avd e outro .ini). Copie o nome da imagem (sem a extensão) que você quer abrir.
  2. Vá no diretório onde você instalou o sdk do Android e entre no subdiretório “tools” (ex.: ANDROID_HOME/tools) e execute o comando “emulator -avd <nome copiado no passo 1>”.
  3. (opcional) Caso queira, você também pode abrir o DDMS (Dalvik Debug Monitor) para você poder olhar os logs do emulador. Para tal, dentro do mesmo diretório do passo 2, basta digitar “ddms”.

Pronto, dessa forma você consegue abrir um emulador e observar o log sem ter que abrir o Eclipse! =D

[]’s

Cordova 2.1 + ChildBrowser Plugin + iOS 6

Olá pessoal,

acho que se você chegou no meu blog é porquê você deve ter perdido um bom tempo procurando por uma solução para o problema do ChildBrowser Plugin do Cordova (Phonegap) 2.1 + iOS 6, então vou ser bem breve!

Git do Plugin: https://github.com/phonegap/phonegap-plugins/tree/master/iOS/ChildBrowser

Na documentação do Plugin, há no código de exemplo a chamada para o plugin é:

cb.showWebPage(“http://google.com&#8221;);

mas note também que há, um pouco acima, ensinando como usar o plugin:

Cordova.exec(“ChildBrowserCommand.showWebPage”, “http://www.google.com” );

Sim, o código de exemplo não funcionará, mas o método acima sim! Boa sorte! 😉

ClassNotFoundException em projeto Android

Olá pessoal,

Estou postando isso aqui pois é algo que me deu bastante dor de cabeça e como vocês sabem, se eu já passei por isso, não há motivos para vocês sofrerem também né? 😉

Tive que atualizar uma aplicação para Android que eu tinha feito há um bom tempo atrás e até aí nada de anormal. Reinstalei o Eclipse com o ADT e todas as ferramentas necessárias e tal, baixe o código da aplicação e fiz tudo aquilo para rodar a apliação no emulador. Tranquilo!

Imagine qual foi minha reação ao executar a aplicação e a mesma “crashear” quando inicializada! Fui ver o log e vi que havia um:

06-07 15:50:19.249: E/AndroidRuntime(580): Caused by: java.lang.ClassNotFoundException: com.ajudante.MyActivity. in loader dalvik.system.PathClassLoader[/data/app/com.ajudante-2.apk]

A Activity estava lá, a declaração no AndroidManifest.xml também estava correta (cheguei a ficar “brincando” de alterar o nome do pacote, e vários “truquezinhos” que ensinam pelos fóruns).

Nada dava certo, até que lendo uns posts pela net, descobri que após as versão 17 do sdk, era necessário, ter uma pasta “libs” e não “lib” onde os jars deveriam ser adicionados, lembrando, é claro, de removê-los da declaração de bibliotecas do projeto. Aparentemente, ao colocar os jars, dentro dessa nova pasta (no meu caso, apenas alterei o nome), as mesmas são referenciadas como “Android Dependencies”. 

Ah, ta…

E funcionou? Como um passe de mágica! =D

Pois bem garotada, lembrem-se de alterar suas pastas “lib” para “libs” e remover jars adicionados manualmente que você não terá mais esse ClassNotFoundException, mesmo que a classe não encontrada seja do próprio projeto e não de uma das bibliotecas usadas.

[]’s

Fonte: StackOverflow

[Android] – Acessando base de dados do emulador

Olá pessoal,

acho que pelo nível do último post, vocês devem ter notado que tenho dando uma olhada no desenvolvimento para Android né? Pois bem, a última coisa que me deu um certo trabalho foi ao usar a base de dados. Não sei se vocês sabem, mas tanto o iOS (iPhone e iPod Touch) possuem um banco de dados sqlite rodando nativamente.

Pois bem, assumindo então que você já sabe como criar então suas tabelas e acessá-las como então que você pode verificar se os dados estão sendo salvos corretamente? Uma das formas é você criar testes unitários que testará a sua classe helper, agora se você for um pouco mais preguiçoso, você simplesmente pode acessar o banco e fazer um select nas tabelas e ver o resultado né? 😉

Então, como conectar ao banco que está no emulador? o.O

Bom, existem 2 maneiras simples de fazer isso:

1 – Vá no seu ANDROID_HOME (o diretório onde está salvo o SDK do Android) e procure pela ferramenta “adb” (se estiver no path do seu computador é possível que ao digitar “adb” no shell você já consiga executá-lo). Certificando que o seu emulador deverá estar rodando, digite:

./adb -e shell

sqlite3 /data/data/com.seuprojeto/databases/nomesuabase

Se você executou corretamente, você agora estará executando o sqlite3 (apontando para a base de dados da sua aplicação) de dentro do shell do emulador. Basta executar os comandos normais! =D

2 – A maneira que eu acho mais simples. Baixe um editor gráfico para sqlite3 eu recomendo um bem simples que eu estou usando, o SQLite Database Browser. Depois vá no seu Eclipse (supondo que você esteja usando o Eclipse para desenvolver para Android) e vá para a perspectiva “DDMS”.

Ao abrir a perspectiva, é possível então você ir em “File Explorer” e procurar o arquivo da base de dados (lembra do caminho que a gente digitou na opçao anterior?) e copiar a base para o seu computador e então abri-lo usando o editor gráfico que você escolheu! 😉

Acho que é isso, espero que essas dicas sejam úteis para vocês assim como está sendo para mim! =D

[]’s

Categorias:Android, Eclipse Tags:,

[Android] – “Debug Certificate expired”

Olá pessoal,

não sei de quantos que leem o que eu escrevo aqui programam para Android, mas de qualquer forma (e como o blog é meu) achei interessante apresentar aqui um erro que acabou de me acontecer aqui no Eclipse quando eu tentei retomar um antigo projeto meu:

Error generating final archive: Debug Certificate expired on 4/7/11 6:06

Depois de pesquisar um pouco (em inglês), acabei de descobrir que para resolver basta apagar o arquivo “debug.keystore” que está dentro da pasta (escondida) .android.
Para aqueles usuários (linux ou osx) mais preguiçosos, basta copiar e executar a seguinte linha de comando:

rm ~/.android/debug.keystore

Ah, não esqueçam de limpar o projeto no Eclipse para que o mesmo gere outro arquivo “debug.keystore”.

[]’s

Fonte: StackOverflow

Categorias:Android, Eclipse, Linux, OSX