A propos des licences de l'application

Avec l'application de la licence d'Android, chaque appareil vérifie avec un serveur pour vous assurer que cet appareil a l'autorisation d'exécuter votre application. Licensing est important pour toute application payante. Licensing est également une bonne précaution avec une application gratuite (pour vous aider à maintenir la propriété du concept de l'application). Cet article vous guide à travers les étapes pour ajouter un régime d'autorisation simple à votre application Android.

Sommaire

Création d'une nouvelle application Android

Créez un nouveau projet Android comme vous le faites normalement. Lors de la définition d'un SDK minimum, sélectionnez API Level 19 ou inférieure. Dans la nouvelle application de build.gradle fichier, changer le targetSdkVersion à 19 ou moins. (Il faut plus de travail à faire licence lorsque vous ciblez un niveau API plus récente.)

La bibliothèque de licences

Voici une façon d'ajouter des licences de la bibliothèque de Google à votre projet:

  1. Dans le menu principal de Android Studio, sélectionnez Gestionnaire Outils-Android-SDK.

  2. Dans l'onglet Outils de SDK Manager SDK, sélectionnez Google Play Licensing Library.

  3. Cliquez sur OK pour télécharger et installer la bibliothèque de licences.

  4. Lorsque l'installation est terminée, cliquez sur Terminer pour fermer le gestionnaire de SDK.

  5. Dans le menu principal de Android Studio, sélectionnez Fichier Structure-projet.

  6. Sur le côté gauche de la boîte de dialogue Structure du projet, sélectionnez l'élément SDK Lieu.

  7. Dans le corps principal de la boîte de dialogue de structure du projet, noter l'entrée dans le champ de texte Android SDK Lieu.

    Ceci est la place sur votre disque dur où le SDK Android a été installé.

  8. Cliquez sur OK pour fermer la boîte de dialogue Structure du projet.

  9. Avec l'explorateur de fichiers ou le Finder de votre ordinateur de développement, visiter l'endroit sur votre disque dur où le SDK Android est installé.

  10. Naviguez vers le bas pour les extras / google / play_licensing / bibliothèque / src / com.

    Dans ce répertoire, vous trouverez un sous-répertoire nommé Google.

  11. Copiez le répertoire google app / src de votre répertoire application / main / java / com.

Maintenant de votre application app / src / main / java / com répertoire a deux sous-répertoires. Par exemple, si une application est dans un package nommé com.allyourcode.licensingdemo, de l'application app / src / main / java / com répertoire a sous-répertoires nommés allyourcode et Google. Vous pouvez voir cela avec l'explorateur de fichiers ou le Finder de votre ordinateur, mais vous pouvez également voir dans la fenêtre de l'outil de projet Android Studio (comme montré ici).

Certains nouveaux sous-répertoires.
Certains nouveaux sous-répertoires.

Obtenir une clé de licence pour votre application

Vous avez besoin d'une clé de licence afin de publier cette application. Pour obtenir votre clé, procédez comme suit:

  1. Visitez Google Play Store de la console développeur.

  2. Dans la console de développeur, cliquez sur le bouton Ajouter une nouvelle application.




    Une page Ajouter une nouvelle application apparaît.

  3. Sur la page Ajouter une nouvelle application, tapez un titre pour votre nouvelle application.

  4. Toujours sur la page Ajouter une application, cliquez sur le bouton Préparer magasin offre.

    Vous êtes redirigé vers une page liste des magasins.

  5. Sur le côté gauche de la page liste des magasins, sélectionnez Services et API.

    Changements contenu de la page liste des magasins.

  6. Sur la page liste des magasins, pour trouver un monstrueusement longue séquence de caractères comme celle montrée ici.

    Un monstrueusement longue séquence de nombres.
    Un monstrueusement longue séquence de nombres.
  7. Copiez cette séquence de caractères, et de le coller dans un fichier de texte brut sur le disque dur de votre ordinateur de développement.

Modification de votre application pour la licence

Ensuite, vous devez ajouter du code à votre application de sorte que l'application vérifie le serveur de licences avant de permettre au client d'utiliser. Voici un échantillon bare-bones. (Pour un échantillon plus riche, voir le code dans le SDK de extras / google / play_licensing / échantillon dossier.)

import-import android.content.Intent android.app.Activity-import-import android.provider.Settings android.os.Bundle-import com.google.android.vending com.google.android.vending.licensing.AESObfuscator-import. licensing.LicenseChecker-import-import com.google.android.vending.licensing.ServerManagedPolicy com.google.android.vending.licensing.LicenseCheckerCallback-classe publique MainActivity étend Activité {static final BASE64_PUBLIC_KEY private String = "VOTRE CLE PUBLIQUE va ici" - octets private static final [] SEL = new byte [] {// Vingt numéros (allant de -128 à 127 //) allez ici} -salle LicenseCheckerCallback mLicenseCheckerCallback-privé booléen LicenseChecker mChecker-privé keepGoing = vrai- @ vide 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 = nouvelle LicenseChecker (ce, nouvelle ServerManagedPolicy (ce, nouvelle AESObfuscator (SEL, getPackageName (), deviceId)), BASE64_PUBLIC_KEY) -doCheck () -} @ Overridepublic vide onResume () {super.onResume () - si (keepGoing!) { finish () -}} private void doCheck () {mChecker.checkAccess (mLicenseCheckerCallback) -} MyLicenseCheckerCallback de classe privée implémente LicenseCheckerCallback {public void permettre (int policyReason) {if (isFinishing ()) {// Ne pas mettre à jour l'interface utilisateur si l'activité est finishing.return -}} public void dontAllow (int policyReason) {if (isFinishing ()) {} Retour- keepGoing = intention fausse-Intention = new Intent (MainActivity.this, NotLicensedActivity.class) -intent.putExtra ("un message "., getResources () getString (R.string.app_not_licensed) +" (0x "+ Integer.toHexString (policyReason) +") ") - startActivity (intention) -} public void Applicationerror (int errorCode) {if (isFinishing ( )) {} Retour- keepGoing = intention fausse-Intention = new Intent(MainActivity.this,NotLicensedActivity.class)-intent.putExtra("message",getResources().getString(R.string.application_error) + "(0x" + Integer.toHexString (errorCode) + ")") - startActivity (intention) -}} @ OnDestroy vide Overrideprotected () {super.onDestroy () - mChecker.onDestroy () - // Ne pas oublier cette ligne. Sans elle, votre application peut se bloquer.}}

Pour faire ce travail de code de l'échantillon, il faut ajouter quelques ingrédients supplémentaires:

  • Dans l'activité principale, remplacer les mots VOTRE CLE PUBLIQUE va ici avec votre propre clé de licence à partir étapes 6 et 7 dans «Obtenir une clé de licence pour votre application" de la section de cet article.

  • Faites votre propre valeur SALT 20-nombre - un terme de fantaisie pour un ensemble de valeurs produites au hasard - et l'ajouter au code de l'activité principale.

  • Créer app_not_licensed et erreur d'application ressources de chaîne.

  • Ajouter au dossier AndroidManifest.xml du projet.

  • Ajouter tout du code de votre propre application pour l'exemple de code. (En d'autres termes, faire de votre app faire ce qu'il est censé faire - jouer à un jeu, d'afficher des informations, résoudre un problème, ou autre chose.)

  • Créer un NotLicensedActivity classe.

    Un échantillon NotLicensedActivity est copié ici.

    NotLicensedActivity public class étend Activité {void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -setContentView publique (R.layout.not_licensed) -string message = getIntent () getExtras () getString ("message") -.. (( TextView) findViewById (R.id.message_text)) setText (message) -. ((TextView) findViewById (R.id.message_text2)) setText (message) -.} vide quitApp (Voir la vue du public) {finish () -} }
  • Ajouter vues de texte nommés texte_message et message_text2 au dossier de mise en page de votre NotLicensedActivity.

Dans l'activité principale, l'essence de la vérification de licence se décline en deux parties (a) l'appel à doCheck (), qui communique avec le serveur Google Play, et (b) le MyLicenseCheckerCallback classe interne (la classe qui répond aux résultats du serveur de jeu). La LicenseCheckerCallback doit avoir au moins trois méthodes - un permettre () méthode pour "Allez-y et utiliser l'application", un dontAllow () méthode pour "vous n'êtes pas autorisé à utiliser cette application", et une erreur d'application() méthode pour "Oh, oh!"

Dans l'exemple de code rien de spécial est fait dans le permettre () Procédé. Dans le dontAllow () et erreur d'application() méthodes autre activité est démarrée qui est nommé NotLicensedActivity. Vous pouvez faire ce NotLicensedActivity faire ce que vous voulez. Quoi qu'il arrive dans le NotLicensedActivity, un continue champ est mis à faux, dire l'activité principale, pour appeler finir() (dans le onResume méthode) lors du retour de la NotLicensedActivity.

Vous pouvez utiliser cette astuce ou de faire quelque chose de différent. Dans les applications, les activités ne sont pas modal. Autrement dit, si une activité couvre partiellement une autre activité, l'utilisateur peut interagir avec l'activité soit en touchant la partie appropriée de l'écran. Alors si NotLicensedActivity ne couvre pas complètement l'activité principale, l'utilisateur peut contourner la NotLicensedActivity en touchant une autre partie de l'écran. Pour éviter cela, faire de la NotLicensedActivity couvrir la totalité de l'écran, résister à la tentation de faire le NotLicensedActivity ressembler à une petite boîte de dialogue.

Test de votre licence de App

Ne fonctionne votre licence de l'application? Peut utilisateurs autorisés exécuter votre application? Et qu'en est-il des utilisateurs sans licence? Peuvent-ils fonctionner votre application, trop? Vous pouvez trouver après que vous avez téléchargé votre application et avant que vous publiez votre application. Voici comment:

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

  2. Dans la partie la plus à gauche de la très à la page Console de développeur, sélectionnez Paramètres.

    La page Paramètres de votre compte apparaît.

  3. Sur le côté gauche de la page Paramètres, sélectionnez Détails du compte.

  4. Faites défiler la page Détails du compte jusqu'à ce que vous trouverez une section de licence d'essai.

    Dans cette section, permis d'analyse, vous trouverez un champ de texte intitulée Comptes Gmail avec les tests Access. Vous trouverez également une liste déroulante Licence marqué réponse de test.

    Vos options de réponse Licence d'essai
    Vos options de réponse Licence d'essai
  5. Dans les comptes de Gmail avec Field Testing accès, tapez l'adresse e-mail pour un ou plusieurs comptes Gmail.

    Si vous tapez plus d'une adresse de courrier électronique, utiliser une virgule pour séparer une adresse d'un autre. Les personnes dont les appareils Android sont enregistrés à ces adresses e-mail seront en mesure de trouver votre application sur le Play Store de Google. (D'autres ne verront pas votre application.)

  6. Dans la liste de réponse de test sous licence, sélectionnez NOT_LICENSED.

    Les utilisateurs qui installent vos APP (Utilisateurs avec adresses Gmail que vous répertorié dans l'étape 5) obtiendront cette réponse NOT_LICENSED quand ils essaient de démarrer l'application.

  7. Informer les utilisateurs sur votre liste des comptes Gmail d'essayer télécharger et installer votre application.

    Si le code de votre application est correcte (par exemple, si le onCreate méthode dans l'activité principale de cet article est fait son travail), l'utilisateur ne pourra pas continuer à exécuter votre application. Voilà exactement ce que vous voulez

  8. Lorsque vous êtes satisfait avec les résultats de l'essai dans les étapes 6 et 7, revoir la console de développeur et de modifier la réponse du test breveté de LICENCE.

  9. Avertir les utilisateurs sur vos comptes Gmail liste pour essayer de lancer à nouveau votre application.

    Si le code de votre application est correcte (par exemple, si le onCreate méthode dans l'activité principale de cet article est fait son travail), l'utilisateur sera en mesure de poursuivre l'exécution de votre application.

  10. Essayez d'autres options dans la liste de réponse de test sous licence - des options telles que LICENSED_OLD_KEY, ERROR_SERVER_FAILURE, et ainsi de suite.

    Rappelez-vous, il n'y a aucune telle chose comme trop de test.