近一年来,我收到了一小部分用户的投诉,他们要么无法安装我的应用程序,要么安装了它,但以后无法更新。我尽最大努力重现这个错误,以便我可以在可能导致错误的方面取得领先,但用户提到的唯一问题是他们从Google Play获得了-504错误代码。我无法重现它。
幸运的是,我安装应用程序的一位朋友遇到了这个问题,而且在安装过程中我有他的手机logcat。我不太明白是什么导致了这个错误。
包括通过Google Play安装失败的.apk和logcat输出。 我在相关部分之前添加了一些空白行。请注意,有很多垃圾需要筛选,我不知道可能有什么相关性,所以我尽力修剪边缘。
我的包名是“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'
}
任何建议都表示赞赏。
答案 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插件更新为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"