Sécurité de facturation InApp et invocation de méthode à distance

J’ai implémenté la facturation par application dans une application et je souhaite maintenant la sécuriser un peu plus. En lisant le matériel de développement, on peut lire:

En plus d’exécuter un programme d’obscurcissement, nous vous recommandons d’utiliser les techniques suivantes pour obscurcir votre code de facturation intégré à l’application.

Méthodes en ligne dans d’autres méthodes.

Construisez des chaînes à la volée au lieu de les définir en tant que constantes.

Utilisez la reflection Java pour appeler des méthodes.

http://developer.android.com/guide/market/billing/billing_best_practices.html

Obfuscation – bien je peux le faire = proguard

Méthodes en ligne dans d’autres méthodes – est-ce-à-dire que, une fois mon code terminé, débarrassez-vous de mon maximum d’objects OO et mettez tout mon code sur autant de lignes que possible (pour la partie facturation de mon application) en une seule méthode? Est-ce que cela inclut les cours en ligne? Dans l’exemple Android, ils ont une classe de constantes, est-ce que je vais tous les aligner?

Construisez des chaînes à la volée – oui, déplacez toutes les variables constantes de classe en ligne – proguard doit couvrir cela

Utiliser Java Reflection – C’est ma question principale. Devrais-je invoquer toutes mes méthodes au lieu de les appeler?

Pour gagner du temps, pourrais-je faire ceci:

private static Object invokeMethod(Ssortingng name, Class[] params, Object[] args){ try { return MySpecificClass.class.getMethod(name, params).invoke(null, args); } catch (IllegalArgumentException e) { // Should never happen in my code, ignore and cancel in app charge } catch (SecurityException e) { // Should never happen in my code, ignore and cancel in app charge } catch (IllegalAccessException e) { // Should never happen in my code, ignore and cancel in app charge } catch (InvocationTargetException e) { // Should never happen in my code, ignore and cancel in app charge } catch (NoSuchMethodException e) { // Should never happen in my code, ignore and cancel in app charge } return null; } 

Je pourrais alors faire des choses comme ceci:

 private static boolean someMethod() { return true; // just an example } params = new Class[0]; if ((Boolean) invokeMethod("someMethod", params, null)) { // Do something } 

Est-ce une bonne sécurité, ou est-ce juste un problème de code qui rend mon application impossible à déboguer pour de véritables problèmes d’utilisateurs?

Merci.

Cela semble être quelque chose que vous pourriez examiner s’il existe une plus grande menace de piratage démontrée. Je ne pourrais pas justifier l’utilisation de la reflection uniquement pour une couche d’obscurcissement supplémentaire si elle risquait de compromettre l’expérience utilisateur.