Android : [exec] 失败 [INSTALL_FAILED_DEXOPT]
Android : [exec] Failure [INSTALL_FAILED_DEXOPT]
我想在 Google Tango 平板电脑上安装一个应用程序,我是 root 用户。
我也尝试使用 make -j
和 ant debug install
进行编译,即使它以 BUILD SUCCESSFUL
结尾,我仍然遇到错误 [exec] Failure [INSTALL_FAILED_DEXOPT]
。该应用未安装在平板电脑上。
I 运行 a logcat 这里是(对我来说)相关的收获:
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/data@app@fr.my.superstuff-1.apk@classes.dex
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/data@app@fr.my.superstuff-1.apk@classes.dex' 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
之后我尝试使用 adb shell su
浏览目录,但我猜 logcat 中写入的所有文件都是临时文件,因为我找不到它们。
这是我的 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)
我不知道如何解决这个错误。我看到了其他堆栈线程,但对我没有帮助。我既没有使用 Android studio 也没有使用任何编辑器,我得到了这段代码只是为了安装它然后解决问题。
编辑: 经过一些搜索,我发现它可能与 dex 文件有关,如 logcat 中所述。平板电脑使用 Android 4.4.2,dex 是 038,但我找不到它们之间是否兼容。
但它应该可以工作,因为它以前在同一台平板电脑但不同的计算机上工作过。相同的代码。
已解决!
是版本问题:平板是运行 Android 4.4 KitKat,我在电脑上安装了SDK 26,但是KitKat运行的是SDK 19,可以用sdkmanager下载。但是后来我丢失了 ant 文件夹,所以我下载了它,但是它没有随 ant build.xml 文件一起提供。所以我野蛮地从 SDK 25 中获取它(链接在这里 )。
现在安装 !
我想在 Google Tango 平板电脑上安装一个应用程序,我是 root 用户。
我也尝试使用 make -j
和 ant debug install
进行编译,即使它以 BUILD SUCCESSFUL
结尾,我仍然遇到错误 [exec] Failure [INSTALL_FAILED_DEXOPT]
。该应用未安装在平板电脑上。
I 运行 a logcat 这里是(对我来说)相关的收获:
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/data@app@fr.my.superstuff-1.apk@classes.dex
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/data@app@fr.my.superstuff-1.apk@classes.dex' 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
之后我尝试使用 adb shell su
浏览目录,但我猜 logcat 中写入的所有文件都是临时文件,因为我找不到它们。
这是我的 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)
我不知道如何解决这个错误。我看到了其他堆栈线程,但对我没有帮助。我既没有使用 Android studio 也没有使用任何编辑器,我得到了这段代码只是为了安装它然后解决问题。
编辑: 经过一些搜索,我发现它可能与 dex 文件有关,如 logcat 中所述。平板电脑使用 Android 4.4.2,dex 是 038,但我找不到它们之间是否兼容。 但它应该可以工作,因为它以前在同一台平板电脑但不同的计算机上工作过。相同的代码。
已解决!
是版本问题:平板是运行 Android 4.4 KitKat,我在电脑上安装了SDK 26,但是KitKat运行的是SDK 19,可以用sdkmanager下载。但是后来我丢失了 ant 文件夹,所以我下载了它,但是它没有随 ant build.xml 文件一起提供。所以我野蛮地从 SDK 25 中获取它(链接在这里