No se puede instalar mi aplicación recientemente lanzada: Código de error: -504

Acabo de publicar mi aplicación en Google Play Store y el apk firmado se publicó correctamente. Sin embargo, (y lo he probado en tres teléfonos y tablets diferentes), la aplicación se niega a instalar cuando se descarga desde la tienda. Después de hacer clic en el botón "Instalar", la aplicación se descargará, el estado cambiará a "Instalar …" y luego aparecerá el siguiente cuadro de diálogo:

No se puede instalar: Código de error: -504

¿Qué se puede hacer?

Datos sobre mi aplicación que podrían ayudar a solucionar problemas:

  • La aplicación tiene como objetivo API22 con un minSDK de 17.
  • No estoy usando proguard.
  • La aplicación está utilizando multidex a través de la biblioteca de soporte multidex.

App / build.gradle:

buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.+' } } apply plugin: 'com.android.application' apply plugin: 'me.tatarka.retrolambda' apply plugin: 'io.fabric' repositories { maven { url 'https://maven.fabric.io/public' } jcenter() } android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "io.givenow.app" minSdkVersion 17 targetSdkVersion 22 versionCode 1 versionName "1.0" // Enabling multidex support. multiDexEnabled true } signingConfigs { debug { storeFile file('../debug.keystore') } release } productFlavors { // Define separate dev and prod product flavors. dev { // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin // to pre-dex each module and produce an APK that can be tested on // Android Lollipop without time consuming dex merging processes. minSdkVersion 17 } prod { // The actual minSdkVersion for the application. minSdkVersion 17 } } buildTypes { debug { minifyEnabled false } release { signingConfig signingConfigs.release minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } apply from: 'https://raw.github.com/trikita/gradle-android-signing/master/gradle-android-signing.gradle' dependencies { compile 'com.android.support:multidex:1.0.1' compile 'com.google.guava:guava:18.0' compile 'org.functionaljava:functionaljava:4.4' compile 'io.reactivex:rxandroid:1.0.1' // Because RxAndroid releases are few and far between, it is recommended you also // explicitly depend on RxJava's latest version for bug fixes and new features. compile 'io.reactivex:rxjava:1.0.14' compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:support-v4:23.1.1' compile 'com.android.support:support-v13:23.1.1' compile 'com.google.android.gms:play-services-maps:8.3.0' compile 'com.google.android.gms:play-services-location:8.3.0' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' compile 'com.android.support:cardview-v7:23.1.1' compile 'com.android.support:palette-v7:23.1.1' compile 'com.jakewharton:butterknife:7.0.1' compile 'com.google.maps.android:android-maps-utils:0.4' compile 'com.github.chrisbanes.actionbarpulltorefresh:library:0.9.9' compile 'com.nhaarman.listviewanimations:library:2.6.0' compile 'com.squareup.picasso:picasso:2.5.2' compile 'de.hdodenhof:circleimageview:2.0.0' // compile 'jp.wasabeef:recyclerview-animators:2.0.1' compile 'com.bartoszlipinski:viewpropertyobjectanimator:1.1.0' // compile 'com.androidmapsextensions:android-maps-extensions:2.1.0+' compile 'com.parse.bolts:bolts-android:1.2.1' compile 'com.parse:parse-android:1.10.3' compile 'com.parse:parseui-login-android:0.0.1' compile 'com.parse:parseui-widget-android:0.0.1' // Uncomment if using Facebook Login (optional Maven dependency) // compile 'com.facebook.android:facebook-android-sdk:4.6.0' // compile fileTree(dir: 'libs', include: 'Parse-*.jar') // compile fileTree(dir: 'libs', include: 'ParseCrashReporting-*.jar') compile('de.keyboardsurfer.android.widget:crouton:1.8.4@aar') { //maybe drop the @aar later // exclusion is not neccessary, but generally a good idea. exclude group: 'com.google.android', module: 'support-v4' } // compile project(':stripe') // compile 'io.card:android-sdk:5.0.1' // compile 'com.astuetz:pagerslidingtabstrip:1.0.1' // fork of Pager Sliding Tab Strip that supports ColorStateLists for tab text color. // https://github.com/magicgoose/PagerSlidingTabStrip compile project(':PagerSlidingTabStrip-magicgoose-1c26523:library') // compile project(':recyclerview-animators') compile project(':animators') compile('com.crashlytics.sdk.android:crashlytics:2.5.3@aar') { transitive = true; } } 

Nivel superior build.gradle:

 // 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() } } 

Nota: Esto es muy difícil para google porque la mayoría de las respuestas tratan con el cliente, es decir, los usuarios reciben este error al intentar descargar aplicaciones.


Actualización 1 + 2:

La instalación del apk firmado manualmente con adb install produce Failure [INSTALL_FAILED_DEXOPT] y la siguiente traza de pila logcat.

Cabe señalar que ejecutar la versión de depuración de la aplicación (con una minSdkVersion de 21) en mi teléfono a través de android estudio funciona perfectamente.

Esto podría estar relacionado con multidex. Cuando cambio mi minSdkVersion a 21 , la aplicación se instala bien. Pero si la cambio a 17 , falla. Aquí está una versión ampliada de la stacktrace anterior:

 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@[email protected]@[email protected] --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. 

Lo anterior da más pistas. Parece que dex2oat está fallando con un SIGSEGV en el controlador del compilador. Voy a continuar googleando; Hasta ahora, esto NO parece el límite LinearAlloc más común que otras personas con instalaciones de paquetes fallidos se están ejecutando.


Actualización 3:

Ahora puedo obtener una construcción de prodRelease trabajo instalada habilitando ProGuard, con el siguiente archivo de reglas:

 # 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.** 

Sin embargo, aún no se puede instalar devDebug .

Por alguna razón estoy viendo un stacktrace más detallado ahora. Tenga en cuenta que la señal emitida a dex2oat ahora es SIGABRT lugar de SIGSEGV : http://pastebin.com/raw.php?i=rg5BnYst

Tengo que trabajar!

La herramienta de compilación versión 23.0.2 está rota para aplicaciones multidexed.

Cambiar a buildToolsVersion "23.0.1" produce compilaciones de trabajo, instalables en devDebug y prodRelease .

(Como mi post menciona, el primero no funciona proguard, este último lo hace, y ambos sabores apuntan a un minSdkVersion de 17).

Esto consumió dos días enteros. Espero que esto salve el tiempo de otra persona, al menos hasta 23.0.3 sale!

Si actualiza targetSdkVersion a 23 (en línea con su compileSdkVersion y buildToolsVersion), emitir desaparecerá.

Puede obtener un código de error: -504 en la Play Store para rebajar su targetSdkversion de 23 a 22, también. La instalación fallará debido a una degradación del modelo de permiso. La consola de reproducción de Play Store no lo notificará, pero la instalación de los usuarios fallará.

El código de error 504 está relacionado con el tiempo de espera de la puerta de enlace. El problema es entre si tu dispositivo y Google Play. Compruebe esto http://www.androidfornook.com/forum/thread-897.html .

También se podría considerar la posibilidad de comprobar esto para una solución https://android.stackexchange.com/questions/35062/error-504-when-downloading-apps-from-play-store

  • Android ProGuard + MultiDex causa ClassNotFoundException
  • Android Studio Lint - establece el nivel de API para la pelusa
  • Estudio de Android java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB
  • Conmutación entre configuraciones de ejecución de dos módulos sin Clean cuando uno de ellos utiliza Multidex
  • La ejecución falló para la tarea ': app: shrinkReleaseMultiDexComponents'
  • Error al compilar biblioteca multidex después de actualizar SDK
  • Habilitar Soporte MultiDex en Android para lograr métodos de 65K + en Eclipse
  • Error: Error de ejecución para la tarea ': app: transformClassesWithDexForDebug'
  • La prueba de instrumentación falla al azar con multidexado activado
  • Android Multidex RuntimeException
  • No se puede resolver import android.support.multidex.MultiDex después de cambiar a Multidex más reciente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.