Sobre licenciamento aplicativo

Com o licenciamento de aplicativo do Android, cada dispositivo cheques com um servidor para se certificar de que este dispositivo tem permissão para executar seu aplicativo. O licenciamento é importante para qualquer aplicativo pago. O licenciamento é também uma boa precaução com um aplicativo gratuito (para ajudar você a manter a propriedade do conceito do app). Este artigo orienta-o através dos passos para adicionar um regime de licenciamento simples para o seu aplicativo Android.

Criando uma nova aplicação Android

Criar um novo projeto Android da maneira que você normalmente faz. Ao configurar um SDK mínima, selecione API Nível 19 ou inferior. Nos novos aplicativos de build.gradle arquivo, altere a targetSdkVersion para 19 ou inferior. (É preciso mais trabalho a fazer licenciamento quando você atingir um nível API mais novo).

A biblioteca de licenciamento

Aqui está uma maneira de adicionar biblioteca de licenciamento do Google para o seu projeto:

  1. No menu principal do Android Studio, selecione Ferramentas → Android → SDK Manager.

  2. Na guia SDK Tools do SDK Manager, selecione Google Play Licensing Library.

  3. Clique em OK para baixar e instalar a biblioteca de licenciamento.

  4. Quando a instalação estiver concluída, clique em Concluir para fechar o Gerenciador de SDK.

  5. No menu principal do Android Studio, selecione Arquivo Estrutura → Projeto.

  6. No lado esquerdo da caixa de diálogo Estrutura do projeto, selecione o item SDK Localização.

  7. No corpo principal da caixa de diálogo estrutura do projeto, observe a entrada no campo de texto Android SDK Localização.

    Este é o lugar em seu disco rígido onde o Android SDK foi instalado.

  8. Clique em OK para fechar a caixa de diálogo Estrutura do Projeto.

  9. Com o seu computador de desenvolvimento File Explorer ou no Finder, visitar o local em seu disco rígido onde o Android SDK está instalado.

  10. Navegue para baixo para o extras / google / play_licensing / / diretório src / com biblioteca.

    Nesse diretório, você encontrará um subdiretório chamado Google.

  11. Copie o diretório do Google para seu aplicativo app / src / main diretório / java / com.

Agora do seu aplicativo app / src / main / java / com diretório tem dois subdiretórios. Por exemplo, se um aplicativo está em um pacote chamado com.allyourcode.licensingdemo, do aplicativo app / src / main / java / com diretório tem subdiretórios nomeados allyourcode e Google. Você pode ver isso com o seu computador File Explorer ou no Finder, mas você também pode vê-lo na janela ferramenta Project do Android Studio (como mostrado aqui).

Alguns novos subdiretórios.
Alguns novos subdiretórios.

Obtendo uma chave de licença para o seu aplicativo

Você precisa de uma chave de licença para publicar este aplicativo. Para obter a sua chave, faça o seguinte:

  1. Visita Google Play da loja console do desenvolvedor.

  2. No Developer Console, clique no botão New Application Adicionar.

    Uma página Adicionar novo aplicativo aparece.

  3. Na página Adicionar novo aplicativo, digite um título para sua nova aplicação.

  4. Ainda na página Adicionar novo aplicativo, clique na Listagem loja botão Prepare.

    Você é levado a uma página de loja Listing.

  5. No lado esquerdo da página loja Listing, seleccione Serviços e APIs.

    alterações de conteúdo da página Ficha da loja.

  6. Na página Armazenamento de listagem, procure um monstruosamente longa sequência de caracteres como a mostrada aqui.

    Um monstrously longa sequência de números.
    Um monstrously longa sequência de números.
  7. Copie essa sequência de caracteres, e colá-lo em um arquivo de texto simples no disco rígido do seu computador de desenvolvimento.

Modificando seu aplicativo para o licenciamento

Em seguida, você tem que adicionar código ao seu aplicativo para que o aplicativo verifica o servidor de licenciamento antes de permitir que o cliente possa usá-lo. Aqui está um exemplo de esqueleto. (Para uma amostra mais rica, ver o código no SDK do extras / google / play_licensing / sample pasta.)

importação android.app.Activity-import android.content.Intent-import android.os.Bundle-import android.provider.Settings-import com.google.android.vending com.google.android.vending.licensing.AESObfuscator-importação. MainActivity classe licensing.LicenseChecker-import com.google.android.vending.licensing.LicenseCheckerCallback-import com.google.android.vending.licensing.ServerManagedPolicy-pública estende Atividade {BASE64_PUBLIC_KEY static final string privado = "Sua chave pública VAI AQUI"-Privada byte static final [] SALT = new byte [] {// Vinte números (que vão desde // -128 a +127) aqui} -Privada LicenseCheckerCallback mLicenseCheckerCallback-privada boolean LicenseChecker mChecker-privada keepGoing = true-@ vazio Overridepublic onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -setContentView (R.layout.activity_main) -String deviceId = Settings.Secure.getString (getContentResolver (), Settings.Secure.ANDROID_ID) -mLicenseCheckerCallback = new MyLicenseCheckerCallback () - mChecker = new LicenseChecker (esta, novo ServerManagedPolicy (esta, novo AESObfuscator (SALT, getPackageName (), deviceId)), BASE64_PUBLIC_KEY) -doCheck () -} @ Overridepublic vazio onResume () {super.onResume () - if (! keepGoing) {acabamento () -}} private void doCheck () {mChecker.checkAccess (mLicenseCheckerCallback) -} MyLicenseCheckerCallback classe privada implementa LicenseCheckerCallback {public void permitir (int policyReason) {if (isFinishing ()) {// não atualizar UI se atividade é finishing.return -}} public void dontAllow (int policyReason) {if (isFinishing ()) {} voltar- keepGoing = falso-Intenção intenção = new Intent (MainActivity.this, NotLicensedActivity.class) -intent.putExtra ("mensagem", GetResources (). GetString (R.string.app_not_licensed) +" (0x" + Integer.toHexString (policyReason) +")") -startActivity (intenção) -} void Applicationerror (errorcode int público) {if (isFinishing ()) {} voltar- keepGoing = falso-Intenção intenção = new Intent (MainActivity.this, NotLicensedActivity.class) -intent.putExtra ("mensagem", GetResources (). GetString (R.string.application_error) +" (0x" + Integer.toHexString (errorCode) +")") -startActivity (intenção) -}} @ onDestroy vazio Overrideprotected () {super.onDestroy () - mChecker.onDestroy () - // Não se esqueça esta linha. Sem ele, o aplicativo pode falhar.}}


Para fazer este trabalho código de exemplo, você tem que adicionar alguns ingredientes extras:

  • Na atividade principal, substituir as palavras Sua chave pública VAI AQUI com sua própria chave de licença de Passos 6 e 7 na seção “Como obter uma chave de licença para o seu app” deste artigo.

  • Faça a sua própria 20-number valor SALT - um termo extravagante para um conjunto de valores produzidos aleatoriamente - e adicioná-lo ao código a principal atividade.

  • Crio app_not_licensed e erro de aplicação recursos string.

  • Adicionar ao arquivo AndroidManifest.xml do projeto.

  • Adicionar qualquer um código de seu próprio aplicativo para o código de exemplo. (Em outras palavras, fazer o seu aplicativo faz o que é suposto fazer - jogar um jogo, exibir informações, resolver um problema, ou o que quer.)

  • Crie um NotLicensedActivity classe.

    Uma amostra NotLicensedActivity é copiado aqui.

    classe pública NotLicensedActivity estende Atividade {onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -setContentView public void (R.layout.not_licensed) -String mensagem = getIntent (). getExtras (). getString ("mensagem") - ((TextView) findViewById (R.id.message_text)) setText. (Mensagem) - ((TextView) findViewById (R.id.message_text2)) setText (mensagem) -.} Public void quitApp (Vista) {acabamento () -}}
  • Adicionar vistas de texto chamados message_text e message_text2 de arquivo de layout do seu NotLicensedActivity.

Na atividade principal, a essência da verificação de licença vem em duas partes (a) a chamada para doCheck (), que se comunica com o servidor do Google Play, e (b) o MyLicenseCheckerCallback classe interna (a classe que responde aos resultados do servidor Play). o LicenseCheckerCallback tem que ter pelo menos três métodos - um permitir() método para “Vá em frente e usar o aplicativo”, uma dontAllow () método para “você não está licenciado para usar este aplicativo”, e um erro de aplicação() método para “Oh, oh!”

No código de exemplo nada de especial é feito no permitir() método. No dontAllow () e erro de aplicação() métodos outra atividade é iniciado com o nome NotLicensedActivity. Você pode fazer isso NotLicensedActivity fazer o que quiser. Aconteça o que acontecer na NotLicensedActivity, uma continue campo é definido como falso, dizendo a principal atividade para chamar terminar() (no Resumindo método) quando voltar da NotLicensedActivity.

Você pode usar esse truque ou fazer algo diferente. Em Android, as atividades não são modal. Ou seja, se uma atividade cobre parcialmente uma outra atividade, então o usuário pode interagir com qualquer atividade ao tocar a parte apropriada da tela. Então se NotLicensedActivity não completamente encobrir a atividade principal, o usuário pode contornar a NotLicensedActivity tocando em outra parte da tela. Para evitar que isso aconteça, faça o NotLicensedActivity cobrir a tela inteira, resistindo à tentação de fazer a NotLicensedActivity olhar como uma pequena caixa de diálogo.

Testando o Licenciamento do App

Será que o seu licenciamento aplicativo funciona? Pode licenciado usuários executar seu aplicativo? E o que dizer de utilizadores não licenciados? eles podem executar seu aplicativo, também? Você pode descobrir depois que você carregou seu aplicativo e antes de realmente publicar seu aplicativo. Veja como:

  1. Visita https://play.google.com/apps/publish/.

  2. Na parte muito mais à esquerda da página do console do desenvolvedor, selecione Configurações.

    página Configurações da conta aparece.

  3. No lado esquerdo da página Configurações, selecione Detalhes da conta.

  4. Role a página Detalhes da conta até encontrar uma seção de teste de licença.

    Nessa seção Teste de Licença, você encontrará um campo de texto chamado contas do Gmail com acesso Testing. Você também encontrará uma lista drop-down Licença rotulado Response Teste.

    Suas opções de resposta do teste License
    Suas opções de resposta do teste License
  5. Nas contas do Gmail com testes de campo Access, digite o endereço de e-mail para um ou mais contas do Gmail.

    Se você digitar mais de um endereço de e-mail, use uma vírgula para separar um endereço de outro. As pessoas cujos dispositivos Android estão registrados para esses endereços de e-mail será capaz de encontrar o seu aplicativo na Play Store Google. (Outros não vão ver o seu app.)

  6. Na lista Resposta do teste de Licenciado, selecione NOT_LICENSED.

    Os usuários que instalarem seu aplicativo (usuários com o Gmail endereços que você listou na Etapa 5) receberá esta resposta NOT_LICENSED quando eles tentam executar o aplicativo.

  7. Diga aos usuários em sua lista de contas do Gmail para tentar baixar e instalar o aplicativo.

    Se o código do seu aplicativo está correta (por exemplo, se o onCreate método na atividade principal deste artigo está fazendo seu trabalho), o usuário do não será capaz de continuar a executar seu aplicativo. Isso é exatamente o que você quer

  8. Quando estiver satisfeito com os resultados dos testes nas etapas 6 e 7, revisitar o console do desenvolvedor e alterar a resposta do teste Licenciado para licenciados.

  9. Diga aos usuários em suas contas do Gmail listar tentar executar o aplicativo novamente.

    Se o código do seu aplicativo está correta (por exemplo, se o onCreate método na atividade principal deste artigo está fazendo seu trabalho), o usuário do será capaz de continuar a executar seu aplicativo.

  10. Tente outras opções na lista Response Teste Licenciado - opções como LICENSED_OLD_KEY, ERROR_SERVER_FAILURE, e assim por diante.

    Lembre-se, não há tal coisa como demasiado testes.


Publicações relacionadas