Le premier arrêt pour moi serait d'optimiser et d'obscurcir le code avec ProGuard qui est connu pour fonctionner avec du code d'octet ciblé sur Android Dalvik VM (via Dex). C'est un outil vraiment génial qui peut augmenter la difficulté de "renverser" votre code tout en réduisant son empreinte (dans certains cas de façon spectaculaire : une de mes applets récentes est passée d'environ 600 Ko à environ 50 Ko).
Comme d'autres l'ont dit, vous n'obtiendrez jamais une sécurité à 100% des détails de votre algorithme lorsque sa mise en œuvre est distribuée aux clients. Pour cela, vous devez garder le code sur vos seuls serveurs. Les tentatives de sécurisation à près de 100% du code client reviennent en fait à DRM et peut rendre votre code client fragile face aux pannes de réseau et, de manière générale, frustrer les utilisateurs (légitimes).
Le blog des développeurs Android a quelques utile articles sur la question des applications Android "inviolables" (et ils recommandent l'utilisation de ProGuard dans le cadre de l'approche globale).
En ce qui concerne les approches " créatives ", certains développeurs emploient techniques de détection du débogueur pour empêcher l'analyse en cours d'exécution et combiner cela avec le cryptage de portions de code binaire (pour décourager l'analyse statique), mais pour être honnête, un attaquant suffisamment déterminé peut contourner ces derniers, alors qu'il peut causer une frustration légitime des utilisateurs, comme l'illustre l'article de la KB de Windows Jeux : Message d'erreur : Un débogueur a été détecté : Déchargez le débogueur et réessayez . Le logiciel DVD "Apprendre à conduire" de ma copine ne fonctionne pas sous Windows. VirtualBox pour cette raison, mais elle blâme Linux bien sûr !
OpenRCE y Article de Wikipedia sur le code obfusqué peuvent être de bons points de départ si vous souhaitez approfondir la question. Mais attention, vous risquez de perdre plus par une utilisation trop zélée de ces techniques frustrant vos utilisateurs que par la perte de secrets commerciaux par rétro-ingénierie. Comme Anton S dit Si l'on veut être créatif, l'approche la plus "créative" consiste peut-être à modifier le modèle économique plutôt que la technologie.
La dernière version d'Android Mise à jour du SDK le 6 décembre 2010 (coïncidant avec la sortie d'Android 2.3 Gingerbread) :
Support ProGuard intégré : ProGuard est maintenant emballé avec les outils SDK. Les développeurs peuvent maintenant obscurcir leur code en tant que partie intégrante d'une version.