@Pavel Dudka
Jack est un compilateur. Semblable à javac, mais il fait un peu autre chose:
Comme vous pouvez le voir, Jack compile le code source Java directement dans Dex fichier! Nous n'avons pas d'intermédiaire *.les fichiers de classe de plus, donc dx outil n'est pas nécessaire!
Mais attendez! Que faire si je inclure une bibliothèque tierce, dans mon projet (qui est une collection de .les fichiers de classe)?
Et c'est lorsque Jill entre en jeu:
Jill peut traiter des fichiers de classe et de les transformer en spécial Jayce format qui peut être utilisé comme une entrée Jack compilateur.
Maintenant, nous allons faire un pas de côté pour un deuxième et pense que... Qu'est-ce qui arrivera à tous les refroidir plugins que nous avons eu tellement accro? Ils ont tous besoin .les fichiers de classe et Jack compilateur n'ont pas de ces...plus
Heureusement, Jack fournit certains de ces important pour nous de fonctions de la boîte:
- Retrolambda - ne sera pas nécessaire. Jack peut gérer correctement lambdas
- Proguard - il est cuit dans la Prise maintenant, de sorte que vous pouvez toujours utiliser la dissimulation et de la minimisation
Avantages:
Jack prend en charge le langage de programmation Java 1.7 et intègre des fonctionnalités supplémentaires décrites ci-dessous.
-
Predexing
Lors de la génération d'un JACK fichier de la bibliothèque de la .dex de la bibliothèque est généré et stocké à l'intérieur de l' .jack le fichier de la bibliothèque comme un pré-dex. Lors de la compilation, JACK réutilise le pré-dex de chaque bibliothèque.
Toutes les bibliothèques sont pré-dexed.
-
Compilation incrémentielle
Compilation incrémentielle signifie que seuls les composants qui ont été touché depuis la dernière compilation, et leurs dépendances, sont recompilées. Différentiels de compilation peuvent être beaucoup plus rapides que d'une compilation complète lorsque des changements sont limités à seulement un nombre limité de composants.
-
Reconditionnement
JACK utilise jarjar fichiers de configuration à faire le reconditionnement.
-
Multidex soutien
Depuis dex fichiers sont limités à 65K méthodes, applications, avec plus de 65K méthodes doivent être divisés en plusieurs fichiers dex. (Voir "création d'Applications avec Plus de 65K Méthodes" pour plus d'informations sur multidex.)
Inconvénients:
- Transformer l'API n'est pas pris en charge par Jack - il n'y a aucun intermédiaire bytecode Java, vous pouvez le modifier, de sorte que certains plugins, je n'ai pas mentionné ici s'arrête de fonctionner
- Annotation processing n'est pas actuellement pris en charge par Jack, donc si vous dépendent les bibliothèques comme un Poignard, AutoValue, etc., vous devriez réfléchir à deux fois avant de passer à Jack. EDIT: Comme l'a souligné Jake Wharton, Jack en N Aperçu a l'annotation de traitement de soutien, mais il n'est pas exposé encore par le biais de Gradle.
- Les peluches des détecteurs qui fonctionnent sur un bytecode Java ne sont pas pris en charge.
- Jacoco n'est pas pris en charge - eh bien, personnellement, je trouve Jacoco discutable (il ne marche pas vraiment montrer ce que vous voulez voir), donc peut tout à fait vivre sans elle
- Dexguard - enterprise version de Proguard est actuellement pas pris en charge