由于INSTALL_FAILED_DEXOPT

时间:2016-11-24 11:51:29

标签: android dex

近一年来,我收到了一小部分用户的投诉,他们要么无法安装我的应用程序,要么安装了它,但以后无法更新。我尽最大努力重现这个错误,以便我可以在可能导致错误的方面取得领先,但用户提到的唯一问题是他们从Google Play获得了-504错误代码。我无法重现它。

幸运的是,我安装应用程序的一位朋友遇到了这个问题,而且在安装过程中我有他的手机logcat。我不太明白是什么导致了这个错误。

包括通过Google Play安装失败的.apklogcat输出。 我在相关部分之前添加了一些空白行。请注意,有很多垃圾需要筛选,我不知道可能有什么相关性,所以我尽力修剪边缘。

我的包名是“com.jjsoftware.fullscientificcalculator”。搜索“INSTALL_FAILED_DEXOPT”以快速找到相关部分。

我的应用程序中没有多索引,因为粗略的方法计数大约是30k。

app.gradle:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 24

    buildToolsVersion "24.0.2"
    defaultConfig {
        applicationId "com.jjsoftware.fullscientificcalculator"
        minSdkVersion 14
        targetSdkVersion 24
        versionCode 133
        versionName "1.77"
        multiDexEnabled false
    }
    sourceSets { main { assets.srcDirs = ['src/main/assets/'] } }

}

dependencies {
    compile files('libs/exp4j-0.4.5.jar')
    compile files('libs/Jama-1.0.3.jar')
    compile files('libs/EJML-simple-0.28.jar')
    compile files('libs/EJML-core-0.28.jar')
    compile files('libs/EJML-dense64-0.28.jar')
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.google.android.gms:play-services-ads:8.4.0'
    compile 'com.android.support:gridlayout-v7:24.2.1'
    compile 'com.google.code.gson:gson:2.6.2'

}

任何建议都表示赞赏。

4 个答案:

答案 0 :(得分:1)

我在您的日志中找到了

E/audit   ( 4121): type=1701 msg=audit(1479663260.831:639): auid=4294967295 uid=50210 gid=50210 ses=4294967295 subj=u:r:dex2oat:s0 pid=28835 comm=436F6D70696C657220647269766572 reason="memory violation" sig=6
E/installd( 2585): DexInv: --- END '/data/app/com.jjsoftware.fullscientificcalculator-1/base.apk' --- status=0x0006, process failed
I/PackageManager( 3177): do mInstaller.dexopt : -1
D/PackageManager( 3177): Time to dexopt: 4.566 seconds
W/PackageManager( 3177): Package couldn't be installed in /data/app/com.jjsoftware.fullscientificcalculator-1
W/PackageManager( 3177): com.android.server.pm.PackageManagerException: scanPackageLI
W/PackageManager( 3177):        at com.android.server.pm.PackageManagerService.scanPackageDirtyLI(PackageManagerService.java:7714)
W/PackageManager( 3177):        at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:6916)
W/PackageManager( 3177):        at com.android.server.pm.PackageManagerService.installNewPackageLI(PackageManagerService.java:13233)
W/PackageManager( 3177):        at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:14196)
W/PackageManager( 3177):        at com.android.server.pm.PackageManagerService.access$2700(PackageManagerService.java:327)
W/PackageManager( 3177):        at com.android.server.pm.PackageManagerService$8.run(PackageManagerService.java:11346)
W/PackageManager( 3177):        at android.os.Handler.handleCallback(Handler.java:739)
W/PackageManager( 3177):        at android.os.Handler.dispatchMessage(Handler.java:95)
W/PackageManager( 3177):        at android.os.Looper.loop(Looper.java:145)
W/PackageManager( 3177):        at android.os.HandlerThread.run(HandlerThread.java:61)
W/PackageManager( 3177):        at com.android.server.ServiceThread.run(ServiceThread.java:46)
D/PackageManager( 3177): doPostInstall for uid{-1}

以及后面你提到的部分:

D/PackageManager( 3177): result of install: -11{277491727}
E/Finsky  (28617): [1] com.google.android.finsky.installer.bs.onReceive(2631): Error -504 while installing com.jjsoftware.fullscientificcalculator: INSTALL_FAILED_DEXOPT: Package couldn't be installed in /data/app/com.jjsoftware.fullscientificcalculator-1: scanPackageLI
W/Finsky  (28617): [1] com.google.android.finsky.installer.as.a(2324): Install failure of com.jjsoftware.fullscientificcalculator: -504 null

让我们正确安装验证此日志。让我们检查一下哪个Android正在运行,哪个不运行。 你在项目中使用 multidexing 吗?

有关此here

的更多信息

答案 1 :(得分:0)

我通过禁用新的android dex编译器D8修复了这个错误。

只需从'gradle.properties'中删除android.enableD8=true

答案 2 :(得分:0)

对于awk -F\| 'BEGIN{OFS="|"}{n = split($1, a, ","); $1=""; for(i=1; i<=n; i++) {print a[i] $0}}' pipe_delimited_file.txt ...

的Android Gradle插件,我遇到了同样的问题

将Android Gradle插件更新为v3.1.2后,安装成功。

另外,在v3.1.3添加此行也可能有帮助:

gradle.properties

也许是带有D8的Android Gradle插件android.enableD8=false 的错误?

答案 3 :(得分:0)

将您的android Gradle构建工具更新到3.1.3(或更高版本,以解决)与android.enableD8的问题无关的其他问题。

"com.android.tools.build:gradle:3.1.4"