Vous pouvez exécuter les fichiers Jar en utilisant app_process, qui remplace l'exécutable java sur Android. En regardant /system/bin/am par exemple, nous voyons qu'il s'agit en fait d'exécuter
exec app_process $base/bin com.android.commands.am.Am "$@"
Vous avez mentionné l'utilisation de Xposed. Si vous cherchez dans Google l'installation manuelle de ce framework, vous verrez qu'il déploie un jar dans /system/frameworks et remplace app_process par un autre modifié, où les hooks sont ajoutés. Il est également instructif de lire le document code app_process modifié .
Remarque : vous aurez peut-être besoin de cette réponse pour faire fonctionner vos applications.
Enfin, notez que vous semblez avoir mal compris le lien vers la réponse de stackoverflow dans les commentaires ( https://stackoverflow.com/q/30656933/2291 ). Les jarres son installés. Sur les systèmes plus récents, ils sont convertis (et les fichiers retirés du jar) en ART et s'exécutent en code natif (c'est-à-dire en langage machine). Sur les systèmes plus anciens, je pense que les fichiers de classe java sont convertis en bytecode Dex et exécutés dans la VM Dalvik. Cela signifie que le bytecode Dex est exécuté dans Dalvik de la même manière que le bytecode Java est exécuté par la VM Java à la volée. Dans tous les cas, les fichiers JAR contiennent toujours du code au départ.
0 votes
Qu'essayez-vous d'accomplir en exécutant vos propres JARs ? Nouvelles applications, modification du comportement du système d'exploitation, etc.
0 votes
@Mufasa Je veux juste savoir comment il les fait fonctionner. Je ne veux pas faire fonctionner le mien. (Du moins pour l'instant)
0 votes
@Mufasa Je sais que c'est un peu vieux maintenant, mais s'il exécute seulement
.dex
'es, alors que sont ces.jar
est là pour ça ?0 votes
Je n'en suis pas totalement sûr, mais je pense qu'ils sont liés au processus de démarrage, à la structure de base et peut-être à des raisons de compatibilité. Après tout, les JARs sont juste des fichiers ZIP avec une certaine structure de répertoire en eux - il n'est pas nécessaire de les utiliser strictement pour le code exécutable. L'idée générale est qu'Android n'exécute généralement pas les JARs dans l'espace utilisateur pendant le fonctionnement normal. Voir aussi stackoverflow.com/q/30656933/2291 qui explique comment la plupart de ces JARs contiennent des méta-données simples.
0 votes
.jar
sont la bibliothèque de classes standard d'Android, qui est chargée par les VM Dalvik/ART, tout comme la JVM sur les PC charge le JCL à partir de différents fichiers..jar
/.jmod
fichiers. La variable d'environnement BOOTCLASSPATH définit une liste de tous ces fichiers..jar
les dossiers. Comme.apk
des fichiers,.jar
sont également des fichiers ZIP et contiennent unclasses.dex
qui est soit interprété, soit compilé en JIT (comme c'était le cas avec Dalvik), soit compilé en AOT en format.odex
o.oat
(comme le fait ART). Toutes les applications construites avec le SDK Android dépendent de cette bibliothèque de classes standard.