我开发了我的应用程序,当它在Android 4.4上运行时我没有问题,一切正常。如果我在Android 4.2上启动我的应用程序,我会调用这样的静态方法:
double value = Utility.parseDouble(editValue.getText().toString().trim());
我收到此错误:
java.lang.VerifyError: com/mycompany/myapp/util/Utility
at com.mycompany.myapp.activity.MainActivity.updateMerchantInfo(MainActivity.java:112)
at com.mycompany.myapp.activity.MainActivity.onCreate(MainActivity.java:75)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
这是我的gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.mycompany.myapp"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:support-v4:21.0.2'
compile 'com.mcxiaoke.volley:library:1.0.+'
compile 'com.jakewharton:butterknife:6.0.0'
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.afollestad:material-dialogs:0.5.9'
compile 'me.dm7.barcodescanner:zxing:1.6'
compile 'com.mobsandgeeks:android-saripaar:2.0-SNAPSHOT'
}
请帮帮我!
修改 我解决了我的问题!问题是由Utility类中的方法引起的:
@SuppressLint("NewApi")
private static void copyFieldValue(Object src, Object dest, Field f) {
try {
Object value = f.get(src);
f.set(dest, value);
} catch ( ReflectiveOperationException e) {
throw new RuntimeException(e);
}
}
答案 0 :(得分:6)
得到了同样的错误,并且能够修复它。在我的情况下,问题是配置错误的multidex。
我的配置适用于> = Android 5.0设备,而之前的配置失败。
简而言之,这是最终适合我的配置。
1。)首先转到build.gradle(模块应用程序)并添加以下行 在defaultConfig中:
multiDexEnabled true
示例:
defaultConfig {
applicationId "com.test.multidex"
minSdkVersion 19
targetSdkVersion 21
versionCode 1
versionName "1.0"
multiDexEnabled true
}
2.a)如果您没有扩展应用程序,请转到您的清单并将应用程序名称更改为 android:name =“android.support.multidex.MultiDexApplication”
示例:
<application
android:name="android.support.multidex.MultiDexApplication"
.. >
..
</application>
2.b)如果你正在扩展申请,你的名字已经是这样的: 机器人:名称= “应用”
转到扩展应用程序的类并将其更改为扩展 MultiDexApplication
示例:
public class App扩展MultiDexApplication { ... }
答案 1 :(得分:0)
尝试在gradle文件中添加它,并且不要忘记在构建之前清理项目。
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}