2017-06-14 6 views
2

Je souhaite installer une application sur une tablette Google Tango, sur laquelle je suis root. J'ai aussi essayé de compiler avec make -j et ant debug install, je continue d'avoir l'erreur [exec] Failure [INSTALL_FAILED_DEXOPT] même si elle se termine par BUILD SUCCESSFUL. L'application ne s'installe pas sur la tablette.Android: [exec] Failure [INSTALL_FAILED_DEXOPT]

J'ai couru un logcat et voici (pour moi) les prises concernées:

I/PackageManager( 929): onServiceConnected 
D/DefContainer(3008): internal storage: block size=4096, # of available blocks=28501958 
D/DefContainer(3008): internal storage: availInternalSize=116744019968, apk size=4629092 
W/ActivityManager( 929): No content provider found for permission revoke: file:///data/local/tmp/superstuff-debug.apk 
W/ActivityManager( 929): No content provider found for permission revoke: file:///data/local/tmp/superstuff-debug.apk 
I/PackageManager( 929): Copying native libraries to /data/app-lib/vmdl-1009153656 
I/PackageManager( 929): Checking for more work or unbind... 
I/PackageManager( 929): Posting delayed MCS_UNBIND 
I/PackageManager( 929): Running dexopt on: fr.my.superstuff 
I/dex2oat (3216): dex2oat: /data/dalvik-cache/[email protected]@[email protected] 
E/dex2oat (3216): Unrecognized version number in /data/app/fr.my.superstuff-1.apk: 0 3 8 
E/dex2oat (3216): Failed to open dex file '/data/app/fr.my.superstuff-1.apk' from memory 
E/dex2oat (3216): Failed to open dex from file descriptor for zip file: /data/app/fr.my.superstuff-1.apk 
W/installd( 168): DexInv: --- END '/data/app/fr.my.superstuff-1.apk' --- status=0x0100, process failed 
E/installd( 168): dexopt in='/data/app/fr.my.superstuff-1.apk' out='/data/dalvik-cache/[email protected]@[email protected]' res=256 
W/PackageManager( 929): Package couldn't be installed in /data/app/fr.my.superstuff-1.apk 
D/AndroidRuntime(3204): Shutting down VM 
E/WifiController( 929): Not handled here 155652 

I Tried après pour naviguer avec adb shell su dans les répertoires, mais je suppose que tous les fichiers écrits dans le logcat sont temporaires parce que Je ne pouvais pas les trouver. Voici mon Makefile:

MAIN_ACTIVITY=fr.my.superstuff/.$(shell grep "<activity android:name" AndroidManifest.xml | cut -d\" -f2) 
SDK_PATH=/people/me/Documents/Android/sdk 
NDK_PATH=/people/me/Documents/Android/android-ndk-r10e 

APP_TAG=ARViewer 
LOG_FILTER=$(APP_TAG):V NativeApp:V VES:V AndroidRuntime:E libEGL:W StrictMode:V libc:F DEBUG:I 

all: compile-debug 

compile-debug: 
    +$(NDK_PATH)/ndk-build -j NDK_DEBUG=1 
    cp thirdparty/TangoSDK_Gemma_Java.jar libs/ 
    cp thirdparty/QCAR/libs/armeabi-v7a/libQCAR.so libs/armeabi-v7a/ 
    cp thirdparty/QCAR/libs/QCAR-hacked.jar libs/ 
    ant -Djava.compilerargs=-Xlint debug installd 

# compile-release: 
# LC_ALL= $(NDK_PATH)/ndk-build -j NDK_DEBUG=0 
# ant release installr 

# fast-compile-debug: 
# @/bin/zsh -c 'echo > /tmp/.ant-input && echo > /tmp/.ant-output && \ 
#  echo fast-compile-debug >> /tmp/.ant-input && \ 
#  (while IFS='' read -r line; do echo "$$line"; \ 
#  [[ "$$line" =~ "^ant>" ]] && exit; done \ 
#  < <(tailf /tmp/.ant-output)) | strings' 

clean: 
    ant clean 
    rm -rf obj libs 

test: 
    @urxvt -e sh -c "adb logcat -c; adb shell am start -n $(MAIN_ACTIVITY); adb logcat -s $(LOG_FILTER)" 

debug-java: 
    adb shell am start -e debug true -n $(MAIN_ACTIVITY) 
    adb forward tcp:7777 jdwp:$$(adb jdwp | tail -1) 
    jdb -sourcepath src -attach localhost:7777 

debug-native: 
    adb shell am start -e debug true -n $(MAIN_ACTIVITY) 
    $(NDK_PATH)/ndk-gdb 

log: 
    adb logcat -s $(LOG_FILTER) 

Je ne sais pas comment résoudre cette erreur. J'ai vu d'autres fils de pile mais cela ne m'a pas aidé. Je n'utilise pas Android studio ni n'importe quel éditeur, on m'a donné ce code juste pour l'installer et ensuite travailler.

EDIT: Après quelques recherches, j'ai trouvé que cela pouvait avoir quelque chose à voir avec les fichiers dex, comme dit dans le logcat. La tablette utilise Android 4.4.2 et dex est 038, mais je ne peux pas trouver si elles sont compatibles entre eux. Mais cela devrait fonctionner, car cela fonctionnait auparavant sur la même tablette mais sur un ordinateur différent. Même code

Répondre

1

Résolu! C'était un problème de version: la tablette fonctionne sous Android 4.4 KitKat, sur l'ordinateur que j'ai installé SDK 26, mais KitKat fonctionne avec SDK 19, qui peut être téléchargé avec sdkmanager. Cependant, il me manquait le dossier ant, donc je l'ai téléchargé, mais il ne vient pas avec le fichier ant build.xml. Donc je l'ai pris sauvagement de SDK 25 (liens ici The ant/ folder is suddenly missing from Android SDK. Did Google remove it?). Maintenant, il installe!