2010-07-20 3 views
0

J'ai un code java que je veux partager avec certains camarades de classe mais je ne veux pas partager la source avec eux.Comment distribuer une application Android (de sorte que les gens ne peuvent pas voir la source)

Quelle est la méthode standard pour fournir à quelqu'un avec un exécutable Java qu'ils peuvent utiliser, mais ils ne peuvent pas voir la source.

Je ne sais pas si cela est pertinent, mais le code que je vais leur donner des sera exécuté sur Android.

+1

Notez que vos camarades de classe peuvent être assez intelligents pour savoir comment exécuter un décompilateur Java. –

+0

@Greg qui ne leur fera pas du bien, Android ne compile pas à un code octet JVM, il compile à un code octet spécial qui ne peut être décompilé à assembler comme des instructions en ce moment. Ils ne seront pas en mesure d'obtenir "source Java" à partir d'un fichier .dex. –

Répondre

2

Cela dépend de ce que vous entendez par "ils peuvent utiliser".

Si vous voulez simplement qu'ils soient en mesure d'exécuter votre application sur leur téléphone (ou émulateurs), vous pouvez leur donner an .apk file, qui est le format standard pour les applications Android. La façon la plus simple de produire un .apk est d'utiliser le plugin Android Development Tools (ADT) pour Eclipse. Sinon, vous devrez utiliser le aapt command.

Si vous voulez leur permettre d'ajouter vos classes à leurs applications, vous devrez leur donner un fichier contenant vos .jar compilés .class fichiers. Cependant, il est possible de retourner les fichiers .class en fichiers .java en utilisant un décompilateur de sorte que si vous ne voulez vraiment pas qu'ils voient votre code, vous risquez d'être bloqué.

Il existe des outils - connus sous le nom obfuscators - qui rendent le processus de décompilation plus difficile, mais personnellement, je ne voudrais pas déranger avec eux ici comme ils font aussi le débogage plus difficile aussi.

Il ne sera pas possible pour quiconque de transformer votre .apk retour dans la source. Android utilise une machine virtuelle différente de Java standard et a donc .dex fichiers avec Dalvik bytecode plutôt que .class fichiers avec le bytecode JVM, et actuellement il n'y a aucun outil qui retourne .dex fichiers dans .java fichiers source.

1

Collez uniquement les fichiers de classe dans un fichier .jar et ne leur attribuez pas la source.

Edit: Android a sa propre façon d'applications d'emballage, je vous suggère de l'utiliser.

+0

+1 Pour plus de protection (et de complexité), utilisez un obfuscateur de code – OscarRyz

1

Android n'utilise pas l'environnement d'exécution Java. Je n'utilise que Java comme langue source, il exécute un runtime personnalisé avec un format de bytecode personnalisé. Vous pouvez decompile the .dex byte code, mais pas au code source Java, du moins pas au moment de ce post.

Questions connexes