Cuando ejecuto mi aplicación en dispositivos Android 4.4 - 4.4.x, mi aplicación se bloquea, pero cuando ejecuto Android 5.0 en adelante funciona bien.

Crash logcat:

FATAL EXCEPTION: main                                                                      
Process: com.Forewarn.ForewarnApp, PID: 18854
  java.lang.VerifyError: com/Forewarn/ForewarnApp/activities/SignInActivity
      at java.lang.Class.newInstanceImpl(Native Method)
      at java.lang.Class.newInstance(Class.java:1208)
      at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2154)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286)
      at android.app.ActivityThread.access$800(ActivityThread.java:145)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loop(Looper.java:136)
      at android.app.ActivityThread.main(ActivityThread.java:5127)
      at java.lang.reflect.Method.invokeNative(Native Method)
      at java.lang.reflect.Method.invoke(Method.java:515)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
      at dalvik.system.NativeStart.main(Native Method)

Aquí está mi clase de aplicación:

public class SoteriaApplication extends MultiDexApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        AccountUtils.assignContext(this);
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

Intenté deshabilitar la ejecución instantánea desde la configuración y probé con el método attachBaseContext () agregado anteriormente en la clase de aplicación:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

Usé estas bibliotecas en mi Gradle:

dependencies {

    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile files('libs/gson-2.3.1.jar')
    compile files('libs/retrofit-1.2.2.jar')
    compile files('libs/picasso-2.5.2.jar')
    compile files('libs/universal-image-loader-1.9.3.jar')

    compile 'com.vdurmont:semver4j:2.2.0'

    compile 'com.android.support:appcompat-v7:27.0.2'
    compile 'com.android.support:design:27.0.2'
    compile 'com.android.support:cardview-v7:27.0.2'
    compile 'com.android.support:support-v4:27.0.2'
    compile 'com.android.support:palette-v7:27.0.2'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:multidex:1.0.1'
    compile 'org.jsoup:jsoup:1.8.3'
    testCompile 'junit:junit:4.12'

}

Encuentre el problema en mi código, y algunos usuarios también se preocuparon por este problema, pero nadie descubrió la solución, por eso volví a publicar mi problema.

Gracias a todas!

1
Dolly Rosy 26 feb. 2018 a las 09:03

4 respuestas

La mejor respuesta

Se corrigió mi problema debido a algunos íconos compatibles con la versión de nivel superior que utilicé para las pantallas de palanca inferior, es decir, se bloqueó en teléfonos con versiones 4.4

Ejemplo: home.png (v21) es un dibujable que utilicé en mi aplicación, pero es aplicable y permite usarlo desde la API de Android nivel 21 en adelante solo ... es por eso que se estrelló en dispositivos 4.4 (API nivel 19)

-1
Dolly Rosy 17 ago. 2018 a las 13:08
 @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

Elimine el código anterior de la clase de aplicación y luego intente verificar si funciona o no

Porque funciona en mi proyecto sin este montón de código

Déjame saber

Espero que esto funcione para usted

0
Chetan Kumar Patel 26 feb. 2018 a las 06:24
 defaultConfig {
        applicationId "com.sample.app"  // your package name
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        multiDexEnabled true  // adding multidex support
        vectorDrawables.useSupportLibrary = true  // adding vector drawable support
    }

En dependencias:

 compile 'com.android.support:multidex:1.0.2'

Clase de aplicación:

   public class AppClass extends MultiDexApplication {
        public static Context context;

        @Override
        public void onCreate() {
            super.onCreate();
            // Your code here
        }
}

Consulte este enlace también

0
Deep Patel 26 feb. 2018 a las 07:57

Esto probablemente se deba a la configuración incorrecta de Multidex. Puede intentar usar solo Multidex.install() en su aplicación. No extienda la aplicación MultiDex. Algo como esto:

public class SoteriaApplication extends Application {

  @Override protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
  }

  ...

}

Y usa implementation 'com.android.support:multidex:1.0.2'

0
ישו אוהב אותך 26 feb. 2018 a las 07:12