当我在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'
}
请在我的代码中找到问题,并且已经有一些用户也对此问题感到困扰,但没有人找到解决方案,这就是我再次发布问题的原因。
谢谢大家!
答案 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)设备上崩溃的原因