Android 我新发布的应用程序可以';无法安装:错误代码:-504

Android 我新发布的应用程序可以';无法安装:错误代码:-504,android,google-play,android-multidex,Android,Google Play,Android Multidex,我刚刚将我的应用程序发布到Google Play商店,并成功发布了已签名的apk。然而,(我已经在三款不同的手机和平板电脑上试用过),该应用程序从商店下载时拒绝安装。单击“安装”按钮后,应用程序将下载,状态将更改为“安装…”,然后出现以下对话框: 可以做些什么 有关我的应用程序的信息,有助于排除故障: 该应用以API22为目标,minSDK为17 我没有用proguard 应用程序正在通过multidex支持库使用multidex app/build.gradle: 顶级build.gra

我刚刚将我的应用程序发布到Google Play商店,并成功发布了已签名的apk。然而,(我已经在三款不同的手机和平板电脑上试用过),该应用程序从商店下载时拒绝安装。单击“安装”按钮后,应用程序将下载,状态将更改为“安装…”,然后出现以下对话框:

可以做些什么

有关我的应用程序的信息,有助于排除故障:

  • 该应用以API22为目标,minSDK为17
  • 我没有用proguard
  • 应用程序正在通过multidex支持库使用multidex
app/build.gradle: 顶级build.gradle: 注意:谷歌很难做到这一点,因为大多数答案都与客户端有关,即用户在尝试下载应用程序时会出现此错误


更新1+2: 使用
adb install
手动安装已签名的apk会产生
故障[install\u FAILED\u DEXOPT]
和以下logcat堆栈跟踪

需要注意的是,通过android studio在我的手机上运行该应用程序的调试版本(版本为
minSdkVersion
21)是完美的

这可能与多重指数有关。当我将
minSdkVersion
更改为21时,应用程序安装良好。但如果我将其更改为17,它将失败。以下是上述stacktrace的扩展版本:

11-19 15:50:58.474 19186-19186/? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
11-19 15:50:58.477 19186-19186/? D/AndroidRuntime: CheckJNI is OFF
11-19 15:50:58.642 19186-19186/? D/AndroidRuntime: Calling main entry com.android.commands.pm.Pm
11-19 15:50:58.706 3907-3907/? D/Finsky: [1] PackageVerificationReceiver.onReceive: Verification requested, id = 37
11-19 15:50:58.713 3907-3907/? D/Finsky: [1] WorkerTask.onPreExecute: Verification Requested for id = 37, data=file:///data/local/tmp/io.givenow.app flags=114 fromVerificationActivity=false
11-19 15:50:59.860 3907-3934/? I/qtaguid: Failed write_ctrl(u 44) res=-1 errno=22
11-19 15:50:59.860 3907-3934/? I/qtaguid: Untagging socket 44 failed errno=-22
11-19 15:50:59.860 3907-3934/? W/NetworkManagementSocketTagger: untagSocket(44) failed with errno -22
11-19 15:50:59.863 3907-3907/? D/Finsky: [1] 2.onResponse: Verification id=37 response=0
11-19 15:50:59.877 3907-3907/? D/Finsky: [1] PackageVerificationReceiver.onReceive: Verification requested, id = 37
11-19 15:50:59.890 19017-19033/? D/DefContainer: Copying /data/local/tmp/io.givenow.app to base.apk
11-19 15:51:00.633 809-869/? D/PackageManager: Renaming /data/app/vmdl171337004.tmp to /data/app/io.givenow.app-1
11-19 15:51:00.660 809-869/? I/PackageManager: Running dexopt on: /data/app/io.givenow.app-1/base.apk pkg=io.givenow.app isa=arm vmSafeMode=false
11-19 15:51:00.711 19203-19203/? I/dex2oat: /system/bin/dex2oat --zip-fd=6 --zip-location=/data/app/io.givenow.app-1/base.apk --oat-fd=7 --oat-location=/data/dalvik-cache/arm/data@app@io.givenow.app-1@base.apk@classes.dex --instruction-set=arm --instruction-set-features=div --runtime-arg -Xms64m --runtime-arg -Xmx512m --swap-fd=24
11-19 15:51:01.187 19203-19203/? I/dex2oat: Decided to run without swap.
11-19 15:51:01.560 19203-19206/? W/dex2oat: Before Android 4.1, method int android.support.v7.internal.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
11-19 15:51:06.063 19203-19207/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xd94e27a4 in tid 19207 (Compiler driver)
11-19 15:51:06.066 19203-19203/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xd94e27a4 in tid 19203 (main)
11-19 15:51:06.102 19203-19205/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xd94e27a4 in tid 19205 (Compiler driver)
11-19 15:51:06.166 351-351/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-19 15:51:06.166 351-351/? I/DEBUG: Build fingerprint: 'google/shamu/shamu:5.1.1/LMY47Z/1860966:user/release-keys'
11-19 15:51:06.166 351-351/? I/DEBUG: Revision: '33696'
11-19 15:51:06.167 351-351/? I/DEBUG: ABI: 'arm'
11-19 15:51:06.167 351-351/? I/DEBUG: pid: 19203, tid: 19207, name: Compiler driver  >>> /system/bin/dex2oat <<<
11-19 15:51:06.167 351-351/? I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xd94e27a4
11-19 15:51:06.168 809-1027/? W/NativeCrashListener: Couldn't find ProcessRecord for pid 19203
11-19 15:51:06.193 351-351/? I/DEBUG:     r0 b163600c  r1 13f513f4  r2 b15af000  r3 0008700c
11-19 15:51:06.193 351-351/? E/DEBUG: AM write failure (32 / Broken pipe)
11-19 15:51:06.193 351-351/? I/DEBUG:     r4 000013f4  r5 d94d87f4  r6 73406b18  r7 d94d8807
11-19 15:51:06.193 351-351/? I/DEBUG:     r8 b6f70a70  r9 d94d8804  sl b6a46df4  fp 00000000
11-19 15:51:06.194 351-351/? I/DEBUG:     ip 00000000  sp b0dffb20  lr b6d47065  pc b6d46e26  cpsr 80070030
11-19 15:51:06.194 351-351/? I/DEBUG:     #00 pc 000dbe26  /system/lib/libart.so (art::ClassLinker::ResolveMethodExceptionHandlerTypes(art::DexFile const&, art::mirror::ArtMethod*)+81)
11-19 15:51:06.194 351-351/? I/DEBUG:     #01 pc 000dc061  /system/lib/libart.so (art::ClassLinker::ResolveClassExceptionHandlerTypes(art::DexFile const&, art::Handle<art::mirror::Class>)+108)
11-19 15:51:06.194 351-351/? I/DEBUG:     #02 pc 000dc28b  /system/lib/libart.so (art::ClassLinker::VerifyClass(art::Handle<art::mirror::Class>)+518)
11-19 15:51:06.194 351-351/? I/DEBUG:     #03 pc 00145be1  /system/lib/libart-compiler.so
11-19 15:51:06.194 351-351/? I/DEBUG:     #04 pc 0013f25d  /system/lib/libart-compiler.so
11-19 15:51:06.194 351-351/? I/DEBUG:     #05 pc 002438ed  /system/lib/libart.so (art::ThreadPoolWorker::Run()+44)
11-19 15:51:06.194 351-351/? I/DEBUG:     #06 pc 002441ed  /system/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+60)
11-19 15:51:06.194 351-351/? I/DEBUG:     #07 pc 00016baf  /system/lib/libc.so (__pthread_start(void*)+30)
11-19 15:51:06.194 351-351/? I/DEBUG:     #08 pc 00014af3  /system/lib/libc.so (__start_thread+6)
11-19 15:51:06.403 809-850/? I/BootReceiver: Copying /data/tombstones/tombstone_03 to DropBox (SYSTEM_TOMBSTONE)
11-19 15:51:06.452 351-351/? E/DEBUG: unexpected waitpid response: n=19203, status=0000000b
11-19 15:51:06.452 351-351/? E/DEBUG: tid exited before attach completed: tid 19203
11-19 15:51:06.453 355-355/? E/installd: DexInv: --- END '/data/app/io.givenow.app-1/base.apk' --- status=0x000b, process failed
11-19 15:51:06.457 809-869/? W/PackageManager: Package couldn't be installed in /data/app/io.givenow.app-1
                                               com.android.server.pm.PackageManagerException: scanPackageLI
                                                   at com.android.server.pm.PackageManagerService.scanPackageDirtyLI(PackageManagerService.java:5955)
                                                   at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:5267)
                                                   at com.android.server.pm.PackageManagerService.installNewPackageLI(PackageManagerService.java:10177)
                                                   at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:10707)
                                                   at com.android.server.pm.PackageManagerService.access$2300(PackageManagerService.java:234)
                                                   at com.android.server.pm.PackageManagerService$6.run(PackageManagerService.java:8627)
                                                   at android.os.Handler.handleCallback(Handler.java:739)
                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                   at android.os.Looper.loop(Looper.java:135)
                                                   at android.os.HandlerThread.run(HandlerThread.java:61)
                                                   at com.android.server.ServiceThread.run(ServiceThread.java:46)
11-19 15:51:06.572 809-869/? I/art: Explicit concurrent mark sweep GC freed 121459(5MB) AllocSpace objects, 34(4MB) LOS objects, 27% free, 41MB/57MB, paused 1.454ms total 81.174ms
11-19 15:51:06.584 19186-19186/? I/art: System.exit called, status: 1
11-19 15:51:06.584 19186-19186/? I/AndroidRuntime: VM exiting with result code 1.
但是,
devDebug
builds仍然无法安装。 出于某种原因,我现在看到了更详细的stacktrace。请注意,发给dex2oat的信号现在是
SIGABRT
,而不是
SIGSEGV
: 我让它工作了

多索引应用程序的生成工具版本
23.0.2
已损坏。 更改为
buildToolsVersion“23.0.1”
会在
devDebug
prodRelease
中生成可工作、可安装的版本

(正如我的帖子所提到的,前者不运行proguard,后者运行,两种口味都针对17的
minSdkVersion


这花了整整两天。我希望这能节省其他人的时间,至少在23.0.3版推出之前

如果您将targetSdkVersion更新为23(与您的compileSdkVersion和buildToolsVersion一致),您的问题将消失


您也可以在Play Store中获得错误代码:-504,用于将targetSdkversion从23降级到22。由于权限模型降级,安装将失败。Play Store开发控制台不会通知您,但您的用户安装将失败。

您是否尝试过安装通过
adb install
手动上传的相同APK?有趣。我刚刚尝试构建一个签名的apk,并使用
adb install
安装它。我得到了
Failure[INSTALL\u FAILED\u DEXOPT]
,并且logcat显示了上面的堆栈跟踪。请参阅更新的帖子。您正在尝试的确切口味是什么?prodRelease在play store中产生错误prodDebug使用adb安装正常?prodRelease无法安装并产生上面的stacktrace。当
dev
具有
minsdkversion21
时,devDebug安装良好。我将
dev
更改为
minsdkversion17
,现在devDebug失败并出现同样的错误。我让它工作了——这是构建工具中的一个bug!看看我的答案。很有趣。我还不支持棉花糖权限模型,所以我会将它保持在22,直到我支持为止,但这是一个非常有用的提示。谢谢你提醒我!报道:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
        classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'
    }
}

plugins {
    id "me.tatarka.retrolambda" version "3.2.3"
}

allprojects {
    repositories {
        mavenCentral()
    }
}
11-19 15:50:58.474 19186-19186/? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
11-19 15:50:58.477 19186-19186/? D/AndroidRuntime: CheckJNI is OFF
11-19 15:50:58.642 19186-19186/? D/AndroidRuntime: Calling main entry com.android.commands.pm.Pm
11-19 15:50:58.706 3907-3907/? D/Finsky: [1] PackageVerificationReceiver.onReceive: Verification requested, id = 37
11-19 15:50:58.713 3907-3907/? D/Finsky: [1] WorkerTask.onPreExecute: Verification Requested for id = 37, data=file:///data/local/tmp/io.givenow.app flags=114 fromVerificationActivity=false
11-19 15:50:59.860 3907-3934/? I/qtaguid: Failed write_ctrl(u 44) res=-1 errno=22
11-19 15:50:59.860 3907-3934/? I/qtaguid: Untagging socket 44 failed errno=-22
11-19 15:50:59.860 3907-3934/? W/NetworkManagementSocketTagger: untagSocket(44) failed with errno -22
11-19 15:50:59.863 3907-3907/? D/Finsky: [1] 2.onResponse: Verification id=37 response=0
11-19 15:50:59.877 3907-3907/? D/Finsky: [1] PackageVerificationReceiver.onReceive: Verification requested, id = 37
11-19 15:50:59.890 19017-19033/? D/DefContainer: Copying /data/local/tmp/io.givenow.app to base.apk
11-19 15:51:00.633 809-869/? D/PackageManager: Renaming /data/app/vmdl171337004.tmp to /data/app/io.givenow.app-1
11-19 15:51:00.660 809-869/? I/PackageManager: Running dexopt on: /data/app/io.givenow.app-1/base.apk pkg=io.givenow.app isa=arm vmSafeMode=false
11-19 15:51:00.711 19203-19203/? I/dex2oat: /system/bin/dex2oat --zip-fd=6 --zip-location=/data/app/io.givenow.app-1/base.apk --oat-fd=7 --oat-location=/data/dalvik-cache/arm/data@app@io.givenow.app-1@base.apk@classes.dex --instruction-set=arm --instruction-set-features=div --runtime-arg -Xms64m --runtime-arg -Xmx512m --swap-fd=24
11-19 15:51:01.187 19203-19203/? I/dex2oat: Decided to run without swap.
11-19 15:51:01.560 19203-19206/? W/dex2oat: Before Android 4.1, method int android.support.v7.internal.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
11-19 15:51:06.063 19203-19207/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xd94e27a4 in tid 19207 (Compiler driver)
11-19 15:51:06.066 19203-19203/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xd94e27a4 in tid 19203 (main)
11-19 15:51:06.102 19203-19205/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xd94e27a4 in tid 19205 (Compiler driver)
11-19 15:51:06.166 351-351/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-19 15:51:06.166 351-351/? I/DEBUG: Build fingerprint: 'google/shamu/shamu:5.1.1/LMY47Z/1860966:user/release-keys'
11-19 15:51:06.166 351-351/? I/DEBUG: Revision: '33696'
11-19 15:51:06.167 351-351/? I/DEBUG: ABI: 'arm'
11-19 15:51:06.167 351-351/? I/DEBUG: pid: 19203, tid: 19207, name: Compiler driver  >>> /system/bin/dex2oat <<<
11-19 15:51:06.167 351-351/? I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xd94e27a4
11-19 15:51:06.168 809-1027/? W/NativeCrashListener: Couldn't find ProcessRecord for pid 19203
11-19 15:51:06.193 351-351/? I/DEBUG:     r0 b163600c  r1 13f513f4  r2 b15af000  r3 0008700c
11-19 15:51:06.193 351-351/? E/DEBUG: AM write failure (32 / Broken pipe)
11-19 15:51:06.193 351-351/? I/DEBUG:     r4 000013f4  r5 d94d87f4  r6 73406b18  r7 d94d8807
11-19 15:51:06.193 351-351/? I/DEBUG:     r8 b6f70a70  r9 d94d8804  sl b6a46df4  fp 00000000
11-19 15:51:06.194 351-351/? I/DEBUG:     ip 00000000  sp b0dffb20  lr b6d47065  pc b6d46e26  cpsr 80070030
11-19 15:51:06.194 351-351/? I/DEBUG:     #00 pc 000dbe26  /system/lib/libart.so (art::ClassLinker::ResolveMethodExceptionHandlerTypes(art::DexFile const&, art::mirror::ArtMethod*)+81)
11-19 15:51:06.194 351-351/? I/DEBUG:     #01 pc 000dc061  /system/lib/libart.so (art::ClassLinker::ResolveClassExceptionHandlerTypes(art::DexFile const&, art::Handle<art::mirror::Class>)+108)
11-19 15:51:06.194 351-351/? I/DEBUG:     #02 pc 000dc28b  /system/lib/libart.so (art::ClassLinker::VerifyClass(art::Handle<art::mirror::Class>)+518)
11-19 15:51:06.194 351-351/? I/DEBUG:     #03 pc 00145be1  /system/lib/libart-compiler.so
11-19 15:51:06.194 351-351/? I/DEBUG:     #04 pc 0013f25d  /system/lib/libart-compiler.so
11-19 15:51:06.194 351-351/? I/DEBUG:     #05 pc 002438ed  /system/lib/libart.so (art::ThreadPoolWorker::Run()+44)
11-19 15:51:06.194 351-351/? I/DEBUG:     #06 pc 002441ed  /system/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+60)
11-19 15:51:06.194 351-351/? I/DEBUG:     #07 pc 00016baf  /system/lib/libc.so (__pthread_start(void*)+30)
11-19 15:51:06.194 351-351/? I/DEBUG:     #08 pc 00014af3  /system/lib/libc.so (__start_thread+6)
11-19 15:51:06.403 809-850/? I/BootReceiver: Copying /data/tombstones/tombstone_03 to DropBox (SYSTEM_TOMBSTONE)
11-19 15:51:06.452 351-351/? E/DEBUG: unexpected waitpid response: n=19203, status=0000000b
11-19 15:51:06.452 351-351/? E/DEBUG: tid exited before attach completed: tid 19203
11-19 15:51:06.453 355-355/? E/installd: DexInv: --- END '/data/app/io.givenow.app-1/base.apk' --- status=0x000b, process failed
11-19 15:51:06.457 809-869/? W/PackageManager: Package couldn't be installed in /data/app/io.givenow.app-1
                                               com.android.server.pm.PackageManagerException: scanPackageLI
                                                   at com.android.server.pm.PackageManagerService.scanPackageDirtyLI(PackageManagerService.java:5955)
                                                   at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:5267)
                                                   at com.android.server.pm.PackageManagerService.installNewPackageLI(PackageManagerService.java:10177)
                                                   at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:10707)
                                                   at com.android.server.pm.PackageManagerService.access$2300(PackageManagerService.java:234)
                                                   at com.android.server.pm.PackageManagerService$6.run(PackageManagerService.java:8627)
                                                   at android.os.Handler.handleCallback(Handler.java:739)
                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                   at android.os.Looper.loop(Looper.java:135)
                                                   at android.os.HandlerThread.run(HandlerThread.java:61)
                                                   at com.android.server.ServiceThread.run(ServiceThread.java:46)
11-19 15:51:06.572 809-869/? I/art: Explicit concurrent mark sweep GC freed 121459(5MB) AllocSpace objects, 34(4MB) LOS objects, 27% free, 41MB/57MB, paused 1.454ms total 81.174ms
11-19 15:51:06.584 19186-19186/? I/art: System.exit called, status: 1
11-19 15:51:06.584 19186-19186/? I/AndroidRuntime: VM exiting with result code 1.
# Add project specific ProGuard rules here.

-dontobfuscate #if obfuscation is enabled, we get "java.lang.NoSuchFieldException: producerIndex" (wtf?)

#Retrolambda
-dontwarn java.lang.invoke.*

-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }

-keepclasseswithmembernames class * {
    @butterknife.* <fields>;
}

-keepclasseswithmembernames class * {
    @butterknife.* <methods>;
}

-keep class com.parse.* { *; }
-dontwarn com.parse.**

-dontwarn okio.**
-dontwarn fj.**

# Guava:
-dontwarn sun.misc.Unsafe

# Picasso
-dontwarn com.squareup.okhttp.**