J'ai compilé dex2oat sur linux-x86_64 pour linux-x86. Je peux l'exécuter comme une application normale. Le contexte est le suivant : j'ai un outil qui peut générer des codes dex et je veux effectuer quelques vérifications de base que dex2oat fait. Il n'est donc pas important pour moi d'obtenir un fichier exécutable.
J'obtiens le résultat suivant :
dex2oat I 4183 4183 art/dex2oat/dex2oat.cc:1239] out/host/linux-x86/bin/dex2oat --runtime-arg -Xms64m --runtime-arg -Xmx64m --image-classes=frameworks/base/preloaded-classes --dex-file=/home/marc/Apps/Example1.apk --dex-location=bla.apk --oat-file=bla.oat --image=out.art --base=0x60000000 --instruction-set=x86 --instruction-set-features=default --runtime-arg -Xrelocate --host --android-root=out/host/linux-x86 --include-patch-information
dex2oat E 4183 4183 art/runtime/runtime.cc:1108] Failed to return pre-allocated NoClassDefFoundError
dex2oat F 4183 4183 art/runtime/thread.h:330] Check failed: new_exception != NULL
dex2oat F 4183 4183 art/runtime/runtime.cc:284] Runtime aborting...
dex2oat F 4183 4183 art/runtime/runtime.cc:284] Aborting thread:
dex2oat F 4183 4183 art/runtime/runtime.cc:284] "main" prio=5 tid=1 Runnable (still starting up)
dex2oat F 4183 4183 art/runtime/runtime.cc:284] | group="" sCount=0 dsCount=0 obj=(nil) self=0xf89a8e78
dex2oat F 4183 4183 art/runtime/runtime.cc:284] | sysTid=4183 nice=0 cgrp=user/1000.user/c2.session sched=0/0 handle=0xf6b76700
dex2oat F 4183 4183 art/runtime/runtime.cc:284] | state=R schedstat=( 17496280 53788 15 ) utm=1 stm=0 core=7 HZ=100
dex2oat F 4183 4183 art/runtime/runtime.cc:284] | stack=0xff0f1000-0xff0f3000 stackSize=7MB
dex2oat F 4183 4183 art/runtime/runtime.cc:284] | held mutexes= "abort lock" "mutator lock"(shared held)
Quelqu'un sait-il ce qui provoque cette erreur ou ai-je fourni les mauvais arguments ?
J'ai ajouté une instruction cout dans le code et il s'avère que la classe recherchée est Ljava/lang/Object ;