SL4A - Guia rápido
O Android é um sistema operacional baseado em Linux, projetado principalmente para dispositivos portáteis como smartphones e tablets. O Android é mais do que um sistema operacional. É uma pilha de software que oferece muitos recursos para usuários, desenvolvedores e fabricantes.
Versão Android | Características |
---|---|
Android (Alpha) 1.0 | Primeira versão do Android |
Android 1.5 (Cupcake) | Adicionada opção de rotação automática, recurso de copiar e colar adicionado ao navegador da web |
Android 1.6 (donut) | Pesquisa por voz e caixa de pesquisa foram adicionadas |
Android 2.0 / 2.1 (Éclair) | Suporte para Bluetooth 2.1 |
Android 2.2 / 2.2.3 (Froyo) | Suporte para Adobe Flash 10.1 |
Android 2.3 / 2.3.7 (Gingerbread) | Chamadas pela Internet, seleção de palavras com um toque e copiar / colar |
Android 3.0 / 3.2.6 (Honeycomb) | Esta versão está disponível apenas para tablets. As características incluem suporte para processadores multi-core, capacidade de criptografar todos os dados do usuário |
Android 4.0 / 4.0.4 (sanduíche de sorvete) | Botão virtual na IU, capacidade de desligar aplicativos que usam dados em segundo plano |
Android 4.1 / 4.3.1 (Jelly Bean) | Baseado no Linux Kernel 3.0.31? Interface de usuário mais suave, transferência de dados Bluetooth para Android Beam |
Android 4.4 / 4.4.4,4.4W / 4.4W.2 (KitKat) | Integração com armazenamento em nuvem, sensores integrados, tela de bloqueio de arte |
Android 5.0 / 5.1.1 (Lollipop) | Gerenciamento aprimorado de RAM e bateria, correções para fechamento repentino de aplicativos, problemas com conexões sem fio, notificações, etc. |
É de código aberto e favorável aos negócios. O usuário pode optar por substituir os aplicativos integrados por aplicativos de sua escolha. Muitas versões do Android foram lançadas desde seu lançamento original.
A pilha de software Android é composta por diferentes camadas, cada camada manifestando um comportamento bem definido e fornecendo serviços específicos para a camada acima dela. A figura a seguir apresenta uma ampla arquitetura do Android com seus componentes principais.
Kernel do Linux
O Android é construído com base no código do kernel Linux modificado para rodar em sistemas embarcados em comparação com o sistema Linux tradicional. Drivers de hardware para muitos dispositivos comuns são integrados ao kernel, garantindo assim a portabilidade do dispositivo. É baseado em um modelo seguro de permissão baseado no usuário, que evita que um aplicativo leia as informações de outro aplicativo ou interfira em sua execução (por exemplo, CPU, memória, dispositivos etc.).
Acesso baseado em ID de grupo a recursos de rede e Bluetooth, logger, alarme, gerenciamento de energia, assassino de pouca memória, mecanismos Binder IPC são alguns aprimoramentos notados no kernel.
Bibliotecas e tempo de execução
Isso forma a segunda camada da arquitetura. Inclui um conjunto de bibliotecas C, C ++ otimizadas por hardware, também chamadas de camada nativa. Os exemplos incluem bibliotecas de mídia, SQLite, SSL, Bionic, WebKit etc.
O Android Runtime é composto por dois componentes diferentes - a VM Dalvik e as bibliotecas principais. O Dalvik VM fornece um ambiente de execução para os aplicativos na plataforma Android. O conjunto de bibliotecas centrais fornece a maioria das funcionalidades disponíveis nas APIs Java.
Application Framework
Esta camada disponibiliza as Bibliotecas como serviços aos aplicativos. Alguns dos componentes mais importantes nesta camada incluem Gerenciador de locais, Gerenciador de recursos, Gerenciador de atividades e Gerenciador de notificações.
Formulários
Por padrão, o Android vem com um rico conjunto de aplicativos, incluindo o navegador, programa SMS, calendário, gerenciador de contatos, mapas etc. O Google Play oferece alternativas para esses aplicativos, se o usuário desejar.
Blocos de construção
Um aplicativo pode fazer interface com o sistema com quatro blocos de funções. Eles são os seguintes -
Activities- As atividades representam uma única tela que o usuário vê ou com a qual interage visualmente. Por exemplo, um aplicativo de email pode ter uma atividade que mostra uma lista de novos emails, outra atividade para escrever um email e outra atividade para ler emails.
Services- A maior parte do processamento é feita por esses serviços para seu aplicativo. É a lógica por trás da interface do usuário. Por exemplo, um serviço pode reproduzir música em segundo plano enquanto o usuário está em um aplicativo diferente ou pode buscar dados pela rede sem bloquear a interação do usuário com uma atividade.
Broadcast Receivers- Um componente que pode ser registrado para ouvir eventos do sistema ou aplicativo e emitir notificações sobre o mesmo. Uma instância de transmissão originada do sistema é um 'low battery notification'enquanto uma transmissão em nível de aplicativo pode ser um'download successful'notificação.
Content Providers- Um provedor de conteúdo gerencia e ajuda você a compartilhar dados entre vários aplicativos. Por exemplo, um provedor de conteúdo pode ser usado para compartilhar os dados dos contatos.
Esses componentes interagem entre si por meio de mensagens chamadas Intents.
O script Android é uma ferramenta útil para tarefas simples, como automação e prototipagem, em comparação com o uso da linguagem de programação Java para o mesmo. A camada de script para Android (SL4A) fornece uma plataforma para várias soluções de script na plataforma Android.
O que é SL4A?
A camada de script para Android (SL4A) é uma biblioteca que fornece uma plataforma para escrever scripts simples para automatizar tarefas em um dispositivo Android usando linguagens diferentes de JAVA.
SL4A, originalmente chamado Android Scripting Environment (ASE), foi anunciado pela primeira vez no blog de código aberto do Google em junho de 2009. O projeto viu a luz do dia principalmente por meio dos esforços de Damon Kohler e cresceu por meio das contribuições de outros desenvolvedores.
Suporta as linguagens de script mais populares. Isso inclui -
- Beanshell 2.0b4
- JRuby 1.4
- Lua 5.1.4
- Perl 5.10.1
- PHP 5.3.3
- Python
- Rhino 1.7R2
- Javascript
- TCL
Por que SL4A - Linguagens de Scripting Vs JAVA
Uma das primeiras perguntas que provavelmente se faria é: “Why use SL4A instead of Java?”
Em primeiro lugar, nem todo mundo é fã de Java. Linguagens de script fornecem um ambiente de programação fácil em comparação com Java.
Em segundo lugar, a linguagem requer o uso de um loop de design de edição / compilação / execução. Isso significa que você edita, recompila e executa o aplicativo sempre que desejar alguma modificação. Pelo contrário, os scripts são interpretados e executados em tempo real. Além disso, o SL4A ainda permite, em muitos casos, reutilizar o código escrito para um ambiente de desktop.
A figura a seguir ilustra scripts escritos em Python voltados para SL4A e em Java, respectivamente.
SL4A tem três componentes principais. Eles são os seguintes -
- Intérpretes de script
- Cliente Android RPC
- Facades
Neste capítulo, discutiremos mais sobre esses três componentes.
Intérpretes de script
SL4A atua como um host de script. Suporta muitas linguagens de script como Python, Ruby, Lua, BeanShell, JavaScript e TCL. SL4A pode ser estendido incorporando novas linguagens de script dinamicamente, desenvolvendo um novo interpretador SL4A para essa linguagem de script.
Cada script é executado em sua própria instância do interpretador. Conseqüentemente, vários scripts podem ser executados simultaneamente sem afetar uns aos outros.
Cliente Android RPC
Os scripts em execução na instância do intérprete se comunicam com o aplicativo SL4A por meio do Android Proxy RPC Client. O cliente estabelece umRemote Procedure Call (RPC)conexão com SL4A e permite que os scripts interajam com o Android Framework. As fachadas SL4A facilitam essa comunicação. Os dados são enviados comoJSON cargas úteis.
Clientes Android RPC são fornecidos para todas as linguagens de script suportadas. Os módulos do cliente podem ser obtidos no site SL4A emhttps://code.google.com.
Fachadas
A fachada simplifica o acesso do script à API Android subjacente. SL4A expõe a API Android Framework para scripts por meio de um amplo conjunto de fachadas, como AndroidFacade, BluetoothFacade, ActivityManagerFacade, CommonIntentsFacade, etc.
A funcionalidade SL4A oferece uma cesta de funcionalidades ricas como câmera, localização, gerenciador de bateria, reprodutor de mídia, gravador de mídia e muito mais.
Usando SL4A
O sistema SL4A é adequado para os seguintes tipos de tarefas -
RAD programming- Com SL4A, é possível usar a abordagem Rapid Application Development (RAD) para criar um aplicativo protótipo rapidamente. Você pode criar um aplicativo Android completo se a viabilidade da ideia for confirmada.
Test scripts - Pode ser usado para escrever scripts de teste.
Building Utilities - Scripts de utilitários ou ferramentas que executam pequenas tarefas ou automatizam certos aspectos de tarefas repetitivas podem ser construídos usando SL4A.
Python tem uma biblioteca padrão, que inclui uma ampla variedade de rotinas que ajudam a codificar e reutilizar esses códigos facilmente. UMAModule é um arquivo Python que possui definições de variáveis e um conjunto de rotinas ou funções relacionadas.
Alguns do núcleo Modules fornecidos pela biblioteca Python são os seguintes -
Built-in Functions and Exceptions- O Python importa esses dois módulos quando é inicializado e torna seu conteúdo disponível para todos os programas. O módulo integrado define funções integradas comolen, int, range, enquanto o módulo de exceções define todas as exceções integradas.
Operating System Interface Modules - O módulo OS disponibiliza as funções que permitem realizar operações no nível do sistema operacional por meio de scripts.
Type Support Modules- Módulos de suporte de tipo incluem módulo de string - para implementar, operações de string comumente usadas; módulo matemático fornece operações matemáticas etc.
Regular Expressions- Expressões regulares são padrões de string escritos em uma sintaxe específica, que podem ser usados para combinar ou extrair strings ou substrings. O módulo re fornece suporte Regex para Python.
Language Support Modules- O módulo sys fornece acesso a várias variáveis do interpretador, como o caminho de pesquisa do módulo e a versão do interpretador. O módulo do operador fornece equivalentes funcionais para muitos operadores integrados. O módulo de cópia permite que você copie objetos. Finalmente, o módulo gc oferece mais controle sobre os recursos do coletor de lixo no python 2.0.
Sobre JSON
O JavaScript Object Notation (JSON) é um formato de intercâmbio de dados. Embora muitas linguagens de programação suportem JSON, é especialmente útil para aplicativos baseados em JavaScript, incluindo sites e extensões de navegador. JSON pode representar números, booleanos, strings, null, arrays (sequências ordenadas de valores) e objetos (mapeamentos de valores de string) compostos por esses valores (ou de outros arrays e objetos).
Este capítulo detalha o procedimento para configurar seu ambiente de desenvolvimento. Também discute como configurar seu dispositivo para usar SL4A.
Ambiente de desenvolvimento
Você deve baixar e instalar vários pré-requisitos antes de começar a desenvolver com SL4A.
Kit de Desenvolvimento Java (JDK)
Para começar, você deve ter uma versão recente do JDK (JDK 5 ou superior) instalada em seu sistema.
Para confirmar se uma versão compatível do JDK instalada está disponível para o ambiente, execute o seguinte na linha de comando ou terminal do console, da seguinte forma -
$javac –version $java –version
Note - Defina a variável de ambiente PATH para a pasta jdk / bin
Pitão
É provável que o Python esteja instalado no Mac OS X e Linux, por padrão. O sistema operacional Windows, por padrão, não tem o Python instalado. Python pode ser baixado dehttp://python.org.
Depois de instalado, modifique o caminho do Windows para adicionar o diretório Python.
Para verificar se o Python está instalado em seu sistema, abra a janela do terminal e digite Python.
Arquivo Android.py
O único arquivo adicional que é necessário baixar é o android.pyArquivo. Inclua uma cópia deste arquivo em / Lib / site-packages no diretório de instalação do Python. Este arquivo inclui módulos Python para desenvolvimento Android.
Android SDK
Uma série de ferramentas são fornecidas com o Android SDK. A primeira etapa é baixar o arquivo de instalação apropriado para o seu sistema operacional. Instaladores para Mac OS X, Linux e Windows estão disponíveis. O instalador do SDK pode ser encontrado emhttps://developer.android.com/sdk.
O ambiente de desenvolvimento discutido aqui é o Windows. O Google fornece um arquivo zip e um executável para instalar o SDK no Windows.
Instalando Eclipse em uma máquina de desenvolvimento
O Eclipse foi desenvolvido como um Ambiente de Desenvolvimento Integrado (IDE) extensível escrito na linguagem Java. Requer uma instalação do Java para funcionar. Eclipse vem em muitos sabores - Classic, Galelio, Luno, Mars, Neon, etc.
Ele é distribuído em um único arquivo .zip. Tudo que você precisa fazer é descompactar o conteúdo do programa. A pasta extraída possui um arquivo Eclipse.exe. Clique duas vezes no arquivo para iniciar o programa.
Instalando SL4A
Às vezes, você pode querer escrever scripts no dispositivo e executá-los. A camada de script para Android ajuda a conseguir o mesmo. Para instalar SL4A em seu dispositivo, siga as etapas abaixo -
Faça o download do SL4A.apk arquivo em seu dispositivo.
Lançar o .apk arquivo na tela de notificações.
Selecione Install na próxima tela para realmente instalar o SL4A.
Como alternativa, se você escolher usar um emulador em vez de um dispositivo Android, instale o SL4A usando o navegador dentro do emulador. A tela inicial de instalação do SL4A em um dispositivo é mostrada abaixo.
Adicionando o intérprete Python
Para instalar o interpretador Python em um dispositivo, siga as etapas abaixo -
Step 1 - Inicie o aplicativo SL4A.
Step 2 - Clique no Menu botão.
Step 3- Uma lista de opções será exibida. SelecioneView.
Step 4 - Selecione o Interpreteropção da caixa de diálogo. CliqueAdd.
Step 5- Uma lista de intérpretes disponíveis para download é exibida. SelecionePython 2.62 (ou melhor).
Para instalar o interpretador Python em um emulador, siga as etapas abaixo -
Step 1 - Certifique-se de que o emulador esteja sendo executado em segundo plano.
Step 2 - Baixe python_for_android_rx.apk.
Step 3 - No shell da linha de comando do terminal, navegue até o local onde o arquivo apk está armazenado e digite o seguinte na linha de comando -
adb install python_for_android_rx.apk
SL4A oferece suporte a mecanismo de script para vários idiomas. Uma lista de alguns arquivos apk específicos de um idioma é mencionada abaixo -
- beanshell_for_android_rx.apk
- jruby_for_android_rx.apk
- lua_for_android_rx.apk
- perl_for_android_rx.apk
- python_for_android_rx.apk
- rhino_for_android_rx.apk
Conectando ao sistema operacional Windows
Step 1 - Baixe e instale o driver USB para Windows.
Step 2 - Configure seu dispositivo -
Inicie o SL4A na tela Todos os aplicativos do dispositivo.
Toque em Menu botão → View.
Escolha os intérpretes da lista.
Toque em Menu botão → Start Server.
Selecione Public (para se conectar por Wi-Fi) ou Private(para conectar por USB).
Step 3 - Adicionar uma variável de ambiente (variável de usuário) AP_PORT e valor 9999.
O Android SDK e o Eclipse foram discutidos nos capítulos subsequentes.
Um kit de desenvolvimento de software que permite aos desenvolvedores criar aplicativos para a plataforma Android. O Android SDK inclui projetos de amostra com código-fonte, ferramentas de desenvolvimento, um emulador e bibliotecas necessárias para construir aplicativos Android. Este capítulo discute o Android SDK e as maneiras de usá-lo para desenvolver o código direcionado ao SL4A.
Componentes SDK
A árvore de diretórios onde você instalou o Android SDK contém uma lista de pastas contendo documentação, código de amostra e uma série de ferramentas. Navegar até o subdiretório de ferramentas revela vários arquivos executáveis.
Discutidos abaixo estão alguns componentes importantes do Android SDK.
SDK Manager
O Android SDK Manager separa as ferramentas, plataformas e outros componentes do SDK em pacotes para fácil acesso e gerenciamento. O SDK pode ser configurado para verificar se há pacotes SDK novos ou atualizados e ferramentas complementares.
Por padrão, o Android Studio não verifica se há atualizações do Android SDK. Para habilitar a verificação automática do Android SDK -
Step 1 - Escolha File → Settings → Appearance & Behavior → System Settings → Updates.
Step 2 - Verifique o Automatically check updates for Android SDK caixa de seleção e selecione um canal de atualização.
Step 3 - Clique OK ou Apply para habilitar a verificação de atualização.
A guia SDK Update Sites exibe os sites que o Android Studio verifica para Android SDK e atualizações de terceiros. Você pode adicionar outros sites que hospedam seus próprios add-ons do Android SDK e, em seguida, baixar os add-ons do SDK desses sites.
Android Emulator
o AVD Managerfornece uma interface gráfica de usuário na qual você pode criar e gerenciar Android Virtual Devices (AVDs), que são exigidos pelo Android Emulator. Um Android Virtual Device (AVD) consiste em uma série de arquivos, incluindo configuração e armazenamento virtual exigido pelo emulador. Você pode criar quantos AVDs desejar para simular diferentes dispositivos.
As etapas a seguir podem ser usadas para criar um AVD no Eclipse -
Step 1 - Selecione Window → AVD Manager.
Step 2 - Clique New.
Step 3 - Digite o nome do AVD, escolha o alvo e especifique valores para os outros recursos.
Step 4 - Clique Create AVD.
Para dispositivos com teclado, há um conjunto padrão de mapeamentos do teclado do host para ações no dispositivo. O padrãoEmulator key mappings são -
Chave do emulador | Mapeamento no dispositivo host |
---|---|
BUTTON_CALL | F3 |
BUTTON_HANGUP | F4 |
BUTTON_HOME | Casa |
BUTTON_BACK | Escapar |
BUTTON_MENU | F2, PageUp |
BUTTON_STAR | Shift + F2, PageDown |
BUTTON_POWER | F7 |
BUTTON_SEARCH | F5 |
BUTTON_CAMERA | Ctrl + Keypad_5, Ctrl + F3 |
BUTTON_VOLUME_UP | Keypad_Plus, Ctrl + F5 |
BUTTON_VOLUME_DOWN | Keypad_Minus, Ctrl + F6 |
TOGGLE_NETWORK | F8 |
TOGGLE_TRACING | F9 |
ALTERNAR PARA O MODO TELA CHEIA | Alt-Enter |
BUTTON_DPAD_CENTER | Keypad_5 |
BUTTON_DPAD_UP | Keypad_8 |
BUTTON_DPAD_LEFT | Keypad_4 |
BUTTON_DPAD_RIGHT | Keypad_6 |
BUTTON_DPAD_DOWN | Keypad_2 |
TOGGLE_TRACKBALL | F6 |
SHOW_TRACKBALL | Excluir |
CHANGE_LAYOUT_PREV | Keypad_7, Ctrl + F11 |
CHANGE_LAYOUT_NEXT | Keypad_9, Ctrl + F12 |
ONION_ALPHA_UP | Keypad_Multiply |
ONION_ALPHA_DOWN | Keypad_Divide |
Você pode alterar essas configurações editando o default.keyset arquivo no.android subdiretório.
Android Debug Bridge
ADB, Android Debug Bridge, é um utilitário de linha de comando incluído no Android SDK do Google. O ADB pode controlar seu dispositivo via USB a partir de um computador, copiar arquivos para frente e para trás, instalar e desinstalar aplicativos, executar comandos shell e muito mais.
Se você tiver um emulador em execução e um dispositivo real conectado, você deve especificar onde deseja que os comandos ADB sejam um dispositivo real, use a opção - de para o emulador, use –e. A seguir está a lista de sinalizadores e comandos para ADB.
S.No. | Sinalizadores ADB e descrição |
---|---|
1 | -d Direciona o dispositivo para o único dispositivo USB conectado; retorna um erro se mais de um dispositivo USB estiver conectado. |
2 | -e Direciona o comando para o único emulador em execução; retorna um erro se mais de um emulador estiver em execução. |
3 | -s <serial_number> Direciona o comando do dispositivo USB ou emulador com o número de série fornecido. |
4 | devices Liste todos os dispositivos conectados |
5 | connect <host>:<port> Conecte-se a um dispositivo via TCP / IP |
6 | disconnect <host>:<port> Desconectar de um dispositivo TCP / IP |
S.No. | Comandos ADB e descrição |
---|---|
1 | adb push <local> <remote> Copiar arquivo / dir para o dispositivo |
2 | adb pull <remote> [<local>] Copiar arquivo / dir do dispositivo |
3 | adb sync [<directory>] Se <diretório> não for especificado, as partições / system e / data serão atualizadas. Se for “sistema” ou “dados”, apenas a partição correspondente é atualizada. |
4 | adb shell Executar shell remoto interativamente |
5 | adb emu <command> Execute o comando do console do emulador |
6 | adb logcat Ver registro do dispositivo |
7 | adb forward <local> <remote> Conexões de soquete de encaminhamento |
8 | adb install [-l] [-r] [-s] <file> Envie este arquivo de pacote para o dispositivo e instale-o. (-l encaminhar bloquear o aplicativo) (-r reinstalar o aplicativo, mantendo seus dados) (-s instalado no cartão SD em vez de armazenamento interno) |
9 | adb uninstall [-k] <package> Remova este pacote de aplicativo do dispositivo. -k significa manter os diretórios de dados e cache |
10 | adb bugreport Retorne todas as informações do dispositivo que devem ser incluídas no relatório de bug. |
11 | adb help Mostrar esta mensagem de ajuda |
12 | adb version Mostrar o número da versão |
A concha
Um shell é um programa que escuta a entrada do teclado do usuário e executa ações conforme orientação do usuário. oadbO comando shell fornece ao Unix para enviar comandos shell para um emulador ou dispositivo conectado e exibir os resultados. Também pode ser usado para iniciar um shell interativo localmente.
Para emitir um único comando sem entrar em um shell remoto, use o comando shell como este -
adb [-d|-e|-s <serialNumber>] shell <shell_command>
Ou para entrar em um shell remoto em um emulador / dispositivo -
adb [-d|-e|-s <serialNumber>] shell
Quando estiver pronto para sair do shell remoto, pressione CTRL+D ou digite EXIT.
Serviço Dalvik Debug Monitor
O Android vem com uma ferramenta de depuração, Dalvik Debug Monitor Service (DDMS). Esta ferramenta fornece serviços adicionais, como serviços de encaminhamento de porta, captura de tela no dispositivo, chamada recebida e falsificação de SMS, etc.
Quando o DDMS é iniciado, ele se conecta a adb. Um serviço de monitoramento de VM é criado entre adb e DDMS, quando um dispositivo é conectado. Este serviço notifica o DDMS quando uma VM no dispositivo é iniciada ou encerrada.
Uma vez que a VM começa a funcionar, seu ID de processo é enviado ao DDMS via adb e a adbdaemon abre uma conexão com o depurador da VM. O DDMS agora pode se comunicar com a VM usando um protocolo de conexão personalizado.
Este capítulo irá guiá-lo pelos fundamentos do Eclipse IDE e como configurá-lo para desenvolver scripts Python para Android.
Noções básicas de Eclipse
Eclipse é um aplicativo com muitos recursos e opções. Uma tela de boas-vindas o receberá na primeira vez que iniciar o programa. O Eclipse usa vários conceitos básicos e terminologia para abordar diferentes funções e operações do programa.
Algumas dessas terminologias são explicadas aqui -
Workbench- Identifica a janela geral do aplicativo Eclipse. Ele contém várias janelas filho, cada janela contendo várias guias.
Workspace - Refere-se ao local no sistema de arquivos do seu sistema onde os projetos criados usando o Eclipse serão salvos.
Perspective- É uma preferência pessoal que menus e janelas sejam abertos a qualquer momento. O Eclipse tem várias perspectivas configuradas para uso típico, como escrever código, depurar etc. Você também pode alternar para uma perspectiva diferente quando sua atividade mudar. As perspectivas também são personalizáveis.
Instalando Plugins para Eclipse
É necessário configurar o Eclipse para poder desenvolver aplicativos SL4A. Assim que os pré-requisitos forem instalados com sucesso no host, os seguintes plug-ins para Eclipse devem ser adicionados -
Plug-in ADT para Eclipse (disponível em http://dl-ssl.google.com/android/eclipse/ )
Plugin Python para Eclipse (disponível em http://pydev.org/updates )
As etapas a seguir podem ser usadas para instalar plug-ins no Eclipse -
Step 1 - Clique Help.
Step 2 - Selecione Install New Software.
Step 3 - Clique Add.
Step 4- Especifique o nome e o URL para acessar o plugin. CliqueOK.
Step 5 - Selecione todas as ferramentas e clique Next. A instalação do plugin começa
Intérprete Python no Eclipse
Siga as etapas fornecidas para configurar o Python Interpreter no Eclipse.
Step 1 - Selecione Windows → Preferences.
Step 2 - Vá para PyDev → Interpreter → Python.
Step 3 - Clique no New botão.
Step 4- Especifique um nome para o intérprete. No campo Local, digite o caminho para python.exe. Por exemplo, C: \ Python26 \ python.exe
Step 5 - Clique OK.
SL4A é baseado no Facade Design Pattern para se comunicar com a API Android subjacente. Este capítulo explica o funcionamento do Façade Design Pattern e as diferentes fachadas do SL4A API.
O que é um padrão de design de fachada?
Uma fachada é um objeto que fornece uma interface que simplifica o acesso às interfaces relacionadas no aplicativo. Em outras palavras, uma fachada isola o funcionamento das bibliotecas do cliente e atua como um ponto de entrada para cada nível de subsistema. Assim, os clientes se comunicam apenas por meio de suas fachadas. A ilustração a seguir explica o mesmo.
SL4A e Android API Facades
SL4A hospeda intérpretes para cada idioma que ele suporta. Os intérpretes acessam as APIs Android subjacentes por meio de uma interface chamada de fachada.
A tabela a seguir lista as fachadas de nível superior e a funcionalidade que oferecem -
S.No. | Fachada e descrição da API Android |
---|---|
1 | ActivityResultFacade Ele define como seu script retornará informações como uma atividade. Este método implica que seu script retornará algum tipo de resultado. O tipo de resultado pode ser definido como RESULT_CANCELED (0) ou RESULT_OK (-1) |
2 | AndroidFacade Ele fornece acesso a funções Android comuns, como leitura de entrada, notificações, inicialização de componentes de aplicativos, etc. |
3 | ApplicationManagerFacade Liste todos os pacotes disponíveis e em execução, inicie uma atividade, crie seu gerenciador de tarefas ou encerre um conjunto específico de pacotes. |
4 | BatteryManagerFacade Expõe o gerenciador de bateria e permite rastrear o status da bateria, saúde, tipo de nível, tensão etc. |
5 | BluetoothFacade Fornece acesso a recursos Bluetooth de recursos básicos de conexão ao envio e recebimento de dados ASCII e binários. Esta fachada requer pelo menos API nível 5. |
6 | CameraFacade Este método fornece acesso a todas as funções relacionadas à câmera. Permite tirar uma foto usando a câmera do dispositivo e salvá-la em um caminho especificado. Ele oferece duas funções: cameraCapturePicture e cameraInteractiveCapturePicture. Essas funções são estritamente para usar as lentes na parte traseira do dispositivo. |
7 | CommonIntentsFacade Fornece acesso a intents Android comuns, como abrir uma lista de contatos, fazer uma pesquisa no mapa, iniciar uma atividade por ação etc. |
8 | ContactsFacade Permite acesso a contatos, como fornecer a lista de contatos para escolher um contato, consultar a lista de contatos por atributos e obter uma lista de todos os contatos com seus IDs e atributos. Alguns métodos fornecidos pela fachada incluem contactsGet, pickContact, contactsGetById etc. |
9 | EventFacade O sistema operacional Android mantém uma fila de eventos para passar informações entre aplicativos de forma assíncrona. Esta fachada fornece funções para gerenciar a fila de eventos, como limpar os eventos existentes, postar novos eventos, listar, registrar e cancelar o registro de sinais de transmissão, etc. Exemplos de métodos incluem eventPost, eventClearBuffer, etc. |
10 | EyesFreeFacade Disponível em dispositivos abaixo do nível API 4. Ele permite que os scripts falem usando a tecnologia text-to-speech. Esta fachada foi substituída por TextToSpeechFacade. A única função disponível é ttsSpeak. |
11 | LocationFacade Fornece funções que permitem rastrear a localização atual por GPS ou usando informações sobre a torre de celular que você está usando no momento. Este recurso requer uma conexão ativa com a Internet para fazer a pesquisa real. A fachada fornece métodos como getLastKnownLocation, startLocating, stopLocating, readLocation etc. |
12 | MediaPlayerFacade Permite reproduzir arquivos de mídia, controlar o reprodutor de mídia, consultar o estado atual do reprodutor de mídia e obter informações sobre os arquivos de mídia. mediaIsPlaying, mediaPlayInfo e mediaPlayList retorna o estado atual do reprodutor de mídia. Uma chamada para a função startActivity inicia o reprodutor de mídia. Funções como mediaPlay, mediaPlayPause, mediaPlayClose, mediaPlaySeek, mediaPlayStart e mediaPlaySetLooping são usadas para controlar o reprodutor de mídia. |
13 | MediaRecorderFacade Esta fachada oferece capacidade de gravação de áudio e vídeo. As funções startInteractiveVideoRecording, recorderStartMicrophone, recorderCaptureVideo são usadas para iniciar e iniciar a gravação de áudio / vídeo, respectivamente. Para terminar uma gravação iniciada anteriormente, chame a função recorderStop. |
14 | PhoneFacade Disponibiliza operações básicas do telefone, como rastreamento do estado do telefone, status de roaming, inicialização de chamadas, informações do SIM etc. de forma programática. Exemplos de métodos incluem phoneCallNumber, phoneDialNumber, getCellLocation etc. |
15 | PreferencesFacade Permite acesso às preferências compartilhadas, como obter a lista de preferências existentes e ler, modificar e adicionar novas preferências. Existem três funções suportadas pela versão SL4A r4: prefGetAll, prefGetValue e prefPutValue. |
16 | SensorManagerFacade Permite rastrear dados do sensor, como luz, aceleração, campo magnético e orientação. Para iniciar / parar a detecção, use as chamadas de função startSensing (obsoleto e substituído por startSensingThreshold e startSensingTimed por SL4r4) e stopSensing. readSensors, SensoresGetLight, SensoresReadAccelerometer, SensoresReadMagnetômetro e SensoresReadOrientation são as funções fornecidas por esta fachada. |
17 | SettingsFacade Fornece acesso a diferentes configurações do telefone, como volume da campainha, brilho da tela, modo avião, vibração, volume de mídia etc. As funções fornecidas por esta fachada são checkAirplaneMode, checkRingersilentMode e checkScreenOn (pelo menos API nível 7), getVibrateMode, setScreenTimeout, toggleVibrateMode, setRingerVolume etc. |
18 | SignalStrengthFacade Permite monitorar a força do sinal do telefone. Chame a função startTrackingSignalStrengths para começar a coletar dados. Chame a função readSignalStrengths para iniciar a coleta de dados. Para encerrar o processo, chame a função stoptrackingSignalStrengths. Requer pelo menos API nível 7. |
19 | SmsFacade Possui funções para apagar, ler, marcar e enviar mensagens SMS. Exemplos de funções fornecidas por esta fachada incluem smsMarkMessageRead, smsDeleteMessage, smsSend etc. |
20 | SpeechRecognitionFacade Permite adicionar funcionalidade de reconhecimento de fala ao script. Ele tem apenas uma função chamada reconheceSpeech. |
21 | TextToSpeechFacade Fornece serviços TTS para API4 e posterior. Para que um dispositivo fale, use a função ttsSpeak. Para determinar se a função speak foi concluída, use a função ttsIsSpeaking. |
22 | ToneGeneratorFacade Gera tons DTMF para determinados dígitos. Para usá-lo, você deve chamar a função generateDtmfTones. |
23 | UiFacade Fornece funções para criar elementos de interface do usuário como caixas de texto, caixas de seleção, selecionadores de data, etc. Também permite o uso interativo de páginas HTML. |
24 | WakeLockFacade Fornece funções para criar um wake lock, incluindo wakeLockAcquireBright, wakeLockAcquireDim, wakeLockAcquireFull e wakelockAcquirePartial. |
25 | WebCamFacade Esta fachada requer pelo menos API nível 8. Ela permite o streaming de fluxos MJPEG da câmera do dispositivo frontal para a rede. Para iniciar / parar a webcam, use as funções webcamStart e webcamStop, respectivamente. Para ajustar a qualidade do vídeo durante a transmissão, use a função webcamAdjustQuality. |
26 | WifiFacade Ajuda você a controlar o rádio Wi-Fi em seu dispositivo. Ele permite que os scripts consultem o status da conectividade Wi-Fi, procurem pontos de acesso, conectem e desconectem redes Wi-Fi e mantenham um bloqueio de Wi-Fi durante a execução do script. |
Referir https://code.google.compara uma lista completa de métodos fornecidos por essas fachadas. Os capítulos subsequentes ilustram como criar utilitários usando as funções da API Android Façade.
Uma Interface Gráfica de Usuário (GUI) representa um conjunto de componentes gráficos que permitem ao usuário navegar, acessar e interagir com as funcionalidades do aplicativo.
Existem duas abordagens básicas para a interação do usuário com SL4A, a saber -
Caixas de diálogo como Alerts.
Usar HTML e JavaScript para construir a IU e, em seguida, Python nos bastidores para lidar com qualquer processamento adicional.
Este capítulo explica ambas as abordagens.
Caixa de diálogo Python - GUIs baseadas
SL4A inclui uma fachada de IU para acessar os elementos básicos da IU fornecidos pela API do Android. Essas funções retornam um objeto de resultado como uma tupla nomeada quando chamada. Cada resultado é atribuído a um id único para fins de rastreamento. O segundo elemento é o resultado. Ele representa a entrada do usuário. A tupla também inclui o erro do terceiro elemento para fornecer feedback ao chamador sobre qualquer condição de erro que possa ter sido encontrada. Se nenhum erro for encontrado, este elemento é definido como Nenhum.
S.No. | Função e descrição UiFacade |
---|---|
1 | dialogGetInput Consulta o usuário para uma entrada de texto. title (String) título da caixa de entrada (padrão = valor) message (String) mensagem a ser exibida acima da caixa de entrada (padrão = Insira o valor :) defaultText (String) texto a ser inserido na caixa de entrada (opcional) O resultado é a entrada do usuário ou Nenhum (nulo) se cancelar foi atingido. |
2 | dialogShow Mostrar diálogo |
3 | dialogCreateAlert Crie um diálogo de alerta. title (String)(opcional) message (String) (opcional) |
4 | dialogDismiss Dispensar caixa de diálogo. |
5 | dialogCreateDatePicker Criar caixa de diálogo de seleção de data. year (Integer) (padrão = 1970) month (Integer) (padrão = 1) day (Integer) (padrão = 1) |
6 | dialogCreateTimePicker Crie uma caixa de diálogo de seletor de tempo. hour (Integer) (padrão = 0) minute (Integer) (padrão = 0) is24hour (Boolean) Use o relógio de 24 horas (padrão = falso) |
7 | dialogGetPassword Consulta o usuário para obter uma senha. title (String) título da caixa de senha (padrão = senha) message (String) mensagem a ser exibida acima da caixa de entrada (padrão = Digite a senha :) |
8 | dialogGetResponse Retorna a resposta da caixa de diálogo. |
9 | dialogSetPositiveButtonText Definir o texto do botão positivo do diálogo de alerta. texto (string) |
10 | dialogSetNegativeButtonText Defina o texto do botão da caixa de diálogo de alerta. texto (string) |
11 | dialogSetNeutralButtonText Defina o texto do botão da caixa de diálogo de alerta. texto (string) |
12 | dialogSetSingleChoiceItems Isso cria uma lista de botões de opção. |
13 | dialogSetMultiChoiceItems Isso cria uma caixa de seleção |
14 | dialogCreateHorizontalProgress Crie uma caixa de diálogo de progresso horizontal. title (String) (opcional) message (String) (opcional) maximum progress (Integer) (padrão = 100) |
15 | dialogCreateSpinnerProgress Crie uma caixa de diálogo de progresso do botão giratório. title (String) (opcional) message (String) (opcional) maximum progress (Integer) (padrão = 100) |
16 | addContexMenuItem Adiciona um novo item ao menu de contexto. label (String) etiqueta para este item de menu event (String) evento que será gerado no item de menu clique eventData (Object) (opcional) |
17 | addOptionsMenuItem Adiciona um novo item ao menu de opções. label (String) etiqueta para este item de menu event (String) evento que será gerado no item de menu clique eventData (Object) (opcional) iconName (String) |
18 | webViewShow Exibir um WebView com o URL fornecido. url (String) wait (Boolean) bloquear até que o usuário saia do WebView (opcional) |
19 | clearContextMenu Remove todos os itens adicionados anteriormente ao menu de contexto. |
20 | clearOptionsMenu Remove todos os itens previamente adicionados ao menu de opções |
21 | makeToast Crie uma notificação |
Exemplos
A simple Toast Example
import android
droid = android.Android()
uname = droid.getInput("Enter your name")
print uname
droid.makeToast("Hello %s" %uname.result)
A Horizontal Progress Bar
import android
droid = android.Android()
title = "Progress"
str = "Loading..."
droid.dialogCreateHorizontalProgress(title,str,100)
droid.showDialog()
for x in range(0,99)
time.sleep(0.1)
droid.dialogSetCurrentProgress(x)
droid.dialogDismiss()
Caixas de diálogo Modal vs. Não Modal
Uma caixa de diálogo ou janela modal é filha de outro processo ou janela. Com uma caixa de diálogo modal, o processamento irá esperar ou bloquear até que o usuário interaja com a nova caixa de diálogo.
Um exemplo típico desse caso é uma caixa de diálogo de alerta. O alerta não será fechado até que o usuário execute uma ação.
A imagem a seguir é um exemplo de uma caixa de diálogo modal.
Para resumir, use uma caixa de diálogo modal quando precisar de informações do usuário antes de continuar a execução.
GUIs Python com HTML
SL4A permite a construção de interfaces gráficas de usuário (GUIs) baseadas em CSS, HTML, JavaScript e Python. A abordagem usa HTML e JavaScript para construir a IU, CSS para melhorar a aparência e consistência dos elementos e fontes HTML e Python para lidar com qualquer processamento adicional.
O exemplo a seguir ilustra um exemplo básico de GUI HTML -
1. Speech.html
<html>
<head>
<title>Text To Speech</title>
<script>
var droid = new Android();
var speak = function(){
droid.postEvent("say",document.getElementById("say").value);
}
</script>
</head>
<body>
<form onsubmit = "speak()";return false;”>
<label for = "say">What is your message?</label>
<input type = "text" id = "say"/>
<input type = "submit" value = "Speak"/>
</form>
</body>
</html>
2. txtToSpeech.py
import android
droid = android.Android()
droid.webViewShow(‘file:///sdcard/sl4a/scripts/Speech.html’)
while True:
result = droid.waitForEvent(‘say’).result
droid.ttsSpeak(result[‘data’])
Ambos os arquivos - Speech.html and txtToSpeech.py, deve residir no /sdcard/sl4a/scriptsdiretório no dispositivo. Execute o script python para iniciar o arquivo HTML.
Este arquivo é lançado pelo webViewShowChamada de API. O evento é gerado quando oSpeak botão é clicado.
Aplicativos baseados em e-mail
Os aplicativos baseados em e-mail são um dos utilitários mais comuns disponíveis em um dispositivo móvel. Pode-se usar osendEmail Chamada de API disponível através da fachada SL4A Android.
Esta função leva três parâmetros -
to_address - uma lista de destinatários separados por vírgulas.
title - representa o título da mensagem de e-mail.
message - representa a mensagem a ser enviada.
import android,datetime,smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
droid = android.Android()
serv = ’smtp.gmail.com’
port = 587
mailto = ’chris’
mailfrom = ’charley’
pass = ’pass@123’
msg = MIMEMultipart()
msg[‘Subject’] = ’Tes Mail’
msg[‘To’] = mailto
msg[‘From’] = mailfrom
body = ’This is a test mail!!’
msg.attach(MIMEText(body,’plain’))
smtpCon = smtplib.SMTP(serv,port)
smtpCon.starttls()
smtpCon.login(mailfrom,pass)
smtpSendmail(mailfrom,mailto,msg.as_string())
smtpCon.close()
A biblioteca python que foi usada para construir o programa de e-mail é smtplib. Além disso, usamos a biblioteca de e-mail. Esta biblioteca contém várias funções auxiliares, permitindo-nos construir nossa mensagem na forma correta. omimetypes biblioteca ajuda com a codificação de nossa mensagem.
Scanner Wifi
O código a seguir lista todos os pontos de acesso Wi-Fi disponíveis -
import android, time
def main():
global droid
droid = android.Android()
while not droid.wifiStartScan().result:
time.sleep(0.25)
networks = {}
while not networks:
for ap in in droid.wifiGetScanResults().result:
networks[ap[‘bssid’]] = ap.copy()
droid.dialogCreateAlert(‘Access Points’)
droid.dialogSetItems([‘%(ssid)s,%(level)s,%(capabilities)s’ %
ap for ap in networks.values() ])
droid.dialogSetPositiveButtonText(‘OK’)
dorid.dialogShow()
if __name__=’__main__’:
main()
Registro de chamadas
O código para registros de chamadas é fornecido abaixo.
import android
droid = android.Android()
mylog = droid.getConstants("android.provider.Calllog$Calls").result
calls = droid.queryContent(mylog["CONTENT_URI"],["name","number","duration"]).result
for c in calls:
print c
Um serviço é um componente executado em segundo plano, sem interação direta com o usuário. Ele não possui nenhuma IU (interface do usuário). O serviço é executado em segundo plano indefinidamente, mesmo se o aplicativo for destruído.
Este capítulo descreve os scripts de escrita que realizam tarefas específicas em segundo plano.
Tarefas em segundo plano
SL4A permite que um script seja executado em um terminal ou em segundo plano. Para iniciar um script em segundo plano, escolha o ícone que se parece com uma roda dentada. O script é executado em segundo plano infinitamente. No entanto, pode-se optar por encerrar explicitamente esses serviços.
Lançar em scripts de inicialização
Esses scripts são iniciados sempre que o dispositivo é inicializado. A tela de preferências Iniciar na inicialização é um aplicativo que permite especificar as preferências de inicialização do dispositivo. O utilitário oferece suporte à execução de vários scripts por meio de um script mestre. O script Master inicia os outros scripts.
Gatilhos
Um gatilho define um conjunto de ações que devem ser executadas em resposta a uma ação / evento. Gatilhos podem ser adicionados ou excluídos. O diretório / sdcard / sl4a / scripts permite que você escolha um script a ser executado quando um evento for disparado. A lista de opções que podem acionar seu script inclui bateria, localização, telefone, sensores e intensidade do sinal.
Ações baseadas em orientação
SL4A nos permite executar scripts dependendo da orientação e movimento do dispositivo. O startSensingTimedAPI é usado para determinar a orientação e o movimento do dispositivo.
O seguinte trecho usa a função TTS para notificar o usuário quando o telefone foi colocado com a face para baixo -
import android,time
droid = android.Android()
droid.startSensing()
while True:
res = droid.sensorsGetLight().result
if res is not None and res <=10:
droid.ttsSpeak("Device faced down!!")
time.sleep(5)
Ações baseadas em localização
Biblioteca, igreja são os locais que você pode visitar com frequência e, com certeza, deseja silenciar o telefone quando estiver lá. O SL4A permite que você crie scripts que rastrearão sua localização e realizarão ações específicas.
Gatilhos baseados em tempo / tempo decorrido
Esses gatilhos são usados para realizar ações em uma hora específica do dia. O formato de hora de 24 horas deve ser usado para especificar a hora. Os exemplos incluem um script para definir o alarme, lembretes, etc. Em comparação com um gatilho baseado em tempo, um gatilho baseado em tempo decorrido executa o script após um determinado número de tempo. A opção de soneca em um aplicativo de alarme é baseada neste conceito.
Este capítulo explica as maneiras de empacotar e distribuir scripts usando códigos Eclipse e QR.
Códigos de resposta rápida (QR)
A maioria dos dispositivos Android inclui um leitor de código de barras nativo. SL4A suporta a importação de códigos QR diretamente para o editor. Um código QR só pode codificar 4.296 caracteres de conteúdo. Portanto, esse método de distribuição é adequado para scripts curtos.
Existem vários sites onde você pode colar texto e criar um código QR. No entanto, devemos fazer referênciahttp://zxing.appspot.com/generator para gerar o código QR em nossa ilustração.
As etapas são explicadas abaixo -
Step 1 - Abra o Contents drop-down e escolha Text.
Step 2 - Na primeira linha do Text Content, digite o nome do script (por exemplo, greet.py).
Step 3 - Cole o conteúdo do script abaixo disso.
Step 4 - Escolha o tamanho do código de barras na lista suspensa Tamanho.
Step 5 - Clique em Gerar.
Step 6 - Incorpore a imagem do código de barras resultante ou compartilhe-a.
Assim, o código QR é uma forma eficaz de compartilhar scripts curtos por meio de um blog ou site.
Construir Pacotes de Aplicativos - Eclipse
Os aplicativos Android são distribuídos em um único arquivo / pacote com um.apkextensão. O Pacote Android(.apk)é semelhante a um arquivo .jar ou .zip. Cada .apkcontém vários arquivos obrigatórios que devem estar presentes. O arquivo mais importante é oAndroidManifest.xml.
O arquivo de manifesto faz uma série de coisas -
Declara os componentes do aplicativo.
Identifique as permissões de usuário que o aplicativo requer.
Declara recursos de hardware e software usados ou exigidos pelo aplicativo, como câmera, serviços Bluetooth etc.
Especifica as bibliotecas de API às quais o aplicativo precisa ser vinculado, como a Biblioteca do Google Maps.
As etapas para construir um projeto distribuível, ou seja, .apk em eclipse são ilustrados abaixo -
Baixe e instale o Hg do mercurial - http://mercurial.selenic.com/wiki/Download. Defina a variável PATH para a pasta de instalação.
Crie um clone do repositório SL4A mais recente: Abra o terminal e navegue até o diretório onde o clone deve ser criado. Digite o seguinte clone Hg: https://android-scripting.googlecode.com/hg/android-scripting.
Abra o Eclipse e clique em File/Import/General/ExistingProjetos em Workspace / Next e navegue até o diretório clonado. Clique em Android / OK, selecione tudo e clique em Concluir.
Incluir ANDROID_SDKna lista Classpath Variable clicando em Windows / Preferences / Java / BuildPathVariables / New. Coloque ANDROID_SDK para o nome e seu diretório SDK para a pasta (provavelmente c: \ ProgramFiles \ Android \ android-sdk-windows).
Clique em Project / Build Automatically e em Project / Clean / Clean all Projects / OK.
Para transformar seu script em um APK, faça uma cópia de ScriptForAndroidTemplate(clique com o botão direito / copie e depois clique com o botão direito / cole na mesma área). Um novo projeto aparecerá com o nome Cópia deScriptForAndroidTemplate.
Para conectar este projeto ao seu clone do SL4A, clique duas vezes nele, clique com o botão direito em build.xml / Run As / Ant Build. Renomeie o projeto usando Refatorar / Renomear com qualquer nome que você escolher para o seu projeto e Atualizar / Limpar / Construir o projeto.
Em seguida, clique duas vezes em raw e Refactor / Rename para alterar o nome script.py para your_script_name.py e, em seguida, clique duas vezes em src / com.dummy.fooforandroid / Script.java e altere R.raw.script para R.raw.your_script_name e salve.
Clique duas vezes em srce Refatorar / Renomear para alterar o nome do pacote com.dummy.fooforandroid para your.package.name. Faça o mesmo para gen.
Agora destaque seu projeto e clique em Projeto / Propriedades / Android. Selecione o seu alvo Android e clique emOK.
No final da lista de projetos, clique duas vezes em AndroidManifest.xml. Altere o nome do pacote no manifesto de com.dummy.fooforandroid para your.package.name. Altere sua minSdkVersion de "4" para se adequar ao seu destino Android (este é o nível de API para o seu destino Android mostrado em Projeto / Preferências / Android). Descomente as permissões que você deseja que seu aplicativo tenha (tire <! - no início e -> no final). Definir depuração paraFalse.
Clique com o botão direito em your_script_namee abra com o editor de texto. Exclua o script padrão, substitua-o pelo seu e salve. Em seguida, limpe / construa / atualize seu projeto e execute-o. Se tudo correr bem, clique em Arquivo / Exportar para exportar seu aplicativo como um apk.
Clique Next.
Cada aplicativo Android deve ser assinado digitalmente antes de ser instalado. SelecioneCreate new Keystore, se esta for a primeira vez que você passou por este processo.
Selecione um arquivo para armazenar seu armazenamento de chaves e ele deve ser protegido por senha.
Clique Next. Observe o campo de validade. Você pode criar uma chave válida por qualquer número de anos, de 1 a 99.
A caixa de diálogo final permite que você especifique onde deseja que o arquivo .apk resida. Clique em Concluir.
Pode-se usar o Eclipse ou a ferramenta ADB para testar / instalar o arquivo .apk. Para instalar usandoADB, abra uma janela de terminal, navegue até o diretório de destino .apk e digite o seguinte -
adb install distributable_file.apk