只有Android 4.4版本设备的Android设备问题使我的应用程序崩溃

时间:2018-02-26 06:03:31

标签: android

当我在android 4.4 - 4.4.x设备中运行我的应用程序时,我的应用程序崩溃,但是当我运行android 5.0以后它的工作正常。

崩溃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)

这是我的Application类:

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);
    }
}

我尝试从设置中禁用即时运行,并尝试在Application类中添加上面的attachBaseContext()方法:

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

我在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'

}

请在我的代码中找到问题,并且已经有一些用户也对此问题感到困扰,但没有人找到解决方案,这就是我再次发布问题的原因。

谢谢大家!

3 个答案:

答案 0 :(得分:0)

这可能是因为Multidex配置不正确。您可以尝试在应用程序中仅使用Multidex.install()。不要扩展MultiDexApplication。像这样:

public class SoteriaApplication extends Application {

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

  ...

}

并使用implementation 'com.android.support:multidex:1.0.2'

答案 1 :(得分:0)

 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
    }

在依赖关系中:

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

应用类:

   public class AppClass extends MultiDexApplication {
        public static Context context;

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

请同时参阅此link

答案 2 :(得分:0)

修复了我的问题,因为我在较低的手柄屏幕上使用了一些更高版本的支持图标,也就是说,它在4.4版本的手机上崩溃了:

示例:home.png(v21)这是我在我的应用中使用的可绘制对象,但它适用并且仅允许从android api级别21开始使用..这就是为什么在4.4(api级别19)设备上崩溃的原因