Neste artigo falarei sobre a conversão de apps do Android(que estão sobre o formato apk) para o formato do Blackberry Playbook(formato bar). Este artigo é um pouco extenso mas extremamente útil. O processo é divido em três partes: preparação, conversão, assinatura. Vale salientar que muitas aplicações Android ainda não funcionam mesmo após convertidas, e não podem usar certos recursos como câmera(já disponível no OS 2.1 beta), bluetooth, wifi, etc.
Veja lista completa de limitações em:
https://bdsc.webapps.blackberry.com/android/apisupport/
Requisitos:
Java instalado (pode encontrar milhares manuais de instalação para seu sistema na internet)
Android SDK Tools: Faça o download para seu respectivo sistema em:
http://developer.android.com/sdk/index.html Seleciona "Other IDE", para baixar somente o SDK.
Playbook Command Line Tools: o mesmo utilizado para instalar arquivos .bar, faça o download:
https://bdsc.webapps.blackberry.com/android/downloads/fetch/CommandLineTools.zip
Chaves para Assinatura de Pacotes: Solicite as sua em:
https://www.blackberry.com/SignedKeys/codesigning.html : Preencha o formulário, em PIN crie uma senha que será usada na assinatura da App convertida, marque a opção "for Playbook". Depois de enviado os dados você receberá a chave para assinatura(dois arquivos anexos) por Email em no máximo duas horas.
Preparação do Android SDK
Abra o Android SDK manager após instala-lo (ou extraí-lo se estiver no Linux), se for no Windows ele criou um atalho no menu iniciar, se for no linux, acesso a pasta "/android-sdk-linux/tools" e execute o aplicativo "android"(dê permissões de excutável com comando "chmod +x android" e depois execute com o comando "./android"). Uma vez aberta o SDK manager, ele vai atualizar a lista de opções dispónives para download. Depois de atualizar a lista marque as seguintes opções:
Pasta "Tools", opções "Android SDK Tools" e "Android SDK Plataform Tools"
Pasta "Android 2.3.3 (API 10)", opção "SDK Plataform"
Clieque em "install packages", aguarde a instalação e pronto. ja está configurado seu Android SDK. pode fecha-lo.
Extraia agora o Command Line Tools para uma pasta de sua preferência. acesse a pasta extraída "blackberry.tools.SDK/bin". Nela será onde você fará todo o trabalho, será necessário também mover os dois arquivos da Chave de Assinatura recebidos por Email para esta pasta. Abra aqui o Terminal (se no linux) ou o Command (se no windows, basta segurar shift e clicar com o botão direto do mouse, depois selecionar "Abrir janela de comando aqui").
Configurando Assinatura (Primeira Vez)
Essa é a parte mais complicada pois para se instalar arquivos .bar em um Playbook é necessário assina-las, e a configuração para criação do certificado é um pouco grande(pra não dizer exagerada).
SÓ É NECESSÁRIO ESSES COMANDO NA PRIMEIRA VEZ QUE FOR ASSINAR UM APP CONVERTIDO.Para os usuários de linux a partir de agora lembrem sempre de antes de executar os comando darem permissão de execução(comando "chmod +x <comando>") e executar com o "./" seguido do comando (exemplo: comando apk2bar, execute digitando "./apk2bar"). Vamos aos comandos a serem executadas na mesma pasta blackberry.tools.SDK/bin:
#blackberry-signer -csksetup -cskpass SEUPINAQUI
Como é de se esperar, substitua o SEUPINAQUI pelo PIN(senha) cadastrado no formulário de requisição de chaves. Agora vai fazer um procedimento para cada arquivo recebido por E-mail, observe que ambos são arquivos .csj mas o nome muda, um começa com client-RDK e o outro com client-PBDT,
o restante do nome é um codigo gerada para cada pedido de chave.
#blackberry-signer -register -csjpin SEUPINAQUI -cskpass SEUPINAQUI client-PBDT-CODIGOGERADO.csj
Mais uma vez substitua o SEUPINAQUI pela senha PIN e o CODIGOGERADO pelo codigo do seu arquivo client-PBDT(pode simplesmente copiar o nome do arquivo e substituir o final do comando).Agora novamente para o arquivo client-RDK*.csj:
#blackberry-signer -register -csjpin SEUPINAQUI -cskpass SEUPINAQUI client-RDK-CODIGOGERADO.csj
Mais uma vez substitua o SEUPINAQUI pela senha PIN e o CODIGOGERADO pelo codigo do seu arquivo client-RDK(pode simplesmente copiar o nome do arquivo e substituir o final do comando). Atente em ambos os comandos acima ha eventuais erros de conexão com o servidor da RIM, então caso apresente mensagem de erro, tentem novamente.
Agora vamos gerar o arquivo .p12 , que será usado para assinar as apps convertidas:
#blackberry-keytool -genkeypair -keystore QNX.p12 -storepass SEUPINAQUI -dname "cn=NOMEEMPRESAAQUI" -alias author
Substitua o SEUPINAQUI pela senha PIN, e NOMEEMPRESAAQUI por o nome da sua empresa ou coloque qualquer nome. Com isso será gerado o arquivo QNX.p12 que servirá para assinar os apps convertidos. Caso perca esse arquivo QNX.p12 vai ter que fazer tudo de novo, então é bom ter um backup dele.
Conversão
Por incrível que pareça essa é a parte mais fácil. Copie o .apk que deseja converter para a pasta blackberry.tools.SDK/bin, depois abra o Terminal ou a Janela de Comando na pasta e execute o comando abaixo:
#apk2bar <arquivo apk> <pasta do android sdk>
Exemplo:
Air Horn free.apk
Local do Android SDK: C:\program files\Android\android-sdk
#apk2bar "Air Horn free.apk" "C:\program files\Android\android-sdk"
Caso seja apresentado alguma mensagem de erro é indício que o apk não pode ser convertido. Qualquer dúvida pode colocar nos comentários. Se der tudo certo ele vai gerar o arquivo .bar com o mesmo nome de origem.
Assinatura
Apos a conversão e já estar configurado o arquivo QNX.p12 chegou o ultimo passo, a assinatura. Supondo que o arquivo apk era o Air Horn free.apk, foi gerado na conversão o arquivo Air Horn free.bar. Mova o arquivo .bar gerado para uma pasta dentro da pasta bin(pode criar você mesmo). No meu caso criei a pasta "bar" dentro da pasta "bin". Agora executo o comando abaixo:
#batchbar-signer <Pasta com arquivo .bar> QNX.p12 SEUPINAQUI
No meu caso do Air Horn free.apk que esta dentro da pasta bar e minha senha era 12345:
#batchbar-signer bar\ QNX.p12 12345
Caso dê certo vai aparecer na a mesagem no resultado(além de outras informações)
[Air+Horn+free.apk.bar] Signed
Você pode inclusive colocar vários arquivos .bar dentro da pasta para assinatura de uma única vez.
Se tudo der certo o arquivo .bar vai estar pronto para ser instalado, então basta instalar pelos vários métodos disponíveis, como esse:
http://meuplaybook.blogspot.com.br/2012/05/playbook-app-manager-instale-e.html
Pode também acontecer de apresentar erro de conexão com o servidor. Nesse caso tente novamente. Outra possibilidade é de alguem ja ter Assinado o mesmo arquivo, então vai informar que o arquivo "previously signed" e não vai assinar o seu .bar. Nesse caso siga para o opção abaixo(ou procure na net, pois nesses caso geralmente vai achar em algum forum ou no Good E-Reader)
Re-assinar (Re-signe) (Caso o app já tenha sido assinado)
Instale no seu PC o notepad++, fazendo o download pela priemira opção abaixo:
http://notepad-plus-plus.org/download/
Apos instalado ele vai automaticamente abrir, então no programa clique no menu arquivo>abrir e procure pelo seu arquivo .bar, no meu exemplo Air Horn free.bar . Apos abri-lo vai ver no inicio do arquivo mais ou menos como esse:
Package-Author: MeuPlaybook
Package-Author-Id: testEBRaRkVPnpsReKdNs4eKTS4
Package-Name: com.alwaysonpc.android.vnc
Package-Id: testELxDSuWxUsp7Jx3UcZmFMF4
Package-Version: 1.0.15.0
Package-Version-Id: testEFQzi7kIEdIXDNYN9adxXAU
Package-Type: application
Package-Architecture: armle-v7
Application-Name: AlwaysOnPC
Application-Id: testEFh42gUFesBuzJgLgh1Daow
Application-Version: 1.0.15.0
Application-Version-Id: testEFQzi7kIEdIXDNYN9adxXAU
Agora altere somente o
Package-Version e o Application-Version, aumentando um pouco a versão. Por exemplo a versão atual é
1.0.15.0, então tente alterar em ambos o número para
1.0.16.0. Clique no menu arquivo>salvar, depois feche e tente assinar novamente.
Caso ainda dê como resultado "previously signed", abra de novo o arquivo .bar e aumente ainda mais a versão até dar certo. Isso as vezes é necessário porque alguém já fez o que você esta tentado fazer(aumentar a versão). Geralmente funciona na primeira tentativa.
Bem pessoal isso é tudo, qualquer dúvida ou mensagem de erro postem nos comentários.