La réponse aux questions 1 et 2 est que certaines applications sur Android sont compilées uniquement en bytecode Java/Dalvik, et d'autres sont compilées en C/C++ natif. Le bytecode Dalvik n'étant pas natif, il dispose d'interprètes distincts pour les différentes architectures. En revanche, les applications et bibliothèques natives C/C++ étant compilées pour une architecture spécifique, elles ne peuvent être exécutées que sur cette architecture.
Comme la plupart des applications d'enracinement utilisent des exploits du système Android, elles doivent être compilées en C. Cela les empêche d'être utilisées de manière universelle et les oblige à être recompilées pour chaque architecture.