J’ai une bibliothèque Android qui télécharge des données sur un serveur de test et un serveur de production. J’aimerais que les développeurs utilisant cette bibliothèque utilisent le serveur de test lors du développement et du serveur de production lorsque l’application est téléchargée depuis Android Market.
Est-ce possible pour une application de savoir d’où elle vient (Market ou non-Market?) Je suppose que l’on pourrait détecter la présence du fichier JAR signé.
Oui, vous pouvez utiliser la signature pour cela. Si vous utilisez une clé de débogage pour signer votre application pendant le développement et une clé de validation lors du téléchargement de votre application sur le marché, vous pouvez vérifier la signature avec laquelle l’application a été signée et ce serveur de test ou de production. Voici un petit morceau de code pour lire la signature de votre application:
try { PackageManager manager = context.getPackageManager(); PackageInfo appInfo = manager.getPackageInfo( YOUR_PACKAGE_NAME, PackageManager.GET_SIGNATURES); // Now test if the first signature equals your debug key. boolean shouldUseTestServer = appInfo.signatures[0].toCharsSsortingng().equals(YOUR_DEBUG_KEY); } catch (NameNotFoundException e) { // Expected exception that occurs if the package is not present. }
YOUR_PACKAGE_NAME doit être quelque chose comme ‘com.wsl.CardioTrainer’. Ce doit être le nom du package que vous avez utilisé dans votre fichier AndroidManifest.xml. Bonne chance
marque
À partir de l’API 5, vous pouvez utiliser PackageManager.getInstallerPackageName (Ssortingng) . De la documentation:
Récupérez le nom du package de l’application qui a installé un package. Cela identifie le marché d’où provient le paquet.
Pour obtenir le package de l’Android Market, cet article peut vous aider.
D’après ce que je peux dire, l’application de marché ne fait rien pour “signaler” une application pour dire qu’elle a été téléchargée sur le marché.
J’ai vu ce problème abordé différemment par une autre bibliothèque Android. Le SDK Android AdMob est gratuit à télécharger et à utiliser comme décrit sur leur wiki . Cette bibliothèque sert les annonces. Elle souhaite donc pouvoir déterminer si l’application en cours d’exécution est testée par le développeur ou si elle est utilisée “dans la nature”. Leur approche consistait à exiger que le développeur définisse un atsortingbut “testing” dans le XML ou à appeler leur bibliothèque “setTesting (boolean)” pour permettre à la bibliothèque de savoir quelles annonces diffuser. Ceci est évidemment plus une approche manuelle qui repose sur le développeur pour modifier une ligne de code ou XML avant la publication.
Vous pouvez par défaut configurer votre environnement de production et utiliser une Instrumentation
personnalisée qui définit la configuration sur l’environnement de test. L’instrumentation doit être supprimée avant la publication sur le marché Android.
Vous pourriez peut-être append un paramètre à votre application pour le “mode développeur”.
Une autre possibilité consiste à rechercher un fichier spécial ou un fichier de configuration sur la carte SD, et à supprimer cette clé.