【问题标题】:Android java.lang.VerifyError on static method call静态方法调用上的 Android java.lang.VerifyError
【发布时间】:2015-02-02 00:42:15
【问题描述】:

我开发了我的应用程序,当它在 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);
    }
}

【问题讨论】:

    标签: java android static verifyerror


    【解决方案1】:

    遇到了同样的错误,并且能够修复它。在我的情况下,问题是配置错误的 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) 如果您正在扩展应用程序并且您的名称已经如下所示: android:name=".App"

    转到扩展 Application 的类并将其更改为扩展 MultiDexApplication

    示例:

    公共类 App 扩展 MultiDexApplication { ... }

    【讨论】:

      【解决方案2】:

      尝试将其添加到您的 gradle 文件中,并且不要忘记在构建之前清理您的项目。

      compileOptions {
          sourceCompatibility JavaVersion.VERSION_1_7
          targetCompatibility JavaVersion.VERSION_1_7
      }
      

      【讨论】:

      • 感谢您的回复,但我已经尝试添加此块,但它不能解决我的问题。我想问题是由于使用注释的库造成的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多